RocketMQ 介绍及核心概念

RocketMQ 是阿里巴巴开源的分布式消息中间件。

RocketMQ 特点

  • 是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式等特点
  • Producer、Consumer、队列都可以分布式
  • Producer 向一些队列轮流发送消息,队列集合称为 Topic,Consumer 如果做广播消费,则一个 Consumer 实例消费这个 Topic 对应的所有队列,如果做集群消费,则多个 Consumer 实例平均消费这个 Topic 对应的队列集合
  • 能够保证严格的消息顺序
  • 支持拉(pull)和推(push)两种消息模式
  • 高效的订阅者水平扩展能力
  • 实时的消息订阅机制
  • 亿级消息堆积能力
  • 支持多种消息协议,如 JMS、OpenMessaging 等
  • 较少的依赖

RocketMQ 核心概念

  • Producer
    消息生产者,将业务系统生成的消息发送给消息代理(Broker),RocketMQ 提供了多种发送消息的模式:同步(synchronous)、异步(asynchronous)和单向(one-way)。

  • Producer Group
    消息生产者组,具有相同角色的消息生产者组合在一起,相同角色可以理解为生产同一类消息。

  • Consumer
    消息消费者,从消息代理(Broker)获取消息并将其提供给应用程序。又可以根据消息获取方式分为:
    (1) Pull Consumer
    积极主动地从消息代理(Broker)中拉取消息,一旦批量消息被拉出,用户应用便启动消息。
    (2) Push Consumer
    将拉动消息、消费进度和其它维护工作封装起来,留下一个回调接口给最终用户实现,这个接口在消息到达时会被执行。

  • Consumer Group
    消息消费者组,同消息生产者组类似,将具有相同角色的消息消费者组合在一起,相同角色可以理解为消费同一类消息。

  • Topic
    Topic 是消息的逻辑分类。

  • Message
    Message 是发送的信息载体,Message 必须指定 Topic,可以类比信件地址。Message 有一个可选的 Tag 设置便于过滤消息,还可以添加额外的键值对。

  • Message Queue
    Topic 会被分为一个或多个 Message Queue

  • Tag
    Tag 是 Topic 的进一步细分,为用户提供额外的灵活性。同一业务不同目的的消息可以拥有相同的 Topic 和不同的 Tag。

  • Broker
    Broker 是 RocketMQ 系统主要组件,接收来自消息生产者的消息,存储这些消息并为消息消费者拉动这些消息做准备,也存储消息相关元数据。

  • Name Server
    Name Server 为消息生产者和消费者提供路由信息。

  • Message Model
    消息模型:集群(Clustering)和广播(Broadcasting)

  • Message Order
    消息顺序:顺序(Orderly)和并发(Concurrently)

RocketMQ 架构

此图来自:http://rocketmq.apache.org/docs/rmq-arc/

RocketMQ 架构图中展示了四个集群:

  • NameServer 集群
    提供轻量级的服务发现及路由,每个 NameServer 记录完整的路由信息,提供相应的读写服务,支持快速存储扩展。有些其它开源中间件使用 ZooKeeper 实现服务发现及路由功能,如 Apache Kafka。
    NameServer是一个功能齐全的服务器,主要包含两个功能:
    (1) Broker 管理,接收来自 Broker 集群的注册请求,提供心跳机制检测 Broker 是否存活
    (2) 路由管理,每个 NameServer 持有全部有关 Broker 集群和客户端请求队列的路由信息

  • Broker 集群
    通过提供轻量级的 Topic 和Queue 机制处理消息存储。同时支持推(Push)和拉(Pull)两种模型,包含容错机制。提供强大的峰值填充和以原始时间顺序累积数千亿条消息的能力。此外还提供灾难恢复,丰富的指标统计数据和警报机制,这些都是传统的消息系统缺乏的。
    Broker 有几个重要的子模块:
    (1) 远程处理模块,Broker 入口,处理来自客户端的请求
    (2) 客户端管理,管理客户端(包括消息生产者和消费者),维护消费者的主题订阅
    (3) 存储服务,提供在物理硬盘上存储和查询消息的简单 API
    (4) HA 服务,提供主从 Broker 间数据同步
    (5) 索引服务,通过指定键为消息建立索引并提供快速消息查询

  • Producer 集群
    消息生产者支持分布式部署,分布式生产者通过多种负载均衡模式向 Broker 集群发送消息。

  • Consumer 集群
    消息消费者也支持 Push 和 Pull 模型的分布式部署,还支持集群消费和消息广播。提供了实时的消息订阅机制,可以满足大多数消费者的需求。

有关架构图中集群间交互方式的说明:
(1) Broker Master 和 Broker Slave 是主从结构,会执行数据同步 Data Sync
(2) 每个 Broker 与 NameServer 集群中所有节点建立长连接,定时注册 Topic 信息到所有 NameServer
(3) Producer 与 NameServer 集群中的其中一个节点(随机)建立长连接,定期从 NameServer 获取 Topic 路由信息,并与提供 Topic 服务的 Broker Master 建立长连接,定时向 Broker 发送心跳
(4) Producer 只能将消息发送到 Broker Master,但是 Consumer 同时和提供 Topic 服务的 Master 和 Slave 建立长连接,既可以从 Master 订阅消息,也可以从 Slave 订阅消息。

有关 RocketMQ 的更多资料可以参看:
Apache RocketMQ
RocketMQ on Github
阿里中间件团队博客之十分钟入门 RocketMQ

下一篇:RocketMQ 安装部署及运行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容