前言
RocketMQ 是阿里巴巴在 2012 年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于 2017 年 9 月 25 日成为 Apache 的顶级项目。
作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时和高可靠等特性近年来已经也被越来越多的国内企业使用。
一、初识 RocketMQ
2011 年初,Linkin 开源了 Kafka 这个优秀的消息中间件,淘宝中间件团队在对 Kafka 做过充分 Review 之后,被 Kafka 无限消息堆积、高效的持久化速度等优点吸引了。
美中不足的的是,Kafka 主要定位于日志传输,对于使用在淘宝交易、订单、充值等场景下还有诸多特性不满足。所以,阿里的中间件团队重新用 Java 语言编写了 RocketMQ ,定位于全场景的可靠消息传输。
目前 RocketMQ 在阿里集团的应用生态里被广泛应用于订单、交易、充值、物流、消息推送、日志处理, binglog 分发等场景。
RocketMQ 对比 Kafka,虽然设计的思想上有借鉴,但在架构上做了减法,在功能上做了加法:
- 去掉 Zookeeper,使用 NameServer 来管理 Broker 集群,通信更方便;
- 有延时队列和死信队列,开箱即用,减化代码逻辑实现。
1.1基本模型
RocketMQ 主要由 Producer、Broker、Consumer 三部分组成。其中,Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。