热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

注册中心_为什么阿里的dubbo注册中心要放弃zookeeper,而用Nacos?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了为什么阿里的dubbo注册中心要放弃zookeeper,而用Nacos?相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了为什么阿里的dubbo注册中心要放弃zookeeper, 而用Nacos?相关的知识,希望对你有一定的参考价值。



首先,那么为什么说zookeeper不适合做服务注册中心呢?

 

从CAP角度来看

有个思考,从CAP角度考虑,服务注册中心是CP系统还是AP系统呢?

 

首先,服务注册中心是为了服务间调用服务的,那么绝对不允许因为服务注册中心出现了问题而导致服务间的调用出问题。

再者, 假如有node1,node2,node3,集群节点。 保存着可用服务列表ip1,ip2,ip3,试想如果此时不一致,比如node1只保存了ip1,ip2,此时服务读取node1的节点,那么会造成什么影响?

调用node1的服务,顶多就是负载均衡时不会有流量打到ip3, 然后等 node1同步回ip3后,又一致了,这对服务其实没什么太大影响。

所以,推出服务注册中心应该是个AP系统。

 

 

zookeeper是个CP系统,强一致性。

 

场景1, 当master挂了,此时,zookeeper集群需要重新选举,而此时服务需要来读取可用服务,是不可用的。 影响到了服务的可用性

当然你可以说服务本地有缓存可用列表。然而下面这种方式就更无法处理了。

场景2, 分区可用。试想,有3个机房,如果其中机房3和机房1,2网络断了, 那么机房3的注册中心就不能注册新的机器了么,这显然也不合理

从健康检查来看

技术分享图片

 

zookeeper是通过TCP的心跳判断服务是否可用

但TCP的活性并不代表服务是可用的,但TCP活性就说明服务是可用的么,答案显然是否定的,如: 连接池已经满了,DB挂了等

 

 


那么理想的注册中心是什么样的呢,思考下

 

1, 起码服务的自动注册,发现。 最好有新的服务注册上去时还能推送到调用端

2, 能对注册上来的机器方便的进行管理,能手工剔除(发送信号让服务优雅下线)、恢复机器

3,服务的健康检查,能真正的检测到服务是否可用

4, 如果再好点,可以看到是否有其他调用服务正在订阅注册上来的服务

5,如果能够带上些除了IP外的其它信息,那就更好了

 

 

关于 Nacos

https://yq.aliyun.com/articles/604028

 

欢迎关注下我的公众号, JVM和微服务方面

技术分享图片


推荐阅读
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 结城浩(1963年7月出生),日本资深程序员和技术作家,居住在东京武藏野市。他开发了著名的YukiWiki软件,并在杂志上发表了大量程序入门文章和技术翻译作品。结城浩著有30多本关于编程和数学的书籍,其中许多被翻译成英文和韩文。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • Eclipse中解决JDK源码断点调试失效的问题 ... [详细]
  • Python与Java编程语言的主要差异分析:常见疑问解答
    本文对Python与Java编程语言的主要差异进行了深入分析,重点探讨了以下几个方面:1. Python在中文社区的资源相对较少;2. Python的面向对象编程更加简洁直接;3. Java拥有更为丰富的类库支持;4. Java在企业级应用中的广泛使用。通过对比这两种语言的特点,为开发者提供了选择时的参考依据。 ... [详细]
  • 本文探讨了利用Python编程语言开发自动化脚本来实现文件的全量和增量备份方法。通过详细分析不同备份策略的特点,文章介绍了如何使用Python标准库中的os和shutil模块来高效地管理和执行备份任务。此外,还提供了示例代码和最佳实践,帮助读者快速掌握自动化备份技术,确保数据的安全性和完整性。 ... [详细]
  • 在《Linux高性能服务器编程》一书中,第3.2节深入探讨了TCP报头的结构与功能。TCP报头是每个TCP数据段中不可或缺的部分,它不仅包含了源端口和目的端口的信息,还负责管理TCP连接的状态和控制。本节内容详尽地解析了TCP报头的各项字段及其作用,为读者提供了深入理解TCP协议的基础。 ... [详细]
  • 本文深入解析了JDK 8中HashMap的源代码,重点探讨了put方法的工作机制及其内部参数的设定原理。HashMap允许键和值为null,但键为null的情况只能出现一次,因为null键在内部通过索引0进行存储。文章详细分析了capacity(容量)、size(大小)、loadFactor(加载因子)以及红黑树转换阈值的设定原则,帮助读者更好地理解HashMap的高效实现和性能优化策略。 ... [详细]
author-avatar
mobiledu2502869077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有