RocketMQ分布式消息中间件:核心原理与最佳实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 RocketMQ的发展史与未来

"Apache RocketMQ is an open source distributed messaging and streaming data platform."

——Apache RocketMQ社区官网

Apache RocketMQ是一款开源的、分布式的消息投递与流数据平台。出生自阿里巴巴,在阿里巴巴内部经历了3个版本后,作为Apache顶级开源项目之一直到现在。在GitHub上有10000+star、5000+fork、170+contributors(在GitHub上提交代码并被采纳的开发者),目前的最新版本是2020年3月的4.7.0版本。

本节主要介绍RocketMQ的产生和成长过程。

1.4.1 RocketMQ的发展史

纵观Apache RocketMQ从开始发展到现在,和一个人的成长历程类似,如图1-7所示。

图1-7

1.RocketMQ的前世

和大部分组件产生的原因类似,阿里巴巴内部为了适应淘宝 B2C 的更快、更复杂的业务,2001年启动了“五彩石项目”,阿里巴巴的第一代消息队列服务Notify就是在这个背景下产生的。

2010 年,阿里巴巴内部的 Apache ActiveMQ 仍然作为核心技术被广泛用于各个业务线,而顺序消息、海量消息堆积、完全自主控制消息队列服务,也是阿里巴巴同时期急需的。在这种背景下,2011年,MetaQ诞生。

2.RocketMQ云化

2011年,LinkedIn将Kafka开源。2012年,阿里巴巴参考Kafka的设计,基于对MetaQ的理解和实际使用,研发了一套通用消息队列引擎,也就是 RocketMQ。自此才有了第一代真正的RocketMQ,2016年阿里云上线云RocketMQ消息队列服务。

自2001年到2012年,11年的实际使用、运维,和业务不断碰撞,才得以抽象并整理出一个真正的行业级产品,技术从来不简单,只是你看不见!

3.Apache RocketMQ“毕业”

2016年11月,阿里巴巴将RocketMQ捐献给Apache基金会。

Apache社区有一个很重要的理念:社区大于代码。虽然RocketMQ已经开源3年,在国内小有名气,而且在阿里巴巴被广泛应用并有较好的效果,但是依然不能达到 Apache优秀项目的标准。

在RocketMQ被捐献后,通过一系列的修改、评审、调整,悄悄升级至4.0版本,正式进入孵化阶段。

2017年09月25日,RocketMQ成功“毕业”(Apache社区项目孵化成功即为毕业),成为 Apache 顶级项目,它是国内首个互联网中间件在 Apache 的顶级项目,也是继ActiveMQ、Kafka后Apache家族中全新的一代消息队列引擎。

随着不断地更新升级,RocketMQ 的能力也越来越强大,如图 1-8 所示,这是阿里巴巴双11的消息量的部分统计,可以看出RocketMQ处理的消息量已经在万亿条级别。

图1-8

1.4.2 Apache RocketMQ的未来

2017年10月14日,分布式消息领域的国际标准OpenMessaging宣布加入Linux基金会。2018年,RocketMQ开发团队和社区着手思考Apache RocketMQ 5.0计划——研发Cloud Native,与OpenMessaging更加紧密地结合在一起。

2018年,可谓是RocketMQ蓬勃发展的一年,ACL、消息轨迹、DLedger等新特性被提交到社区,还有Spring Starter、CPP、Python、Go、NodeJS等多语言的客户端也相继面世。随着社区不断有新的贡献者加入,Flink、Spark、ELK、IoT等更多的周边产品会更加完善,如图1-9所示。

如果你想要贡献代码,需要怎么做呢?按照 Apache 的工作方式,如果想要向社区提交自己的创新或改进的想法,那么首先要发起一个RIP。

关于RIP(RocketMQ Improvement Proposal,RocketMQ改善提案),在Apache的社区文档中是这样解释的:在过去,我们希望同学们以提交GitHub Issue的方式添加一个新功能。这是一种非常棒的提交方式,但却不正规、不易追踪和管理,所以我们介绍RIP机制来替代提交新功能的流程。

RIPs面向用户和大版本的改进,而不是小改动。当大家在怀疑改动大小时,Committer (在GitHub上拥有代码合并权限的开发者)应该考虑RIP是否可以派上用场。

图1-9

怎么提交一个RIP呢?很简单,请参照如图1-10所示的流程。

图1-10

Apache RocketMQ——金融级消息队列,一个拥有亚毫秒级延迟、万亿级消息容量保证、高消息容错设计的中间件,在阿里巴巴、VIPKID、微众银行、民生银行、蚂蚁金服、滴滴等国内知名互联网公司的实践中,有着完美的表现。

随着RocketMQ 5.0的发布,借助OpenMessaging提供跨平台、多语言的能力,将会打通 Prometheus、ELK 等上游组件,通过消息、Streaming 等形式将数据扭转到 Flink、Elasticsearch、Hbase、Spark、Hbase等下游组件。届时整个生态体系将会更加完美、便捷。

目前国内关于 Apache RocketMQ 社区的开源工作和最新资讯主要都在钉钉群(21791227和21982288)中体现,大家可以进群了解和学习。