对话 Dubbo 唤醒者北纬:3.0 将至,阿里核心电商业务也在用 Dubbo

简介: 如今,Dubbo 已经毕业一年,越来越多开发者开始询问 Dubbo 3.0 到底有哪些变化,阿里巴巴内部到底用不用 Dubbo,这是不是一个 KPI 开源项目以及 Dubbo 和 Spring Cloud 之间到底是什么关系。本文,将独家对话 Dubbo 项目二代掌门人北纬(GitHub ID@beiwei30),听他一一解答上述问题。

1.png

作者 | 北纬、赵钰莹

导读:2008 年,Dubbo 项目诞生;2014 年,由于内部团队调整,Dubbo 暂停更新;2017 年,北纬带领团队重新唤醒 Dubbo,并将其捐献给了 Apache 基金会。短短 15 个月,Dubbo 便从基金会毕业。如今,Dubbo 已经毕业一年,越来越多开发者开始询问 Dubbo 3.0 到底有哪些变化,阿里巴巴内部到底用不用 Dubbo,这是不是一个 KPI 开源项目以及 Dubbo 和 Spring Cloud 之间到底是什么关系。本文,将独家对话 Dubbo 项目二代掌门人北纬(GitHub ID@beiwei30),听他一一解答上述问题。

Dubbo 回归的这些年

Dubbo 项目诞生于 2008 年,最初只是一个阿里内部的系统;2011 年,阿里 B2B 决定将整个项目开源,一年时间就收获了来自不同行业的大批用户;2014 年,由于内部团队调整,Dubbo 暂停更新;2017 年 9 月,就在该项目将近 3 年没动静的时候,Dubbo 连续发布了好几个新版本,并且开始在内部招募对 Dubbo 感兴趣的同事。新版本背后的主力开发团队是阿里巴巴中间件团队,其中一个最重要的人就是北纬,他从 2017 年 7 月开始全面接手 Dubbo。

“我知道这是一个特别出名的开源软件,但是很长一段时间没有人维护,我当时在阿里内部的工作方向和 Dubbo 完全一致,也是做服务框架,所以对于认知 Dobbo 并不是非常困难。

接手之后,我们开始没有做太多事情,只是对外表示会重新维护这个项目,就收到了很多积极的反馈,这让我非常惊讶,很多开发者也在问我们可以重新维护多久。随着对这个项目的深入了解,我发现国内很多大型厂商,甚至传统国企都在广泛使用该项目,当时也觉得自己的责任重大,不知道可不可以把这个项目做好。”

彼时,北纬面临的第一个问题是:在 Dubbo 主版本停止更新的这些年,业界出现了很多 Dubbo 的分支版本,不同的团队都在维护自己的分支,如果不重视这一客观事实,很可能导致只有主版本在快速迭代,其他社区成员根本参与不进来,这样的开源意义不大。采访中,北纬表示:“对 Dubbo 来说,这些分支版本同样重要。我们还是希望可以给大部分深度用户一条安全的合并路径,根据我们的主要版本进行迭代。在这个过程中,我们和几大主流分支版本的开发团队都进行过交流,他们也非常愿意同主版本进行合并。”

在 Dubbo 正式复出之后,北纬也听到了一些开发者的疑问,比如这次能维护多久之类的。“既然放到阿里巴巴下面,开发者有这样的担心,那我干脆就把它放到中立的位置上,Apache 基金会是一个很好的选择,因为 GPL 协议太偏理想化,Dubbo 项目更多用在商业化公司,GPL 协议可能会影响后续推广。相对来说,Apache 协议比较实用。”

正是这一决定让广大开发者见到了最短时间从 Apache 基金会毕业的项目:2019 年 5 月 21 日,Dubbo 在仅用时 15 个月的情况下从 Apache 基金会毕业。

“我记得,与 Dubbo 同期毕业的有五个项目,Dubbo 是用时最短的。我们并不着急让 Dubbo 毕业,但我们原来预期的时间比 15 个月还要短,但碍于基金会的沟通流程,时间周期会相对拉长。”

Apache 基金会的特点是宽进严出,也就是说进去可能相对容易,但毕业是难的,而且非常强调公开透明。在国内,大部分人习惯通过微信和钉钉沟通,响应时间也会比较短,但 Apache 基金会是一个面向全球的组织,所有交流都基于邮件传递,一项提议必须在 72 小时内(考虑到全球的时差问题)没有成员提出反对才可以被采纳,这些流程都让时间周期变得更长。

如今,Dubbo 项目已经毕业一年有余,整个社区拥有 18 名 PMC 成员,57 名 committer,以及多达 370 名贡献者,社区代码比例已经超过 50%。在采访中,北纬表示,过去一年,Dubbo 在多语言建设方面先后从社区收获了 JS、Python、Erlang、PHP、Go 的实现,特别郑重感谢千米网、乐信以及其他开发者们,为社区带来了多语言支持。提到 Dubbo,大家第一个想到的可能还是 Java,但目前 Dubbo go 已经在 1.5 版本追平 Dubbo java 2.7 的特性。目前正在和 Java 齐头并进,一起规划 Dubbo 3.0 中云原生的路线图。

自 Dubbo 2.7 版本之后,整个发版节奏逐渐变慢,很多开发者也注意到“Dubbo 3.0 will come soon”的公告挂了很久。北纬表示,其实是有意识放慢了发版节奏,追求功能的稳定,这不仅仅是因为 Apache Dubbo 的深度用户,比如工商银行、携程、滴滴、斗鱼、瓜子等对 Dubbo 的使用规模越来越大,整个阿里经济体未来也会开始在内部核心电商业务陆续推进 Dubbo 和 HSF 的融合,Dubbo 的用户越多,团队的敬畏感越强烈。

在带领 Dubbo 前进的过程中,团队也听到了来自开发者社区的声音,比如 Dubbo 和 Sping Cloud 是什么关系?是不是二选一就够了?Dubbo 和 gRPC 之间的差别是什么?这是不是阿里的一个 KPI 开源项目?阿里内部用吗?

阿里与 Dubbo 之间的关系

“事实上,从我负责这个项目以来,我个人的体感是大家一直比较担心这个项目能不能持续发展,会不会断更。我也知道一些开发者在担心 Dubbo 只是阿里主导的 KPI 开源项目。”

根据 X-lab 开放实验室最新发布的《2020 年微服务领域开源数字化报告》,Dubbo 的开源活跃度全球排名 693,在微服务框架中排名第五,仅今年参与过社区建设的开发者数量已经达到 500 多人。整个社区蓬勃发展,来自外部的代码贡献量已经超过来自阿里员工的贡献量。

2.png
数据来源《2020 年微服务领域开源数字化报告》

在阿里巴巴云原生公众号后台回复“微服务报告”即可查看完整报告。

“我一直认为社区很重要,单靠核心团队的几位工程师来做这件事情非常困难,一些想法也是我们想不到的。如今,全国各地有上百家企业在使用 Dubbo,仅依靠我们两三位工程师的力量远远不够,我们希望社区内的开发者可以更多地参与进来。”

一直以来,开源的理想状态可能就是单纯依靠情怀,但这真的很难做好,靠情怀的始终是少数人,尤其是中国目前的开源远未达到这种状态,还处于发展过程中。采访中,北纬表示,对 Dubbo 而言,不管开发者最初进入并对项目有所贡献的原因是什么。重要的是,我们希望能够让整个社区保持开放,即便个别工程师仅仅只是为了日后找份工作来参与社区也没有关系,我认为这种想法很正常,毕竟贡献项目会占据开发者很多业余时间,我们也希望这个项目可以对大家有所帮助。

此外,阿里巴巴内部也在采用 Dubbo 项目,并且开始逐渐向核心交易场景推进。在 Dubbo 最初的成长过程中,阿里内部曾经提过“整个公司大统一,希望不要重复建设,但凡相同的项目都要合并”的想法。当时,淘宝的 HSF 项目也是一个中间件服务框架,与 Dubbo 做的事情高度重合,所以当时表示要将两个项目进行合并。

时至今日,HSF 和 Dubbo 在阿里经济体内部都有落地的场景。北纬表示,选择权由业务视自己的诉求来决定,技术上保证了框架之间的互操作。相对来说,电商场景里 HSF 的使用是主流,而云的场景里 Dubbo 使用更多。当然,对于这么大规模的服务化场景,统一技术栈一直是我们的诉求和目标。在云原生时代 Dubbo 3.0 的定义中,我们已经开始以开源的 Dubbo 作为核心进行融合,并以此为基础定义云原生场景中的关键特性,在集团部分电商业务上已经进入落地阶段,后续也会跟大家分享我们的实践经验。

如何看待 Dubbo 和 Spring Cloud 的关系?

长久以来,总有开发者喜欢将 Dubbo 与 Spring Cloud 进行比较,提到这两个名字的第一反应往往是应该选哪个,而不是二者如何配合使用。在北纬看来,这主要还是技术选型的问题,以及用户对随之而来的切换成本的顾虑。其实这是一种误解,两者的关系不是非此即彼。今天的 Dubbo 已经成为了  Spring Cloud Alibaba 中一个重要的技术组件,Dubbo 服务和 Spring Cloud 服务可以完美的互相调用。未来,Dubbo 3.0 进一步的简化了 Dubbo 和 Spring Cloud 混布场景中服务基础设施的部署。

如今,Spring Cloud 依托于 Spring 已经成为 Java 开发的标准框架,这是不争的

事实,并结合大量业界经验逐渐抽象出一套微服务通用架构模式标准。这套标准的好处在于可以让开发者非常便捷地进行微服务软件产品开发,且在整个 Spring 生态的加持下已经成为开发者的“一揽子”解决方案。

相较之下,Dubbo 是阿里对微服务领域持续实践的产品。在框架设计之初,扩展性、灵活性就被放在了一个很重要的位置,这也是为什么社区对 Dubbo 的热情一直高涨的原因。随着 Dubbo 恢复更新,其场景丰富程度与稳定性也有了非常大的提升,目前已经在多家头部公司大规模应用。

回到众多开发者对技术选型问题的顾虑:这两套框架并不是非此即彼。相反的,用户可以轻松的在这两套框架之间切换,甚至未来可以完美的在一起协同工作,这得益于 Spring Cloud Alibaba 的出现。

Spring Cloud 拥有一个强大的国际化社区,阿里巴巴作为社区里的重要成员,也贡献出了 Spring Cloud Alibaba 这套实现,这也是目前整个 Spring Cloud 体系下最完善并且在持续更新的实现方案。

Spring Cloud Alibaba 出现

现在的 Dubbo 2.7 已经可以很好的在 Spring Cloud 体系下工作。通过 Spring Cloud Alibaba 中 Dubbo 的集成,Spring Cloud 应用可以调用原生发布的 Dubbo 服务,Spring Cloud 发布的 Dubbo 服务也可以被原生的 Dubbo 客户端调用。这个得益于 2.7 中服务自省的实验性项目,以及 Spring Cloud 侧对 Dubbo 的适配。

在正在开展的 3.0 大版本中,这个实验性的项目进化为原生应用级服务注册机制。通过这个特性,未来 Spring Cloud 应用和 Dubbo 应用可以更加完美的混布。用户可以为 Spring Cloud 和 Dubbo 复用同一套服务发现、服务配置、和服务管理体系,为 Dubbo 和 Spring 互通需要额外搭建网关将成为过去式,用户可以零成本的在两者之间切换,或者视场景不同选择不同的框架,甚至可以在同一个应用中混用。在项目核心成员小马哥的努力下,Dubbo 与 Spring Cloud 混布场景中业界常规的 Proxy 集群终于去掉,整个体系的架构更加简单和稳定。在 Dubbo 3.0 版本中,整个团队会继续进化应用级服务注册的想法,期望通过这项工作让 Spring Cloud Alibaba 与 Dubbo 在注册数据的模型上达成高度统一,复用同一套服务注册中心,进一步简化混布场景中的架构。

“我们把选择的自由留给用户,这是 Dubbo 3.0 中的重要目标。”

此外,北纬整个团队也在积极发展 Spring Cloud Alibaba 生态。作为国内 Java 界最具影响力的团队之一,阿里中间件团队一直在密切关注 Spring 项目,通过 Spring 的封装提升阿里的中间件开发体验。采访中,北纬表示,阿里巴巴电商体系绝大部分应用已经实现 Boot 化。

“当 Spring Cloud 初具影响力的时候,我们主动通过 Spring Cloud 来集成阿里巴巴开源组件就变成一件自然而然的事情了”。目前,Spring Cloud Alibaba 已经支持 Nacos 作为服务注册中心、配置中心,Sentinel 作为限流,Seata 作为分布式事务组件,RocketMQ 作为分布式消息组件,当然还有 Dubbo 作为 RPC 组件,全面取代了已经宣布停止更新的 Spring Cloud Netflix 全家桶。另外,为了加速国内工程师对 Spring Initializr 的访问,团队还通过阿里云上托管的 start.aliyun.com 提供了快速生成 Spring Cloud Alibaba 应用的能力。

Dubbo 和 gRPC?

Spring Cloud 和 Dubbo 之间部分互补可能说的通,但 Dubbo 和 gRPC 确实是极为相似的。作为高性能、开源且通用的 RPC 框架,gRPC 多年来受到了众多开发者的欢迎和采纳。

相似就免不了被开发者比较,对此,北纬很坦然:“我们从不避讳 gPRC,它是一个令人尊敬的对手,是云原生基础设施之间通讯协议的事实标准。gRPC 的发展以及 gRPC 每年的会议,我们一直都有关注。”

“我们从 gRPC 身上学到最有价值的一点就是反思 Dubbo 2 中协议设计的不足,开始重视云原生支持领域里两个重要的问题:多语言支持和网关 /Mesh 解析友好。”采访中,北纬表示,在 Dubbo 3.0 中,新版本的协议是重中之重,除了解决上述两个问题,对 gRPC 协议的兼容也是新协议的设计目标之一。

在云原生时代,gRPC 作为 RPC 框架走在了前面,这一块短板在北纬看来是要尽快补齐的,而 Dubbo 的优势是不单单是一个 RPC,而且是一个有着强大治理能力的服务框架,可以这么说,Dubbo 是 gRPC with batteries。同时,Dubbo 在国内用户群体巨大,在业务向云原生技术迁移的历程中,Dubob 3.0 将可以发挥出巨大作用。

Dubbo 的未来发展

如今,社区中的很多开发者都对 3.0 版本期待已久。北纬表示,3.0 版本的主基调就是云原生支持,重点思考云原生友好的新一代 RPC 协议、应用级服务注册发现、K8s 原生服务发布、Mesh 控制面 xDS 协议对接以及分布式服务柔性等重磅级特性。

实际上,Dubbo 3.0 的功能会分阶段进行,目前应用级服务发现已经在内部和一些头部用户的场景做试点,后续随着项目的进展,团队会第一时间发布功能实现细节。“通过 Dubbo 3.0 的交付,我们期待带来一款向云原生迁移友好的,对云原生基础设施友好的新一代服务框架体系。”

3.png

面向未来,Dubbo 项目总的发展基调还是坚持合作开放的开源路线不动摇,追求更高质量和功能更完善的路线不动摇。目前,社区发展的重中之重是 Dubbo3.0 演进。在不久后的 9 月份, Dubbo3.0 应用级注册发现将在阿里巴巴内部和开源侧各公司落地。这不仅是 Dubbo 迈向云原生微服务的第一步,也是对接 K8s 注册发现和跨框架 RPC 互通的前提。

就应用方而言,从接口级注册发现到应用级注册发现可以显著降低注册中心和客户端的内存压力。今年双 11,云原生服务治理规则会把 Dubbo 多年以来在大规模高并发服务治理方面的最佳实践融入云原生。下一代协议将基于 http2/protobuf 带来更好的生态和 Reactive 的全面支持,柔性增强所涵盖的自适应策略和分布式负载均衡将会在性能和稳定性上带来更大的突破。北纬表示,在 Dubbo 3.0 发展过程中,急需更多高质量社区力量加入,共同打造下一代的服务框架。

回到 Dubbo 重启开源之时,生态相对薄弱。毕业 15 个月之后的今天,Dubbo 生态已经日益完善。

4.png
(如今 Dubbo 丰富的扩展实现)

比如,多语言支持已经达到 6 种,30+ 生态子项目。在 Dubbo 主动集成周边的同时,我们也被第三方开源项目 Spring Cloud Sleuth、Zipkin、Skywalking、Envoy、tengine 等主动集成。

5.png

“或许如今的生态还不够完善,但也是极大丰富了,我心中的完善是希望能够产出一个官方推荐的 Dubbo Stack,免除用户选择上面的烦恼。至于 Dubbo Stack 中是否都源自阿里,我倒是抱着顺其自然的态度,这还是需要数据说话,谁家的组件在生产系统中运用最广,我们就推荐谁。总的来说,这件事情的决定权在社区和 Dubbo 用户。”

嘉宾介绍

北纬,Dubbo 第二代掌门人,Apache Dubbo PPMC & Spring Cloud Alibaba 负责人。

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式ELK+KAFKA日志采集 docker-compose

文章目录一、安装docker-compose插件1. 下载docker-compose插件2. 赋予权限二、搭建ELKKAFKA环境2.1. 编写docker-compose2.2. 启动docker-compose2.3. 验证效果2.4. 安装logstash三、微信项目投递消息kafka3.1. 微信集成kafka3.2. 配置kafka3.3. aop拦截3.4. 消息投递3.5. 测试…

java安全编码指南之:基础篇

简介: 作为一个程序员,只是写出好用的代码是不够的,我们还需要考虑到程序的安全性。在这个不能跟陌生人说话世界,扶老奶奶过马路都是一件很困难的事情。那么对于程序员来说,尤其是对于开发那种对外可以公开访问的网站的…

Gartner:70%新应用由低代码开发,AI热潮后小数据崛起

作者 | 宋慧 出品 | CSDN云计算 头图 | 付费下载于东方IC 国际研究机构Gartner在近日发布了2021年十大数据和分析趋势。纵观这十个趋势,基本可以归纳为三类主题,分别是: 加速数据和分析变革:运用AI创新、经过改进的可组合性以及…

Sentinel 1.8.0 年度版本发布,熔断降级重构升级!

在经过数月的打磨后,Sentinel 1.8.0 版本正式发布!该版本是本年度最重要的版本之一,包含大量特性改进与 bug 修复,尤其是针对熔断降级特性的完善升级(支持任意统计时长、慢调用比例降级策略、熔断器事件监听&#xff0…

清华大学-美团数字生活联合研究院成立

转载自清华新闻网 4月12日,清华大学-美团数字生活联合研究院(以下简称“清华美团数字生活研究院”)揭牌仪式暨管委会第一次会议在清华大学举行。仪式上,清华大学副校长杨斌与美团联合创始人王慧文共同为联合研究院揭牌。 杨斌表…

SpringCloud 应用在 Kubernetes 上的最佳实践 — 高可用(熔断)

前言 阿里巴巴十多年的双十一,锤炼出来了一套业界领先的高可用技术,有一些已经商业化(云产品 PTS、AHAS),也有的开源了如:Sentinel、ChaosBlade。我们这一系列的高可用章节也主要介绍这方面的内容。今天介…

shadingjdbc实战分表分库

文章目录一、问题汇总1. 水平与垂直拆分之间的区别?2. 单表达到多大量开始进行分库分表?3. 基于客户端与服务端实现分表分库区别?4. 数据库分表分库策略有哪些?5. 自定义范围分表算法实现分表?二、整合ShardingSphere实现分表2.1…

阿里云机器学习怎么玩?这本新手入门指南揭秘了!

想知道我是怎样免费在阿里云上玩机器学习的吗? 不慌,这就告诉你答案~ 它来了--阿里云向个人免费开放云端深度学习开发环境DSW(DataScienceWorkshop),还有免费GPU资源可以使用,实验的数据还会免费保存30天&a…

华为庞鑫:闪存3.0时代,四大变化激发全闪存数据中心潜能释放

从2005年到2019年间,中国数字经济总体规模由2.6万亿元增加至35.8万亿元,数字经济在GDP的占比也由14.2%提升至36.2%。随着数字经济蓬勃发展,数据也成为当之无愧的关键生产要素,是基础性资源和战略性资源。数据洪流的到来进一步驱动…

基于RabbitMQ订单未支付30分钟自动取消

文章目录一、原理实现1. 超时消费流程图2. 死信队列的架构原理3. 订单超时30分钟实现原理二、核心代码实战2.1. 记录订单待支付数据2.2. 超时消费者监听2.3. 订单核对校验一、原理实现 1. 超时消费流程图 2. 死信队列的架构原理 相同点: 死信队列和普通队列区别不…

蚂蚁mPaaS:有人修建高楼,有人重构城市

简介: 纵览这时代的先声,在高楼之巅,在海天之外。 2018年2月,春运拉开序幕。 这是人类史上最大规模的迁徙活动,3.82亿人坐进车厢,被31万趟车次送往不同的目的地。如果有一台摄影机从高空对准中国大地&…

全场景闪存加速、全场景数据保护,华为助力医院实现智能化转型

数字经济时代的来临,是影响当今医疗健康服务领域最重要的大趋势。在这种大背景下,新时期的智能医疗必将在医疗行业内掀起一阵浪潮。2020年,新冠疫情的肆虐势必推进浪潮的提前到来。 首都医科大学附属北京同仁医院,始建于1886年&a…

从Cloudflare事件,看DNS服务的重要性

简介: 美国时间7月17日,美国知名的网络安全服务提供商Cloudflare,出现了突发网络服务故障。通过这个事件,和大家聊聊关于网络安全稳定的思考,以及稳定、安全的DNS服务的重要性。 7.17事件 美国时间7月17日下午&#…

基于Redis订单未支付30分钟自动取消

文章目录一、原理实现1. 超时消费流程图2. 订单超时30分钟实现原理二、核心代码实战2.1. 记录订单待支付数据2.2. redis配置2.3. 超时消费者监听一、原理实现 1. 超时消费流程图 2. 订单超时30分钟实现原理 ①用户下单之后,投递一个订单号码存放到redis服务端&…

面向 K8s 设计误区

作者 | 姬望来源 | 阿里巴巴中间件头图 | 下载于视觉中国K8s 设计模式Kubernetes 是一个具有普遍意义的容器编排工具,它提供了一套基于容器构建分布式系统的基础依赖,其意义等同于 Linux 在操作系统中的地位,可以认为是分布式的操作系统。自定…

安装docker-compose插件

文章目录一、安装docker-compose插件1. 下载docker-compose插件2. 赋予权限3. 验证一、安装docker-compose插件 1. 下载docker-compose插件 curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/…

突围数字化转型,让特步同比增长24.8%的全渠道中台

简介: 多年前,曾有媒体向丁水波提问:“对于你个人来说,转型过程中最痛苦的部分是什么?”“最关键的是市场意识的转变。耳听为虚眼见为实,做起来给外界看到了,他们才会明白和接受。很多东西得做完…

赠书 | 什么是 Knative?

作者 | 李志伟、游杨来源 | 华章计算机头图 | 下载于视觉中国✎ 导读 什么是Knative?本文将对Knative的产生背景及发展历程,架构设计,受众群体等做详细介绍。Knative是由谷歌发起,有Pivotal、IBM、Red Hat等公司共同参与开发的Ser…

canal kafka 实现mysql与es/redis 数据同步

文章目录一、原理实现1. 方案设计流程图2. 实现原理二、mysql开启binlog模式2.1. 配置my.ini2.2. 重启mysql服务2.3. 验证binlog模式2.4. 创建canal账号2.5. 账号验证三、docker-compose环境搭建3.1. 环境总览3.2. 编写docker-compose.yml3.3. 安装docker-compose3.4. 构建环境…

免费下载!《阿里工程师的自我修养》公开10位阿里大牛解决问题的思维方式

简介: 今天,阿里技术公布一波阿里P8、P9技术大牛的思维模型,将他们的思维模式呈现出来。你可以在阿里资深专家职业生涯的真切感悟中,找到应对危机的最佳方法。《阿里工程师的自我修养》现已正式公开,可免费下载阅读。 …