阿里分布式消息中间件RocketMQ-深入解析.docx

阿里分布式消息中间件RocketMQ-深入解析.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
阿里分布式消息中间件RocketMQ深入解析2012年,阿里巴巴开源其自研的第三代分布式消息中间件——RocketMQ。经过几年的技术打磨,使用RocketMQ技术的阿里目前可以在双十一当天承受万亿级消息容量。2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目。阿里称会将其打造成顶级项目。这是阿里迈出的一大步,因为加入到开源软件基金会需要经过评审方的考核与观察。坦率而言,业界还对国人的代码开源参与度仍保持着刻板印象;而Apache基金会中的342个项目中,暂时还只有Kylin、CarbonData、Eagle 和 RocketMQ 共计四个中国技术人主导的项目。2017年2月20日,RocketMQ正式发布4.0版本,专家称新版本适用于电商领域,金融领域,大数据领域,兼有物联网领域的编程模型。RocketMQ项目背后,究竟有怎样的技术内涵?缘何赢得了基金会的初步认可?入驻基金会可以给技术圈哪些启示?InfoQ带着这样的疑问对两位项目联合创始人进行了专访,内容整理如下。RocketMQ的由来 谈起RocketMQ的亮点,那不得不先提一下阿里巴巴消息引擎的演进史。阿里中间件消息引擎发展到今日,前前后后经历了三代演进。第一代,推模式,数据存储采用关系型数据库。在这种模式下,消息具有很低的延迟特性,并且很容易支持分布式事务。尤其在阿里淘宝这种高频交易场景中,具有非常广泛地应用。典型代表包括Notify、Napoli。第二代,拉模式,自研的专有消息存储。在日志处理方面能够媲美Kafka的吞吐性能,但考虑到淘宝的应用场景,尤其是其交易链路的高可靠需求,消息引擎并没有一味的追求吞吐,而是将稳定可靠放在首位。因为采用了长连接拉模式,在消息的实时方面丝毫不逊推模式。典型代表MetaQ。第三代,以拉模式为主,兼有推模式的高性能、低延迟消息引擎RocketMQ,在二代功能特性的基础上,为电商金融领域添加了可靠重试、基于文件存储的分布式事务等特性,并做了大量优化。从2012年开始,经历了历次双11核心交易链路检验。目前已经捐赠给Apache基金会。时至今日,RocketMQ很好的服务了阿里集团大大小小上千个应用,在双11当天,更有不可思议的万亿级消息流转,为集团大中台的稳定发挥了举足轻重的作用。不难看出,RocketMQ其实是伴随着阿里巴巴整个生态的成长,逐渐衍生出来的高性能、低延迟能够同时满足电商领域和金融领域的极尽苛刻场景的消息中间件。经历双11洗礼的英雄 2016年双十一,阿里巴巴内部的消息中间件全面拥抱RocketMQ的低延迟存储引擎。在备战期间,团队重点做了两件事情,优化慢请求与统一存储引擎;优化慢请求:这里主要是解决在海量高并发场景下降低慢请求对整个集群带来的抖动,毛刺问题。这是一个极具挑战的技术活,团队同学经过长达1个多月的跟进调优,从双十一的复盘情况来看,99.996%的延迟落在了10ms以内,而99.6%的延迟在1ms以内。优化主要集中在RocketMQ存储层算法优化、JVM与操作系统调优。更多的细节大家可以参考我们之前写的电子书章节《万亿级数据洪峰下的分布式消息引擎》[1]。统一存储引擎:主要解决的消息引擎的高可用,成本问题。在多代消息引擎共存的前提下,我们对Notify的存储模块进行了全面移植与替换。基于上述积极的技术准备,在16年双十一期间,阿里集团大约有1.2万亿级的消息流转总量,几乎是15年双十一大促的2倍。峰值期间,消息生产的吞吐在2000 w/s左右,消息消费的吞吐也近乎1500 w/s的量级。整个大促下来,用我们内部的话来说,如丝般顺滑。RocketMQ的技术概览 在我们看来,它最大的创新点在于能够通过精巧的横向、纵向扩展,不断满足与日俱增的海量消息在高吞吐、高可靠、低延迟方面的要求。目前RocketMQ主要由NameServer、Broker、Producer以及Consumer四部分构成,如下图所示。所有的集群都具有水平扩展能力,无单点障碍。NameServer以轻量级的方式提供服务发现和路由功能,每个NameServer存有全量的路由信息,提供对等的读写服务,支持快速扩缩容。Broker负责消息存储,以Topic为纬度支持轻量级的队列,单机可以支撑上万队列规模,支持消息推拉模型,具备多副本容错机制(2副本或3副本)、强大的削峰填谷以及上亿级消息堆积能力,同时可严格保证消息的有序性。除此之外,Broker还提供了同城异地容灾能力,丰富的Metrics统计以及告警机制。这些都是传统消息系统无法比拟的。Producer由用户进行分布式部署,消息由Producer通过多种负载均衡模式发送到Broker集群,发送低延时,支持快速失败。Consumer也由用户部署,支持PUSH和PULL

文档评论(0)

智慧IT + 关注
实名认证
内容提供者

微软售前技术专家持证人

生命在于奋斗,技术在于分享!

领域认证该用户于2023年09月10日上传了微软售前技术专家

1亿VIP精品文档

相关文档