# RocketMQ 介绍
截止 2021 年 9 月 1 日, RocketMQ 最新版本是 4.9.1 。
最新 Star 数为 1.5w . fork 数量是 8.4k .

# 发展历程
RocketMQ 的发展历程分为两部分, 2001 年开始 RocketMQ 的前身 Notify ,在 2016 年阿里将 RocketMQ 捐赠给 Apache 基金会中进行孵化。
# 在阿里
阿里巴巴消息中间件起源于 2001 年的五彩石项目, Notify 在这期间应运而生,用于交易核心消息的流转。
至 2010 年, B2B 开始大规模使用 ActiveMQ 作为消息内核,随着阿里业务的快速发展,急需一款支持顺序消息,拥有海量消息堆积能力的消息中间件, MetaQ 1.0 在 2011 年诞生。
到 2012 年, MetaQ 已经发展到了 MetaQ 3.0 ,并抽象出了通用的消息引擎 RocketMQ 。随后,将 RocketMQ 进行了开源,阿里的消息中间件正式走入了公众的视野。
到 2015 年, RocketMQ 已经经历了多年双十一的洗礼,在可用性、可靠性以及稳定性等方面都有出色的表现。与此同时,云计算大行其道,阿里消息中间件基于 RocketMQ 推出了 Aliware MQ 1.0 ,开始为阿里云上成千上万家企业提供消息服务。
到今年, MetaQ 在 2016 年双十一承载了万亿级消息的流转,跨越了一个新的里程碑,同时 RocketMQ 进入 Apache 孵化。
# Apache
2017年2月7日4.0.0版本,成为Apache项目之后的第一个版本。属于Apache的孵化项目。2017年6月8日4.1.0版本,2017年12月13日4.2.02018年7月26日4.3.02019年1月17日4.4.0版本2019年5月21日4.5.1版本2019年11月19日4.6.0版本2020年3月5日4.7.0版本2020年12月9日4.8.0版本2021年6月17日4.9.0版本2021年8月27日4.9.1版本
截止目前, RocketMQ 先后经历了 20 年的发展,承载这淘宝双十一万亿级消息的处理。
# Rocket 特性
RocketMQ 具有下面的功能特性:
- 订阅发布:这个是消息队里产品的基础功能。
- 支持事务型消息:指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败。
- 支持延时消息:指消息发送到
broker后,不会立即被消费,等待特定时间投递给真正的topic - 支持消息重试:
Consumer消费消息失败后,要提供一种重试机制,令消息再消费一次 - 支持消息过滤:
RocketMQ的消费者可以根据Tag进行消息过滤,也支持自定义属性过滤。 - 支持消息重放:生产者在发送消息时,同步消息失败会重投,异步消息有重试,
oneway没有任何保证。 - 支持流量控制: 分为生产者流控和消费者流控。生产者流控因为
broker处理能力达到瓶颈;消费者流控,因为消费能力达到瓶颈。 - 支持死信队列:死信队列用于处理无法被正常消费的消息.
在后面的学习中,我们也会着重的学习这几种特性。
# RocketMQ 的组成部分
Apache RocketMQ 是一个分布式消息和流媒体平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可伸缩性。它由四部分组成: NameServer 、 Broker 、 Producer 和 Consumer 。它们中的每一个都是可以集群方式部署,都可以水平地扩展,而不需要单个故障点。如下图。

# NameServer cluster
NameServer 提供轻量级服务发现功能和消息路由功能。 每个 Name Server 记录完整的路由信息,提供相应的读写服务,并支持快速存储扩展。
# Broker Cluster
Broker 通过提供轻量级的 TOPIC 和 QUEUE 机制来处理消息存储。它们支持 Push 和 Pull 模型,包含容错机制 ( 2 个或 3 个副本),并提供强大的峰值填充和以原始时间顺序积累数千亿条消息的能力。此外, broker 还提供了灾难恢复、丰富的指标统计信息和警报机制,这些都是传统消息传递系统所缺乏的。
# Producer Cluster
生产者支持分布式部署。分布式生产者通过多种负载平衡模式向 Broker 集群发送消息。发送进程支持快速故障和低延迟。
# Consumer Cluster
消费者也支持 Push 和 Pull 模型中的分布式部署。它还支持集群消费和消息广播。它提供了实时消息订阅机制,可以满足大多数用户的需求。
下一篇文章我们一起学习一下 关于 RocketMQ 的相关概念。
# 最后
希望和你一起遇见更好的自己
