不少人曾问于某,到底是 dubbogo 还是 dubbo-go 才是正确拼写,个人通常的回答是,两个都对。 于雨 2016 年 3 月在位于上海张江的 张衡路与华佗路 交叉口的 盛大研发中心 工作时,公司大部分项目使用了 Java 技术栈,其中相当数量的服务使用了已经无人维护的 Dubbo v2.5.4-snapshot。公司老板陈大年【内部称呼 年总】觉得云原生时代来了,让大家用 Go 语言改造公司的 Java 项目。于是公司新项目纷纷使用 Go 进行构建,但面临一个很重要的问题:Go 语言服务与 Java 服务之间如何进行通信?
我们公司从 2015 年开始就使⽤ Dubbo 作为微服务框架,当社区推出 Dubbo 3 时,我们也⽴刻跟进并做了深⼊调研,发现 Dubbo 3 的应⽤/实例级服务注册和发现模式能够在一定程度上解决我们当前注册中⼼⾯临的压⼒,解决稳定性和安全性问题。同时 Dubbo 3 在服务治理上也做了升级,契合云原⽣架构,⽽且 Dubbo 3 能够向下兼容 Dubbo 2,这也将降低升级的成本和⻛险。 升级项目有了阶段性的进展,目前仍然在进行中。通过本⽂,我们对公司内部的 Dubbo 3 升级过程及收益等做了深⼊总结。
Dubbo 3.0 在阿里巴巴各条业务线包括淘宝、考拉、饿了么、钉钉、达摩院等已全量或开始分批上线,社区企业如小米、工商银行、平安健康等也纷纷引入了 3.0 版本的新特性。支持如此大规模的体量的业务平稳运行,对 Dubbo 3.0 的稳定性有很高的要求,尤其是考虑到社区极高的活跃度,这个挑战就更大了。目前社区有超过 600 位 contributor,近一年以来每天有大约 60 个 commits,陆续支持了 Triple 协议、多实例等功能,这些功能都会涉及到大量的代码变更。每一次提交代码的质量对 Dubbo 3.0 版本的质量、稳定性、可靠性等方面有着至关重要的影响。
2021 年是小米中国区电商部门变动调整较大的一年,小米中国区早期电商、服务体系建立在 Go 语言构建的微服务体系之上,由内部自研的 Go 语言微服务框架 koala 支撑起数以千计的微服务应用。随着业务的发展,新零售体系的成立以及业务中台普及与推广,我们更倾向于拥有丰富生态的 Java 为主的微服务体系技术选型,新项目及服务大多基于 Apache Dubbo、Spring Cloud 的微服务生态。