阿里重启维护Dubbo了

作者 雨多田光

2012年,阿里巴巴在Git Hub上开源了基于Java的分布式服务治理框架Dubbo,之后它成为了国内该类开源项目的佼佼者,许多开发者对其表示青睐,同时,先后有不少公司在实践中基于Dubbo进行分布式系统架构。目前在Git Hub上,它的fork、star数均已破万。

今年9月底,同为阿里开源的项目Rocket MQ被Apache社区接纳为顶级项目;10月中旬,Open Messaging、Apsara Cache等全球化开源项目在阿里云栖大会正式公布;同时,Dubbo也被列入重点维护开源项目,期望继续保持快速发展的态势。

阿里这一系列开源项目的成绩,让人们看到了它对于开源这件事的重视,重启维护Dubbo的背后,有什么样的思考呢?InfoQ就此采访了Dubbo负责人、阿里巴巴中间件高级技术专家罗毅。

InfoQ:为什么重启维护?有哪些因素在驱动着?

罗毅:Dubbo自开源以來,深受国内友商和开源爱好者的青睐,虽然一直陆续在维护,但是由于Dubbo用户群体庞大,日常维护根本无法完全满足社区的旺盛需求。随着集团内部技术水平的迅速发展,如今不仅能够保证集团及客户的系统高效运行,还能抽调更多精力将技术赋能给全社会。

开源就是阿里巴巴集团在技术层面赋能的重要领域。阿里巴巴中间件团队今后不仅要聆听社区的声音,及时修复问题,及时合并优秀的pull request,还会力争将Dubbo打造成有国际影响力的RPC框架。

从集团层面看,阿里为国内甚至国际开源社区贡献了大量优秀开源项目,如大家熟知的Rocket MQ、JStorm、Fastjson、Dubbo、Weex等。在今年的云栖大会上,阿里集团公开宣布了将加大技术投入、拥抱开源的发展策略。正是由于以上几个原因,阿里巴巴中间件团队决定Dubbo的下一步计划是持续发展,并走向国际化。

InfoQ:我们知道阿里内部现在基本上没有在使用Dubbo,而是用了Dubbo之后开发的第三代RPC服务框架HSF(High-speed Service Framework),那现在还将Dubbo重启维护,大家不免疑惑。

罗毅:Dubbo和HSF都是阿里巴巴集团自研的RPC服务框架,在不同时期都很好的支持了集团业务的发展。目前,HSF2主要服务于集团内部业务,而Dubbo2主要以开源的形式服务社会,它们之间的关系与Google内部使用的Stubby和开源的g RPC类似。

从功能及使用方式上来说,HSF2和Dubbo2都是十分优秀的RPC框架,都能很好地满足搭建分布式服务化系统的诉求。内部坚持使用HSF2而不是开源版本的Dubbo2与业务属性和规模有关。

此外也出于以下几方面的考虑:内部统一技术框架、统一运维方面的诉求,应用迁移成本,内部服务注册发现、配置推送以及链路追踪等外围系统的集成度等。总的来说,HSF2在服务治理、超大规模集群、多机房几个方面比Dubbo2更有优势,并且在使用层面保持了对Dubbo2的兼容性。

为什么我们还要重启Dubbo的维护呢?

道理和Google开源g RPC是一样的。开源不仅仅是赋能社会的方式,我们也可以通过社区反馈提升产品和技术能力。

Dubbo2作为一款优秀的开源产品,由于面向的用户群体非常广泛,这就决定了它的设计原则强调扩展性、使用轻量、以及对开源外围系统和协议的适配。通过开源社区的建议,目前Dubbo已经具备了一些特有功能,例如对REST的支持和对Spring Boot的集成。

值得注意的是,目前负责Dubbo的团队和内部负责HSF的是同一个团队,在聆听外部用户反馈之余,我们也会把大规模领域里的服务运维经验反哺回Dubbo社区,形成良性循环,做到真正意义上的内外统一。

InfoQ:那这么多年过去了,现在Dubbo在同类型项目中还存在优势吗?

罗毅:Dubbo目前在Git Hub上有超过12000个star和超过10000的fork数,仍然是国内影响力最大的开源项目之一。这其中有两个重要因素,一个是RPC领域相对成熟,自Dubbo开源的第一天起,框架里已经融合了阿里巴巴服务化改造进程中沉淀下来的诸多宝贵经验。

其二是Dubbo设计上十分提倡可扩展性,在框架内置功能不能满足业务诉求甚至过时的情况下,用户可以选择自行扩展。这一点,从友商给我们提交来的pull request中可以明显感受到,优秀的框架设计本身就可以很好的支持用户千变万化的需求。

Dubbo维护重启后,3个月内连续发布3个维护版本,不仅修复了优雅停机、注解配置等一些框架缺陷,还新增了Netty4通信模块和线程堆栈dump特性等。在框架稳定性上已经有了大幅提升,今后Dubbo将持续保持快速迭代更新,以满足用户的各种需求。

InfoQ:如您所说,这个开源项目,很多代码贡献者和框架采用者其实提交了不少有意义的反馈,近期Dubbo官方一连给出的这三个版本更新,其中意义最大、大家最想看到的更新内容是什么呢?

罗毅:的确,作为国内使用面最广的服务框架的代表,很多用户都贡献了在使用过程中发现的问题和建议。我们目前优先级最高的任务就是在其中遴选社区关注度最高的问题和建议优先给予支持,其中包括issue的修复、第三方依赖的升级、新技术新规范的适配、以及功能上的优化等。

已经发布的版本中我们筛选了社区反馈的框架缺陷、pull request等,按照优先级顺序修复,保证框架的可用性和稳定性,并同时更新了主页(http://dubbo.io/)和文档(http://www.gitbook.com/@dubbo)。最近即将发布的版本中完善了注解形式的配置、Docker环境中部署的问题等几个社区呼声较高的需求。

目前团队最大的任务就是活跃社区,聆听用户的声音,已经发布的三个版本以及未来的几个维护版本都是围绕这个话题进行。

InfoQ:阿里对Dubbo接下来的发展有怎样的计划?能否给大家一个清晰的视图?

罗毅:主力开发以阿里巴巴中间件团队为主,优先吸纳集团内部对Dubbo开源有热情的开发同学,同时积极与国内大量使用Dubbo框架的友商联系。一方面是合并大家的建议,对呼声最高的建议进行性能提升,另一方面是寻求共建开源项目的资源。总的来说,项目方面会以阿里内部专门的团队为主,并积极发展社区中的committer。

在活跃社区的前提下,我们会继续在Dubbo框架现代化、国际化这两个大的方向上进行探索。现代化方面主要是考虑到目前微服务架构以及容器化日渐流行的大趋势,Dubbo作为RPC框架如何很好地融入其中,成为其生态体系中不可或缺的一个组件。

这里就不得不提到目前的一些文章在谈到微服务的时候总是拿Spring Cloud和Dubbo来对比,需要强调的是Dubbo未来的定位并不是要成为一个微服务的全面解决方案,而是专注在RPC领域,成为微服务生态体系中的一个重要组件。至于大家关注的微服务化衍生出的服务治理需求,我们会在Dubbo积极适配开源解决方案,甚至启动独立的开源项目予以支持。

对于国际化方面的思考是虽然Dubbo在Git Hub上非常受欢迎,但是受众主要来自国内各友商以及个人开发者,希望将来能够将用户拓展到全球,代表国人在RPC领域与g RPC、Finagle等竞争。

最后,感谢InfoQ对Dubbo开源项目的关注。有关Dubbo项目今后的发展,还请密切关注Git Hub上的Release Notes以及Dubbo的云栖社区专栏。