概述

实际上,Apache Dubbo是一款高性能的Java RPC结构。而Apache Dubbo的前身是阿里巴巴公司开源的、轻量级的开源RPC结构,在2018年阿里巴巴把这个结构捐献给了Apache基金会。

alibaba.dubboapache.dubbo我们应该怎样去挑选呢?

  • Dubbo Github地址(两个地址都能访问):
    • github.com/alibaba/dub…
    • github.com/apache/dubb…

Alibaba Dubbo or Apache Dubbo, 该如何做选择呢?

现在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>

Alibaba Dubbo or Apache Dubbo, 该如何做选择呢?

com.alibaba.dubbomaven库房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.dubbo2.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,以及DubboHSF的关系,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结构的工作,经过将DubboHSF两个结构融为一体,并在此基础上开展出习惯云原生架构的Dubbo版别。Dubbo重回阿里巴巴的落地是拥抱社区、拥抱云原生、拥抱标准化的一次很好的实践。

阿里巴巴内部Dubbo 3.0的落地,对社区也是一个重大利好,这一方面有利于阿里巴巴将其在HSF上的丰厚服务管理经历回馈输出到社区,另一方面也将直接推进Dubbo云原生架构的快速演进。除了阿里巴巴之外,包含斗鱼、工商银行、爱奇艺等厂商也都在参加下一代Dubbo 3.0的建造。

阿里巴巴晋级 Dubbo3 全面替代 HSF2

作为Dubbo3的首要定义者以及中心用户,阿里巴巴内部的中心事务线现在均已或正在迁移到Dubbo3版别。众所周知,阿里巴巴内部事务一直运行在自研HSF2结构之上,HSF2Dubbo2之间有很深的根由,两者之间在规划理念上有许多相似之处,但实际上经过多年的开展现已演进成两个彻底不同的结构,在Dubbo3规划的进程中彻底汲取了HSF2Dubbo2两者的优势,特别是HSF2在阿里内部多年超大规划集群实践的经历。

面向企业生产实践痛点

Dubbo2仍旧是国内首选开源服务结构,被广泛使用在互联网、金融保险、软件企业、传统企业等几乎一切数字化转型企业中,久经规划化生产环境查验。以 Dubbo2 的贡献者和典型用户阿里巴巴为例,阿里巴巴根据 Dubbo2 在内部保护的 HSF2 结构阅历了历次双十一峰值考验,每天数十亿次的 RPC 调用,管理着超越千万的服务实例。在长时间的优化和实践堆集中,阿里巴巴有了对下一代服务结构的设想与计划,在内部开端了快速演进,并快速的被贡献到 Apache 社区,好像阿里巴巴相同,其他用户的实践诉求与痛点也在开源社区快速的堆集,形成了共同的方向和技能计划,能够说 Dubbo3 的诞生就来自于超大基数的企业用户堆集,为了更好的满足他们的实践诉求。

Alibaba Dubbo or Apache Dubbo, 该如何做选择呢?

Dubbo3 融合了阿里巴巴 HSF2 及其他社区企业的很多服务管理经历,当前 Dubbo3 现已被全面使用到生产实践环境,用户包含阿里巴巴电商、饿了么、钉钉、考拉、阿里云、小米、工商银行、风火递、安全健康等。社区与用户的合作形成的良性循环极大的促进了 Dubbo3 的开展,阿里巴巴现已以社区版 Dubbo3 彻底替代了内部保护的 HSF2 结构,他们的实践经历一方面推进 Dubbo3 的安稳性,另一方面正够连绵不断的将服务管理实践经历输出到开源社区。

面向百万集群实例,横向可扩容

随着微服务实践经历的堆集,微服务被拆分成更细粒度,布置到越来越多的机器实例,以支撑不断增加的事务规划。在很多的 Dubbo2 企业用户中,特别是以金融保险、互联网为代表的规划化企业开端遇到集群容量瓶颈问题(典型的请参照工商银行实践案例):

  • 服务发现进程

    • 注册中心数据存储规划到达容量瓶颈
    • 数据注册&推送效率严峻下降
  • Dubbo 进程

    • 侵吞更多机器资源,导致事务资源利用率下降
    • 频繁 GC 影响事务安稳性

Dubbo3 在规划上很好的处理了这些问题,经过全新规划完成的服务管理(服务发现)模型,能够完成服务发现链路上的数据传输、数据存储量平均下降 90% 左右;一起 Dubbo3 本身在事务进程中变得更轻量、更安稳,完成提高资源利用率 50%。

Dubbo3 一个更大的优势在于其对全体架构安稳性的提高,新的服务发现架构使得关于整个集群容量、可伸缩性评估变得更容易、更精确。

Alibaba Dubbo or Apache Dubbo, 该如何做选择呢?

假如将使用开发大略划分为事务开发、运维布置两个层次,其间改变比较频繁的要素包含服务(接口)、使用、机器实例。在 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 与无 sidecarproxyless 布置架构,使用 Dubbo Mesh 的用户根据本身的事务特点将有更多的布置架构挑选。

异构系统互通

我们正看到越来越多的异构微服务系统互通的诉求,典型如 Dubbo、Spring Cloud、gRPC 等。有些是因为技能栈迁移,有些是组织兼并后需求完成事务互调,Dubbo3 借助于新的服务发现模型以及可灵活扩展的RPC协议,能够成为 Dubbo3 未来的开展目标。

参考文献

  • 《Dubbo 3.0速览》
  • 《阿里巴巴晋级 Dubbo3 全面替代 HSF2》
  • 《How to choose dubbo? alibaba version or apache incubator-dubbo》