为什么阿里的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和微服务方面

为什么阿里的dubbo注册中心要放弃zookeeper, 而用Nacos?的更多相关文章
- Dubbo简单介绍及其和zookeeper的关系
何为Dubbo Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维 ...
- 2016年工作中遇到的问题41-50:Dubbo注册中心奇葩问题,wifi热点坑了
41.获得JSON中的变量.//显示json串中的某个变量,name是变量名function json(json,name){ var jsonObj = eval(json); return jso ...
- Dubbo注册中心的四种配置方式详解
Dubbo目前支持4种注册中心,(multicast,zookeeper,redis,simple) 推荐使用Zookeeper注册中心. 一.Multicast注册中心 不需要启动任何中心节点,只要 ...
- 这个Dubbo注册中心扩展,有点意思!
今天想和大家聊聊Dubbo源码中实现的一个注册中心扩展.它很特殊,也帮我解决了一个困扰已久的问题,刚刚在生产中用了,效果很好,迫不及待想分享给大家. Dubbo的扩展性非常灵活,可以无侵入源码加载自定 ...
- 基于ZooKeeper的Dubbo注册中心
SOA服务治理 dubbo_zk 服务总线 感兴趣的M我微信:wonter 微信扫描,人人 CTO 大本营 基于SOA架构的TDD测试驱动开发模式 服务治理要先于SOA 简述我的SOA服务治理 从页面 ...
- 安装 Dubbo 注册中心(Zookeeper-3.4.6)--单节点
1.建议使用dubbo-2.3.3以上版本的使用zookeeper注册中心客户端2.Zookeeper是Apache Hadoop的子项目,强度相对较好,建议生产环境使用该注册中心.3.Dubbo未对 ...
- dubbo注册服务IP解析异常及IP解析源码分析
在使用dubbo注册服务时会遇到IP解析错误导致无法正常访问. 比如: 本机设置的IP为172.16.11.111, 但实际解析出来的是180.20.174.11 这样就导致这个Service永远也无 ...
- 安装Dubbo注册中心(Zookeeper-3.4.6)
样例视频教程:http://www.roncoo.com/course/view/f614343765bc4aac8597c6d8b38f06fd Dubbo建议使用Zookeeper作为服务的注册中 ...
- 架构师必备软件:安装Dubbo注册中心(Zookeeper-3.4.6)
Dubbo建议使用Zookeeper作为服务的注册中心. http://www.roncoo.com/details?cid=f614343765bc4aac8597c6d8b38f06fd 注册中心 ...
- dubbo注册中心
官方推荐的是zookeeper注册中心. 1.Multicast 注册中心 Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现. 提供方启动时广播自己的地址消费方启动 ...
随机推荐
- CF889E题解
\(\text{Problem - 889E - Codeforces}\) \(\text{*3000}\) 修正 感谢学长 \(\text{fs}\) 指出状态数原因解释的错误. 题意 给一个序列 ...
- 一个简单的PHP单文件路由类示例
<?php class Router { protected $routes = array(); protected $basePath; public function __construc ...
- 【MIPS】内存小端存储与MARS显示
1.小端存储方式:按字节逆序 以4Byte一个字为单位,其内按字节逆序排列 概念上-数据真值 机器码-内存存储 Mars显示 (+0) (+1) (+2) (+3) 0x12345678 0x78 0 ...
- 【CF VP记录】Codeforces Round 1008 (Div. 2)
比赛链接 本文原文发布于博客园,如您在其他平台刷到此文,请前往博客园获得更好的阅读体验. 跳转链接:https://www.cnblogs.com/TianTianChaoFangDe/p/18766 ...
- hexo 本地启动项目 hexo-browsersync 不工作原因总结
问题 1 : hexo-server 开启 compress 压缩后 hexo-browsersync 插件热更新完全无效,没办法自动刷新 此问题表现在 hexo 任何版本 问题原因: hexo-se ...
- Kubernetes 编译 kubeadm 修改证书有效期到 100 年
前言 kubeadm 生成的客户端证书在 1 年后到期.过期后,会导致服务不可用,使用过程中会出现:x509: certificate has expired or is not yet valid. ...
- Golang 入门 : 浮点数
浮点数介绍 Go语言提供了两种精度的浮点数:float32 和 float64.它们的算术规范由IEEE754浮点数国际标准定义,该浮点数规范被所有现代的CPU支持. 这些浮点数类型的范围可以从很微小 ...
- Thinkphp3.2 PHPMailer 发送邮件
第一步 :下载附件PHPMailer解压到ThinkPHP\Library\Vendor 第二步:在Common文件夹中的公共函数function.php中写一个发送邮件的函数, 这样可以在项目任意位 ...
- OkHTTP发送POST请求传送JSON数据
导入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> ...
- HTTP内容编码和HTTP压缩的区别
HTTP压缩,在HTTP协议中,其实是内容编码的一种. 在http协议中,可以对内容(也就是body部分)进行编码, 可以采用gzip这样的编码. 从而达到压缩的目的. 也可以使用其他的编码把内容搅乱 ...