RocketMQ的运行架构

金歌  论坛元老 | 2025-4-27 20:42:09 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1814|帖子 1814|积分 5442

RocketMQ 是一款高性能、高可靠的分布式消息中心件,其运行架构设计为分布式、可扩展、高可用的模式。以下是 RocketMQ 的核心运行架构及组件说明:

  
  1. 核心组件

  RocketMQ 的架构重要由以下四个核心组件构成:
  (1) NameServer

  

  • 角色:轻量级的服务发现与路由管理组件(无状态,节点间不通讯)。
  • 功能

    • 管理 Broker 的注册与心跳检测,维护 Topic 与 Broker 的路由关系。
    • 为 Producer 和 Consumer 提供 Topic 的路由信息查询。

  • 特点

    • 多个 NameServer 实例组成集群,制止单点故障。
    • Broker 启动时向全部 NameServer 注册,并定时发送心跳。

  (2) Broker

  

  • 角色:消息存储与传输的核心节点,负责消息的长期化、投递和查询。
  • 功能

    • 消息存储:接纳顺序写盘(Commit Log)和索引(Consume Queue)结合的方式,保证高性能。
    • 主从架构

      • Master:处理读写哀求,支持同步/异步复制数据到 Slave。
      • Slave:备份数据,仅处理读哀求(如消耗掉队时的消息拉取)。

    • 支持事务消息、延伸消息、重试队列等功能。

  • 特点

    • 通过 Broker 集群实现水平扩展和高可用。
    • 每个 Topic 分别为多个队列(Queue),分散到不同 Broker。


  (3) Producer

  

  • 角色:消息生产者,向 Broker 发送消息。
  • 功能

    • 根据 NameServer 提供的路由信息选择目标 Broker 和 Queue。
    • 支持同步、异步、单向发送模式。
    • 支持消息发送重试机制。

  • 特点

    • 支持消息 Sharding(如按 Key 哈希选择 Queue)。
    • 可通过事务消息保证分布式事务的最终一致性。

  (4) Consumer

  

  • 角色:消息消耗者,从 Broker 拉取消息并处理。
  • 功能

    • 根据消耗模式(集群消耗或广播消耗)订阅消息。
    • 支持 Push 模式(长轮询)和 Pull 模式。
    • 维护消耗进度(Offset),支持顺序消耗。

  • 特点

    • 消耗者组(Consumer Group)内负载平衡,组内消耗者分摊 Queue。
    • 消耗失败时触发重试机制,最终进入死信队列(DLQ)。

  
  2. 消息流转流程

  

  • 启动与注册

    • Broker 启动时向全部 NameServer 注册。
    • Producer/Consumer 启动时从 NameServer 获取路由信息。

  • 消息发送

    • Producer 根据路由信息选择 Broker 和 Queue,发送消息到 Broker。
    • Broker 将消息写入 Commit Log,并天生索引(Consume Queue)。

  • 消息消耗

    • Consumer 从 Broker 拉取消息,处理成功后提交 Offset。
    • 若消耗失败,消息进入重试队列,多次失败后进入死信队列。

  
  3. 高可用机制

  

  • Broker 主从同步

    • 同步复制(Master-Slave 数据强一致)或异步复制(高性能)。
    • Master 故障时,Slave 可切换为新的 Master(需人工或自动触发)。

  • NameServer 集群:多节点摆设,无状态设计,任一节点故障不影响服务。
  • 消息长期化:消息写入磁盘,防止数据丢失。
  
  4. 扩展性与负载平衡

  

  • Topic 分片:将 Topic 分别为多个 Queue,分散到不同 Broker。
  • 消耗者负载平衡:同一 Consumer Group 内的消耗者分摊 Queue。
  • Broker 集群扩展:通过增加 Broker 节点提升吞吐量。
  
  5.容错机制

  

  • 自动重试机制(消息发送/消耗):
  • 故障broker转移
  • 消耗者自动重新平衡队列分配
  5. 特别功能支持

  

  • 事务消息:通过两阶段提交(半消息 + 事务状态回查)实现分布式事务。
  • 顺序消息:通过锁定特定 Queue 保证消息顺序。
  • 延伸消息:支持预设延伸级别,消息定时投递。
  • 消息过滤:基于 Tag 或 SQL 表达式过滤消息。
  
  6. 典范摆设架构

  1. [Producer]  --> [NameServer Cluster]
  2.                   ↑    ↓    ↖
  3. [Broker Master] ←→ [Broker Slave]
  4.                   ↙    ↓    ↘
  5. [Consumer]  --> [NameServer Cluster]
复制代码

  总结

  RocketMQ 的架构通过 NameServer 实现解耦,Broker 主从设计保障高可用,生产者与消耗者的分布式摆设支持水平扩展。其高性能、可靠性和丰富的功能(如事务、顺序消息)使其实用于电商、金融等对消息一致性要求高的场景。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表