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 架构

RocketMQ 介绍及核心概念_第1张图片
此图来自: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 安装部署及运行

你可能感兴趣的:(RocketMQ 介绍及核心概念)