继业务全面上云后,今年双11,阿里微服务技术栈全面迁移到以 Dubbo3 为代表的云上开源标准中间件体系。在业务上,基于 Dubbo3 首次实现了关键业务不停推、不降级的全面用户体验提升,从技术上,大幅提高研发与运维效率的同时地址推送等资源利用率在一些关键场景提升超 40%,基于三位一体的 Dubbo3 开源中间件体系打造了阿里在云上的单元化最佳实践和统一标准,同时将规模化实践经验与技术创新贡献开源社区,成为微服务开源技术与标准发展的核心源泉与推动力。
面对百万规模的集群实例,实现关键链路不停推、资源利用率大幅提升的关键即是 Dubbo3 中新引入的应用级服务发现。接下来我们着重讲解 Dubbo3 应用级服务发现的详细方案,同时通过饿了么案例来说明其升级迁移过程。
饿了么自去年 11月份启动 Dubbo3 相关的升级工作,在此之前饿了么的服务框架是用的 是 HSF2,从 HSF2 到 Dubbo3 的总体升级过程经历了半年,目前已基本完成,有近 2000 个应用、10w 个节点已经跑在 Dubbo3 之上。
通过这次分享,主要想给大家同步饿了么的 Dubbo3 升级经验,为什么升级 Dubbo3、升级的具体流程以及中间遇到的问题、尤其是饿了么重点关注的应用级服务发现模型,如何完成了地址发现模型的升级以及最终效果。当然在此之前,我们先对 Dubbo3 及应用级服务发现做一个全面的介绍。
关于 Dubbo3 的简介,期望通过这部分带大家了解 Dubbo3 到底是什么,与 2.7 架构的主要区别是什么,提供了哪些特性、可以解决哪些实际的问题等;其中也包括大家都关心兼容性、升级成本以及与 HSF2 的关系等。
我们定义 Dubbo3 是下一代的云原生服务框架,但 3.0 架构到底都包含哪些内容那?
我们先一起看看 3.0 的一些核心设计原则:首先,从架构层面 Dubbo 是面向云原生设计的,支持超大规模的微服务集群实践 - 百万实例级别,期望通过智能化流量调度系统提升系统稳定性与吞吐量;在策略层面,Dubbo3 的内核将是毫无保留开源的,它将成为国内公有云事实标准的服务框架,得到各大公有云厂商的支持,并通过灵活的 SPI 扩展机制支持不同部署场景的定制化需求;而在业务价值上,Dubbo3 将显著降低单机资源消耗,提升全链路资源利用率与服务治理效率。
这就是 3.0 设计过程中遵循的核心原则或目标,让我们从一个更高的层面认识了 Dubbo3。
具体到选型 Dubbo3 框架,大家一定关心 Dubbo3 提供了哪些新功能,如果是 Dubbo 老用户的话,还关心 Dubbo3 的兼容性,总结起来就是 Dubbo3 的迁移成本以及其能带来的核心价值。
左边这部分是关于 Dubbo3 兼容性及来源的详细描述。首先 Dubbo3 是从其自身 2.0 架构演进而来,因此它继承了 2.0 几乎所有的特性,且保持了对 Dubbo2 的完全兼容,因此,老用户几乎可以零成本迁移到 Dubbo3。Dubbo3 是在企业实践经验的基础上演进而来,我们知道 Dubbo 最初是由阿里开源并贡献给 Apache 社区,而这一次,阿里也已将 Dubbo3 定位为其下一代服务框架,因此,Dubbo3 融合了 HSF2 的几乎所有服务治理特性,并且已经开始在阿里巴巴全面取代 HSF2 框架,这一点我们在后面企业实践部分还会讲到。
右边是 Dubbo3 提供的核心特性列表,主要包括四部分。
- 全新服务发现模型。应用粒度服务发现,面向云原生设计,适配基础设施与异构系统;性能与集群伸缩性大幅提升
- 下一代 RPC 协议 Triple。基于 HTTP/2 的 Triple 协议,兼容 gRPCÿ