关于云原生-cloud-native:Dubbo-云原生之路ASF-毕业一周年30-可期

3次阅读

共计 6233 个字符,预计需要花费 16 分钟才能阅读完成。

作者 | 刘军

导读: 往年是 Dubbo 从 Apache 基金会毕业的一周年,同时也是推动 Dubbo 3.0,即全面拥抱云原生的重要一年。Dubbo 社区策动了【Dubbo 云原生之路】系列文章,和大家一起回顾 Apache Dubbo 社区的倒退。系列文章次要涵盖 Dubbo 技术解读、社区经营、利用案例解析三大部分。

纵观中国开源历史,你真的没法找到第二个像 Dubbo 一样自带争议和探讨热度的开源我的项目。

一方面,2011 年,它的开源填补了过后生产环境应用的 RPC 框架的空白,一公布就被宽泛采纳;另一方面,它经验了进行保护、重启保护后募捐给 Apache 基金会、接着又以顶级我的项目的身份毕业。即使阿里致力对外展现开源投入的信心,在面对广受欢迎的后起之秀 Spring Cloud,和新生儿 Service Mesh 的夹击下,Dubbo 的路将怎么走上来?在云原生时代,它如何连续以后光辉?

前言

本篇作为整个系列的开篇,将整体回顾并瞻望 Dubbo 我的项目倒退,同时简要概括后续文章。

从 2019 年到当初,在 Dubbo 毕业的这一年工夫里,Dubbo 社区和产品都获得长足进步,同时 Dubbo 云原生版本 – Dubbo 3.0 的开发工作也曾经全面铺开。

社区方面。须要重点提及的有两点:一个是落地与奉献的企业用户进一步减少,被动与社区取得联系的中、大规模公司达 200 多家,如携程、工商银行、瓜子二手车、网联清理、中通等;另一个是以 Dubbo-go 为代表的子社区蓬勃发展。

产品技术演进方面。Dubbo Java 版公布 10 个版本,在多语言、协定、性能、服务治理模型等方面都有深度摸索。Dubbo go 公布超过 8 个版本,在性能根本对齐 Java 版本的根底上,一些方向上也曾经走在了 Java 版本后面。值得一提的是,阿里巴巴外部也正在踊跃推动 Dubbo 社区版本在外部的落地,从往年开始逐渐实现以 Dubbo 替换其外部的 HSF 框架。这一方面有利于阿里将其在 HSF 上的丰盛服务治理教训回馈输入到社区,另一方面阿里官网的落地也将间接减速 Dubbo 云原生的倒退。

在云原生大潮下,3.0 已被正式列为往年 Dubbo 产品建设的外围指标,波及下一代 RPC 协定、服务治理模型、云原生基础设施适配等多方面的内容。其中,很多方面曾经在以后的 2.7 版本中做了前置性摸索,如近期公布的基于 HTTP/2 的协定反对、利用级服务发现等,后续工作将以此为根底开展。系列文章也会有对 Dubbo 3.0 Roadmap 及技术计划的具体解析。

Dubbo 毕业一周年回顾

2017 年 7 月,Dubbo 开源我的项目被从新激活,2018 年募捐到 Apache 基金会,2019 年 5 月,Dubbo 正式从 Apache 基金会孵化毕业,成为 Apache 顶级我的项目。接下来,文章别离从社区、子社区、产品三方面介绍 Dubbo 过来一年的问题。

社区一年公布 24 个版本,贡献者已超 300

如果说最开始从新激活是以阿里巴巴为主导的我的项目保护投入,那自 Dubbo 退出 Apache 起,它就曾经开始成为一个社区主导、社区奉献为主的齐全凋谢的基金会我的项目。

到明天,这一趋势正变得更显著。包含阿里巴巴、携程、工商银行、瓜子二手车、网联清理、中通等在内的互联网、传统企业公司,在 Dubbo 的应用与社区代码奉献上都有投入。Dubbo 社区正变得十分沉闷和多样化。

过来一年,Dubbo 社区我的项目总共公布 24 个版本,倒退 Committer/PMC 27 人,其中有 20% 的贡献者是来自于阿里巴巴,80% 以上来自不同组织的开发者或爱好者。

Dubbo 社区组织了超过 10 场线下 meetup 流动,根本笼罩了国内开发者汇集的城市。通过线下或线上直播流动,分享超过 100 个 topic 的演讲,深度解说 Dubbo 社区最新动静、功能模块开发和近期布局等。主题演讲大多是社区采集形式,由 Dubbo 的深度企业分享实践经验,其中典型的代表包含携程、工商银行、考拉、信用算力等。

从 Github 统计数据来看,Dubbo Star 数获得新的里程碑,已超过 3 万,相比重启开源时增长了近 5 倍;贡献者由最后的几十个增长到当初的 300 多个,而这其中有 60 多人曾经被提名为 committer,不论是贡献者数量还是 committer 比例都失去很大的晋升;Dubbo Java 公布的有 65 个。

上述次要是对 Dubbo Java 我的项目社区倒退的总结,上面将介绍 Dubbo Java 产品方面的停顿。

Dubbo Java 迭代,目前次要保护 3 个大版本

以后社区保护的 Dubbo Java 大版本次要有 3 个,别离是 2.5.x、2.6.x 和 2.7.x。

  • 2.7.x 是社区的次要开发版本,在过来的一年共公布了 8 个版本(2.7.0 – 2.7.7),每个版本都有一些值得关注的个性或性能降级,涵盖从编程模型、服务治理、性能到协定的多个方面的加强;
  • 2.6.x 版本则定位为 bugfix 版本,过来一年共公布了 3 个版本,次要以修复问题和安全漏洞为主,并没有减少太多新的 feature;
  • 2.5.x 版本从 2019 年初开始已发表 EOF,只做平安修复;而到了下半年曾经齐全进行了保护。

上面通过一个简要分层模块图,回顾过去一段时间 Dubbo 的技术架构演进,从编程模型、服务治理、传输协定、性能优化等角度切入:

以上很多性能都已被各大厂商落地,用于解决具体的业务问题。咱们也期待,接下来这些厂商带来更多对于 Dubbo 实践经验的深度总结。

Dubbo-go 倒退的第五年,正与 Dubbo 齐头并进

除 Dubbo Java 之外,Dubbo 周边也倒退出了很多优良的子项目(子社区),其中包含 Dubbo-spring-boot-project、Dubbo-go 等,这里先着重介绍 Dubbo-go 子社区。

Dubbo-go 我的项目最早因为雨在 2016 年 5 月构建,同年 9 月公布并开源,如下时间轴图清晰记录了 Dubbo-go 的前世今生。

秉承 “bridge the gap between Java and Go” 人造使命的 Dubbo-go,曾经进入第五个年头,也走出了本人独特的倒退门路:

  • 以后的 v1.4.0 版本已对齐 2.6.x 版本,行将公布的版本将与 v2.7.x【对标 v2.7.5】对齐,而后将会公布对标 Dubbo 3.x 的 v1.6.0 版本;
  • 独立保护从底层的 hessian2 协定库 Dubbo-go-hessian2、网络库 getty 到下层对标 Dubbo 的 Dubbo-go 的全套实现;
  • 独立的 TCP + Protobuf 和 gRPC + JSON 通信计划也已开发实现【将蕴含着在版本 v1.5.0 中】;
  • 已与 Dubbo/gRPC/Spring Boot 实现互联互通;
  • 通过接入 Opentracing 和 Promethus,Dubbo-go 在可观测性等微服务方向的进行了本人独特的摸索;
  • 已实现了基于 HTTPS 的可信 RPC 调用;
  • 曾经实现了本人独特的把 Kubernetes 作为注册核心的微服务计划。

Dubbo-go 从最开始 Dubbo 的 Go 语言实现,已倒退成为目前 Dubbo 多语言版本中性能最弱小者,它的倒退离不开背地弱小的 Dubbo-go 社区。除了上述 Dubbo-go 的本身个性外,通过跨社区单干,获得了如下问题:

  • 通过与 MOSN 社区单干,曾经实现 Dubbo/Dubbo-go 利用能够零老本接入基于 MOSN 实现 Dubbo Mesh,实现微服务和云原生共存的 “双模微服务”
  • 与 sentinel 社区单干,在 Dubbo/Dubbo-go 残缺接入 sentinel 的降级和限流计划;
  • 与 Apollo 社区单干,在 Dubbo-go 中实现近程配置下发;
  • 与 Nacos 社区单干,实现基于 Nacos 的服务发现。

Dubbo-go 社区 2020 年 Q2 次要指标有:

  • 公布齐全对齐 Dubbo 2.7.x 的 v1.5.0 版本;
  • 公布对标 Dubbo 3.0 的 v1.6.0 版本;
  • 在云原生方面持续本人的摸索;
  • 持续与兄弟社区放弃单干共进态势,扩充本身应用范畴;
  • 生产实践上推动在阿里团体,以及更多厂家的落地。

我的项目(包含子项目)目前已先后在携程、涂鸦智能和蚂蚁金服等公司生产落地。往年阿里团体实现 HSF 和 Dubbo 的交融后,我的项目也将在阿里团体双十一战场经受考验。

云原生 Dubbo – Dubbo 3.0

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 的建设。

上面列出了 Dubbo 3.0 中的三个重要方向,具体的 Roadmap 将在接下来文章中独自阐明:

  • 下一代 RPC 协定。新协定将提供更丰盛的如 Stream、Flow Control 等内置语义,同时将具备更好的扩展性、网关的敌对性等;
  • 基于利用粒度的服务发现机制。在兼顾 Dubbo 面向接口的易用性与功能性的根底上,解决与 Kubernetes Native Service 适配问题,解决大规模集群下的地址推送性能瓶颈问题;
  • 适配云原生基础设施的解决方案。这波及到 Dubbo 服务与基础设施生命周期对接、Kubernetes Native Service 适配、适应基础设施调度的服务治理规定、适配 Service Mesh 架构的解决方案等。

接下来沿着这三个方面简要开展。

下一代 RPC 协定

专一在协定本身来说,下一代的协定次要聚焦在 HTTP/2、Reactive Stream、Flow Control 等方面:

  • Reactive Stream:Reactive Stream 引入 RPC,带来更丰盛的通信语义和 API 编程模型反对,如 Request-Stream、Bi-Stream 等;
  • HTTP/2:微服务云原生场景下,基于 HTTP/ 2 构建的通信协议具备更好的通用性和穿透性;
  • Flow Control:协定内置流控机制,反对相似 Reqctive Stream 的 Request (n) 流控机制。

从解决的业务场景问题上来说,基于新的协定 Dubbo 在框架层面要反对智能决策的负载平衡算法、对 Mesh 和网关更敌对、更容易提供多语言实现与互通等。

  • Mesh:协定对穿透 Mesh 更敌对,辨别协定头 Metadata 与 RPC Payload,不便实现与 Mesh 的合作,包含流量管制机制、应用层配置协商等;
  • 协定通用性 :兼顾通用性与性能,反对协定能在各种设施上运行;
  • 多语⾔反对 :如通过反对 Protobuf 提供了更欠缺的跨语言服务定义与序列化传输的反对。

利用级服务治理

面向接口始终以来都是 Dubbo 框架的劣势。一方面它的易用性,为开发者屏蔽了近程调用的存在;另一方面面向接口的地址发现、服务治理带来了更弱小的能力,使得整个 Dubbo 治理体系十分弱小与灵便。

既然面向接口有如此多的益处,那为什么咱们还要摸索面向利用的服务治理模式呢?

听起来仿佛有些矛盾。其实到底是面向接口,还是面向利用,只是从不同的角度看 Dubbo。咱们所聊的“面向接口 -> 面向利用”的革新,次要体现在服务注册、发现层面:

而咱们说的面向利用的新模型,次要对第 2 点,即注册核心的数据组织转变为“面向利用 / 实例”粒度。这为咱们解决两个问题:

  • 在服务发现层面与 Kubernetes Service 等微服务模型对齐;
  • 服务发现的数据量将有一个量级的降落,从“接口数  实例数”降落到“利用数 实例数”。

具体能够参见文章《Dubbo 迈出云原生重要一步 – 利用级服务发现解析》,本系列文章后续也会有对这部分机制和实现的更深度解析。

云原生基础设施

云原生带来了底层基础设施,利用开发、部署和运维等全方位的变动:

基础设施

  • 基础设施调度机制变动,带来运维(生命周期)、服务治理等方面的变动;
  • 服务发现能力下沉,Kubernetes 形象了 Native Service Discovery。

Service Mesh – 云原生微服务解决方案

  • Mesh 为跨语言、sdk 降级等提供了解决方案,Dubbo sdk 要与 Mesh 合作,做到性能、协定、服务治理等多不便的适配;
  • Mesh 尚未大规模铺开,且其更适宜对流量管控更关注的利用,传统 SDK 的性能劣势仍旧存在,两者混部迁徙场景可能会长期存在。

从利用场景上,Dubbo 可能的部署环境包含:

  • 不应用 Kubernetes Native Service,Kubernetes 只作为容器编排调度设施,持续应用 Dubbo  自建的服务注册、发现机制;
  • 复用 Kubernetes Native Service,Dubbo 不再关怀服务注册,Dubbo Client 负责服务发现与流量调配;
  • Dubbo sdk 往 Mesh 迁徙,一方面要做到适应 Mesh 架构,成为 Mesh 体系下的 RPC 编程和通信计划;另一方面要做到 Dubbo 与 Mesh 架构长期共存,相互买通服务发现和治理体系;
  • Kubernetes 上与云下混合部署的平滑迁徙反对,包含服务发现的对立与网络通信计划的买通。

从 Dubbo 性能划分上,将着重从以下方面提供对云原生基础设施的反对:

  • 生命周期:Dubbo 与 Kubernetes 调度机制绑定,放弃服务生命周期与 Pod 容器等生命周期的主动对齐;
  • 治理规定: 服务治理规定在规定体、规定格局方面进行优化,如规定体以 YAML 形容、勾销过滤规定对 IP 的间接依赖,定义规定特有的 CRD 资源等;
  • 服务发现: 反对 K8s Native Service 的服务发现,包含 DNS、API-Server,反对 xDS 的服务发现;
  • Mesh 架构合作: 构建下一代的基于 HTTP/2 的通信协议,反对 xDS 的标准化的数据下发。

新一代的 RPC 协定和利用级服务发现模型将会是这一部分的前置根底。

总结与瞻望

作为系列文章开篇,咱们在这里对 Dubbo 过来一年的问题做了简要的总结与回顾,包含 Dubbo 社区、产品迭代的倒退。

接下来咱们会看到更多来自深度 Dubbo 用户的落地教训分享,Dubbo-go 子社区的倒退故事等。

更重要的,咱们也对下一代云原生 Dubbo – Dubbo 3.0 做了瞻望,后续对于 Dubbo 3.0 Roadmap、方案设计与停顿解析等也将在此系列中公布。敬请期待!

作者简介

刘军   花名陆龟,Github 账号 Chickenlj,Apache Dubbo PMC,我的项目外围开发,见证了 Dubbo 重启开源,到从 Apache 基金会毕业的整个过程。现任职阿里云云原生利用平台团队,参加服务框架、微服务相干工作,目前次要在推动 Dubbo 3.0 – Dubbo 云原生。

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术畛域、聚焦云原生风行技术趋势、云原生大规模的落地实际,做最懂云原生开发者的公众号。”

正文完
 0