4个问题:
- dubbo为什么被阿里弃用?
- zookeeper的瓶颈对zookeeper有多大影响?
- zookeeper和其他服务注册中心对比有什么优缺点?
- 代替Zookeeper+Dubbo的方案?
一一回答。
1、dubbo为什么被阿里弃用?
dubbo现在阿里不是主流的问题,不存在”弃用“之说。到目前为止,我们可以把dubbo的发展,化为3个时期:
![35765fe031c38186e88aeca7d3b216ad.png](https://i-blog.csdnimg.cn/blog_migrate/28c985b0ef6fc9db6d10e71bebc693fa.jpeg)
开源期(2011-2013,横空出世):dubbo是阿里巴巴B2B开发的,2011年开源。hsf是淘宝开发的,要早2-3年。大家知道,淘系(淘宝、天猫、一淘/阿里妈妈等,甚至包括阿里云)发展的比阿里巴巴B2B要好的多。高并发服务化的场景其实也主要在淘系,而且淘宝的中间件团队比较强大。所以大概再B2B从香港退市的时候,B2B团队的研发面临跟淘系包括支付宝进行合并的过程,这个时候dubbo与hsf两个团队进行过一次”PK“,PK的结果是dubbo的部分功能合并到hsf,dubbo团队成员基本上都分流到了其他业务团队,比如梁飞(花名虚极)转岗到天猫客户端团队。这个时期的一个明显特征是,dubbo墙里开花墙外香,框架特性丰富、功能成熟、使用方便,在分布式服务化领域,迅速成为业内的事实标准。
沉寂期(2013-2017,潜龙在渊):dubbo团队分流以后,明显可以看到从2013年到2017年,dubbo的维护程度很低,社区活跃度也很低。这几年中,比较有亮点的是当当网做了rest协议的实现。当时这一时期也培养了一大批的国内使用dubbo的程序员,dubbo在开源圈的影响力一直在上升。当然,也错过了进一步发展的好机会。Spring Cloud项目逐步流行开来。
复兴期(2017-2019,朝花夕拾):2017年8月份重启维护以来,作为阿里的一个开源的拳头产品,一方面引入公司内部外资源,迅速调整定位,修复这几年积累的问题,添加各种新的特性,以更加开放的心态引入大量外部贡献者,与阿里巴巴以及其他公司的开源技术整合(Sentinel,Seata,Nacos,Spring Cloud等),规划Dubbo3.0,引入Reactive MicroServices,拥抱ServiceMesh,不断完善以dubbo为核心的服务化生态,通过频繁的技术布道和技术运营建设开源社区,同时一直在探索dubbo与云基础设施之间的应用效应。加入Apache基金会,并与2019年5月顺利毕业,成为国人开源的一个新名片。
2、zookeeper的瓶颈对zookeeper有多大影响?
不知道具体是什么瓶颈,此处假设是网络抖动、并发与集群规模。
随着集群规模增大,zk的性能会严重下降。
并发高或网络抖动的情况下,也会导致zk经常会抖动,而造成系统整体不稳定。
并且zk作为一个CP系统,可用性A设计的并不好,对于复杂场景有不少的问题。具体可以参见:阿里巴巴为什么不用 ZooKeeper 做服务发现?
阿里巴巴为什么不用 ZooKeeper 做服务发现?yq.aliyun.com![2a239107f7eccd9afda86a4b288a67a2.png](https://i-blog.csdnimg.cn/blog_migrate/9bd1fbf7002d7bb4f074e556d61f8c5b.jpeg)
在dubbo里,其实存在两类”配置“信息,服务注册发现的元数据,以及系统相关的配置信息,这两种是有本质不同的,一个是服务注册中心,一个是配置中心。dubbo在重启维护后,注意到这个问题,并重构了代码,现在一般建议大家使用nacos实现的服务注册中心,阿里的zhanghuxing和luoyi实现了etcd和consul版本的注册中心。
nacos版本注册中心:
nacosdubbo.apache.org![ee7e823cc93fb5379c5f0f4da41f2200.png](https://i-blog.csdnimg.cn/blog_migrate/f5d79cc702aebd1712dd21c5dc3d182f.png)
etcd、consul版本注册中心:apache/dubbo-etcd3 & apache/dubbo-consul
3、zookeeper和其他服务注册中心对比有什么优缺点?
主要是上述问题。具体参考《阿里巴巴为什么不用 ZooKeeper 做服务发现?》一文。
4、代替Zookeeper+Dubbo的方案?
可选方案如果还在dubbo框架内的话,可以有:
- Nacos+Dubbo
- Etcd3+Dubbo
- Consul+Dubbo
如果不在dubbo框架内的话,可选方案为:
- SpringCloud全家桶
- Vert.X
- Etcd+GRPC
- 腾讯Tars
- 。。。。。。等等,多得很