后端与中间件 · 教程

Rocket系列-入门

本文写于 2021 年,涉及的组件版本、配置与数据可能已过时,请按经验材料阅读并核对当前版本。原文链接与内容保持不变。

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.0
  • 2018年7月26日 4.3.0
  • 2019年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的相关概念。

最后

希望和你一起遇见更好的自己

配套资料 · 免费领取
本文属于「BACKEND」资料包范围:中间件源码阅读路线图。按 RocketMQ / Redis / MySQL 分章节的完整路线。
在公众号「方家小白」回复关键词 BACKEND 即可领取。全文无需关注即可阅读。
BACKEND