概述
实际上,Apache Dubbo
是一款高性能的Java RPC
结构。而Apache Dubbo
的前身是阿里巴巴公司开源的、轻量级的开源RPC
结构,在2018年阿里巴巴把这个结构捐献给了Apache
基金会。
那alibaba.dubbo
和apache.dubbo
我们应该怎样去挑选呢?
-
Dubbo Github地址(两个地址都能访问):
- github.com/alibaba/dub…
- github.com/apache/dubb…
现在alibaba.dubbo的最新版别最终为:2.6.12
<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.12</version>
</dependency>
从com.alibaba.dubbo
的maven
库房mvnrepository
上面Note
提示:
This artifact was moved to: org.apache.dubbodubbo
apache.dubbo的最新版别为:3.2.0-beta.5
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>3.2.0-beta.5</version>
</dependency>
关于
alibaba.dubbo
还是apache.dubbo
挑选:假如
2.6.x
及以下版别,能够使用:com.alibaba.dubbo
,2.7.0
开端,直接使用org.apache.dubbo
假如你现在挑选了低版别的com.alibaba.dubbo
后边假如想晋级到org.apache.dubbo
,需求考虑做好平滑升晋级带来的影响和麻烦,所以必要时在选型时做好版别挑选!
本篇文章首要是了解回顾Dubbo
的开展进程、Alibaba Dubbo
的涅槃重生!
Apache开源孵化器
Apache
的顶级项目往往都需求经过孵化器孵化,满足一系列质量要求之后才可毕业。2016 年 12 月 15 日,阿里巴巴曾宣告将移动开源项目Weex
捐赠给Apache
基金会开端孵化,现在没有毕业。Dubbo
是否能正式成为 Apache
的顶级项目,还有一段路要走。社区的参加,能否让Dubbo
的实用性再上一层楼。
《从2019到2020,Apache Dubbo年度回顾与总结》
Dubbo的历史根由
说起Dubbo
结构,或许许多后端开发者都有所了解,它是国内比较早的、影响较大的开源项目,包含阿里巴巴、京东、当当网、去哪儿网、网易考拉、微店等电商渠道都有其成功使用案例。
Dubbo
于2011年开源,之后就敏捷成为了国内该类开源项目的佼佼者。能够幻想,2011年时,优异的、可在生产环境使用的RPC
结构很少,Dubbo
的出现敏捷给人眼前一亮的感觉,而一起它又有阿里巴巴背书,所以也敏捷收到了开发者的亲睐。Dubbo
现在在GitHub
上有超越16000个star
和超越12000的fork
数,肯定是国内影响力最大的开源项目之一。
但奇怪的是,在 2014 年 10 月 30 日发布 2.4.11 版别后,Dubbo
忽然中止更新,当时社区一片哗然(其实是在 2012 年 10 月之后就基本中止了重要晋级,改为阶段性保护)。具体原因现在也不得而知,知乎上也有一些讨论,包含团队调整、内部主推HSF
等。不过能够承认的是,在 4 年前,国内企业关于开源的重视程度都远远没有今天高。
而在官方中止更新Dubbo
之后,当当网(Dubbox)、网易考拉(Dubbok) 都有保护自己单独的分支,这也能够从另外一个旁边面证明Dubbo
的确使用到了这些企业的要点事务,并且规划不小。
随着阿里巴巴关于开源的逐步重视,2017 年 9 月 7 日,Dubbo
悄悄的在GitHub
发布了 2.5.4 版别。随后,没过多久,又敏捷发布了 2.5.5、2.5.6、2.5.7 等版别。在 10 月举办的云栖大会上,阿里宣告Dubbo
被列入集团要点保护开源项目,这也就意味着Dubbo
起死回生,开端重新进入快车道。
阿里巴巴重启Dubbo
而关于为什么要重新启动保护 Dubbo
,以及Dubbo
和HSF
的关系,Dubbo
未来的计划,当时聊聊架构也采访了 Dubbo
负责人、阿里巴巴中间件高档技能专家罗毅,感兴趣的读者能够点击阅读原文《阿里重启保护 Dubbo 了》。
这次采访中,令我形象深入的是罗毅提到了Dubbo
的愿景,他说开源就阿里巴巴集团在技能层面赋能的重要范畴,阿里巴巴中间件团队往后不仅要聆听社区的声响,及时修正问题,及时兼并优异的pull request
,还会力争将 Dubbo
打造成有世界影响力的RPC
结构。世界影响力,让人一会儿沸腾。
满血复生:Dubbo 3.0
Dubbo 3.0
Dubbo 3.0
是下一代Dubbo
架构的代号。一年前,最开端探究Reactive Stream
之时,社区也曾有过对 Dubbo 3.0
的广泛讨论。而这一次,在云原生大布景下,3.0 代表了更全面的Dubbo
架构晋级,涉及到下一代RPC
协议、全新的服务管理模型和云原生基础设施适配等。
阿里巴巴是参加Dubbo 3.0
开发建造的首要力量之一,这款始于阿里的开源项目正重新回归阿里内部落地。
上一年开端,阿里巴巴就现已在逐步推进以Dubbo
替换其内部的HSF
结构的工作,经过将Dubbo
与HSF
两个结构融为一体,并在此基础上开展出习惯云原生架构的Dubbo
版别。Dubbo
重回阿里巴巴的落地是拥抱社区、拥抱云原生、拥抱标准化的一次很好的实践。
阿里巴巴内部Dubbo 3.0
的落地,对社区也是一个重大利好,这一方面有利于阿里巴巴将其在HSF
上的丰厚服务管理经历回馈输出到社区,另一方面也将直接推进Dubbo
云原生架构的快速演进。除了阿里巴巴之外,包含斗鱼、工商银行、爱奇艺等厂商也都在参加下一代Dubbo 3.0
的建造。
阿里巴巴晋级 Dubbo3 全面替代 HSF2
作为Dubbo3
的首要定义者以及中心用户,阿里巴巴内部的中心事务线现在均已或正在迁移到Dubbo3
版别。众所周知,阿里巴巴内部事务一直运行在自研HSF2
结构之上,HSF2
与Dubbo2
之间有很深的根由,两者之间在规划理念上有许多相似之处,但实际上经过多年的开展现已演进成两个彻底不同的结构,在Dubbo3
规划的进程中彻底汲取了HSF2
与Dubbo2
两者的优势,特别是HSF2
在阿里内部多年超大规划集群实践的经历。
面向企业生产实践痛点
Dubbo2
仍旧是国内首选开源服务结构,被广泛使用在互联网、金融保险、软件企业、传统企业等几乎一切数字化转型企业中,久经规划化生产环境查验。以 Dubbo2
的贡献者和典型用户阿里巴巴为例,阿里巴巴根据 Dubbo2
在内部保护的 HSF2
结构阅历了历次双十一峰值考验,每天数十亿次的 RPC
调用,管理着超越千万的服务实例。在长时间的优化和实践堆集中,阿里巴巴有了对下一代服务结构的设想与计划,在内部开端了快速演进,并快速的被贡献到 Apache
社区,好像阿里巴巴相同,其他用户的实践诉求与痛点也在开源社区快速的堆集,形成了共同的方向和技能计划,能够说 Dubbo3
的诞生就来自于超大基数的企业用户堆集,为了更好的满足他们的实践诉求。
Dubbo3
融合了阿里巴巴 HSF2
及其他社区企业的很多服务管理经历,当前 Dubbo3
现已被全面使用到生产实践环境,用户包含阿里巴巴电商、饿了么、钉钉、考拉、阿里云、小米、工商银行、风火递、安全健康等。社区与用户的合作形成的良性循环极大的促进了 Dubbo3
的开展,阿里巴巴现已以社区版 Dubbo3
彻底替代了内部保护的 HSF2
结构,他们的实践经历一方面推进 Dubbo3
的安稳性,另一方面正够连绵不断的将服务管理实践经历输出到开源社区。
面向百万集群实例,横向可扩容
随着微服务实践经历的堆集,微服务被拆分成更细粒度,布置到越来越多的机器实例,以支撑不断增加的事务规划。在很多的 Dubbo2
企业用户中,特别是以金融保险、互联网为代表的规划化企业开端遇到集群容量瓶颈问题(典型的请参照工商银行实践案例):
-
服务发现进程
- 注册中心数据存储规划到达容量瓶颈
- 数据注册&推送效率严峻下降
-
Dubbo 进程
- 侵吞更多机器资源,导致事务资源利用率下降
- 频繁 GC 影响事务安稳性
Dubbo3
在规划上很好的处理了这些问题,经过全新规划完成的服务管理(服务发现)模型,能够完成服务发现链路上的数据传输、数据存储量平均下降 90% 左右;一起 Dubbo3
本身在事务进程中变得更轻量、更安稳,完成提高资源利用率 50%。
Dubbo3
一个更大的优势在于其对全体架构安稳性的提高,新的服务发现架构使得关于整个集群容量、可伸缩性评估变得更容易、更精确。
假如将使用开发大略划分为事务开发、运维布置两个层次,其间改变比较频繁的要素包含服务(接口)、使用、机器实例。在 2.x 时代,一切这三个要素的增加都会影响微服务集群的整体容量,特别是接口增减带来的动摇,对全体容量评估是非常不透明的。而在 3.0 中集群容量改变仅与使用名、机器实例两个要素相关,而容量评估的目标往往都是使用与实例,因此整个集群变的更安稳透明。
云原生
在云原生时代,底层基础设施的变革正深入影响使用的布置、运维乃至开发进程,往上也影响了 Dubbo3
微服务技能计划的选型与布置模式。
下一代 RPC 协议
新一代的 Triple
协议根据 HTTP/2
作为传输层,具有更好的网关、署理穿透性,原生支持 Stream
通信语义,兼容 gRPC
协议。
多语言友好
Dubbo3
从服务定义、RPC
协议、序列化、服务管理等多个方面都现已将多语言友好性作为要点考量要素,现在提供了 Java、Golang
安稳的多语言版别,更多语言版别的 3.0 完成如 Rust、Javascript、C/C++、C#
等在开发建造中。
Kubernetes
Dubbo3
开发的使用能够原生布置到 Kubernetes
渠道,Dubbo3
在地址、生命周期等已规划可与 Kubernetes 等容器调度渠道对齐;关于要进一步复用 Kubernetes
底层基础设施能力的用户来说,Dubbo3
也已对接到了原生的 Kubernetes Service
系统。
Service Mesh
Service Mesh
强调操控面在微服务管理中的作用,在一定程度上推进了操控面通信协议、职责规模的扩展与标准化;传统 Mesh
架构下的 Sidecar
模型强调旁路署理关于流量的统一管控,以完成透明晋级、多语言无感、无事务侵入等特性。
Dubbo3
提供了根据本身考虑的 Dubbo Mesh
处理计划,强调了操控面临微服务集群的统一管控,而在布置架构上,一起支持 sidecar
与无 sidecar
的 proxyless
布置架构,使用 Dubbo Mesh
的用户根据本身的事务特点将有更多的布置架构挑选。
异构系统互通
我们正看到越来越多的异构微服务系统互通的诉求,典型如 Dubbo、Spring Cloud、gRPC
等。有些是因为技能栈迁移,有些是组织兼并后需求完成事务互调,Dubbo3
借助于新的服务发现模型以及可灵活扩展的RPC
协议,能够成为 Dubbo3
未来的开展目标。
参考文献
- 《Dubbo 3.0速览》
- 《阿里巴巴晋级 Dubbo3 全面替代 HSF2》
- 《How to choose dubbo? alibaba version or apache incubator-dubbo》