当前位置: 首页 > news >正文

Rocketmq broker 是主从架构还是集群架构,可以故障自动转移吗

RocketMQ Broker的架构与故障转移机制

RocketMQ的Broker架构同时采用了主从架构集群架构,并且支持故障自动转移。下面详细说明:

一、架构类型

1. 集群架构

  • RocketMQ天然支持分布式集群部署

  • 一个RocketMQ集群包含多个Broker组(每组有主从)

  • 不同Broker组之间是集群关系,共同提供服务

2. 主从架构(每组Broker内部)

  • 每个Broker组内部采用主从架构

  • 包含1个Master Broker和1个或多个Slave Broker

  • 主从之间数据同步方式:

    • 同步复制(强一致性)

    • 异步复制(更高性能)

二、故障自动转移能力

1. 主从切换(自动故障转移)

  • 当Master宕机时,Slave可以自动或手动提升为新的Master

  • 自动切换条件:

    • 配置了brokerRole=SYNC_MASTER(同步复制模式)

    • Slave与Master数据同步状态良好

    • NameServer检测到Master不可用

2. 消费者自动重试

  • 消费者会自动检测Broker故障

  • 自动连接到可用的Broker(Slave或其他Master)继续消费

3. 生产者自动发现

  • 生产者定期从NameServer获取最新的路由信息

  • 自动发现可用的Broker节点

三、典型部署架构示例

复制

下载

+-------------------+     +-------------------+
|   Broker Group 1  |     |   Broker Group 2  |
|  +-----+ +-----+  |     |  +-----+ +-----+  |
|  |Master| |Slave|  |<--->|  |Master| |Slave|  |
|  +-----+ +-----+  |     |  +-----+ +-----+  |
+-------------------+     +-------------------+^  ^                     ^  ^|  |                     |  |v  v                     v  v
+-------------------+     +-------------------+
|   NameServer      |     |   NameServer      |
|   (集群部署)       |     |   (集群部署)       |
+-------------------+     +-------------------+

四、故障转移流程

  1. 故障检测

    • NameServer定期(默认10秒)检测Broker存活状态

    • Slave会检测Master的心跳

  2. 主从切换

    • 当Master不可达超过一定时间(默认30秒)

    • Slave自动或手动(取决于配置)接管成为新Master

  3. 路由更新

    • NameServer更新路由信息

    • 生产者和消费者从NameServer获取新路由

五、配置要点

  1. 启用高可用:

properties

复制

下载

brokerRole=SYNC_MASTER  # 同步复制模式才能自动故障转移
  1. 建议配置:

  • 至少部署2个Broker组(每组1主1从)

  • 部署3个及以上NameServer节点

  • 使用同步复制模式保证数据安全性

六、注意事项

  1. 异步复制模式下自动故障转移可能丢失少量数据

  2. 自动切换后需要人工介入修复原Master

  3. 跨机房部署时需要考虑网络分区问题

RocketMQ的这种设计既保证了水平扩展能力(集群架构),又提供了高可用性(主从架构),是分布式消息中间件的典型架构设计。

相关文章:

  • Android Edge-to-Edge
  • C++ Pimpl(Pointer to Implementation)设计思想
  • 香港科技大学广州香港科技大学硕博士研究生学位项目宣讲会(智能制造硕博士物理学硕士)—深圳大学专场
  • TuyaOpen横空出世!涂鸦智能如何用开源框架重构AIoT开发范式?
  • PostgreSQL简介安装
  • 分频电路设计
  • WIFI信号状态信息 CSI 深度学习之数据集
  • taro 小程序 CoverImage Image src无法显示图片的问题
  • 顶级流媒体服务商 Spotify 2025.04 故障复盘报告,吃他人的堑长自己的智
  • Python + moviepy:根据图片或数据高效生成视频全流程详解
  • mac .zshrc:1: command not found: 0 解决方案
  • Java操作Elasticsearch 之 [Java High Level REST Clientedit]
  • MongoDB 学习(三)Redis 与 MongoDB 的区别
  • 外部因素导致的 ADC误差来源分析
  • python训练 60天挑战-day31
  • cmw500测gps抗干扰能力测试方法及注意事项
  • 高阶数据结构——AVL树的实现(详细解答)
  • [自动化集成] 使用明道云上传附件并在Python后端处理Excel的完整流程
  • sqlite的拼接字段的方法(sqlite没有convert函数)
  • SQL次日留存率计算精讲:自连接与多字段去重的深度应用
  • 王毅会见美国亚洲协会会长康京和
  • 建立双城双向科创项目孵化机制,2025沪港创新项目评选启动
  • 一周人物|收藏家瓦尔特捐出藏品,女性艺术家“对话”摄影
  • 大学2025丨苏大教授王尧:文科最大的危机是阐释世界的能力弱化
  • 上海将建设万兆小区、园区及工厂,为模型训练数据的传输提供硬件支持
  • 海外考古大家访谈|冈村秀典:礼制的形成与早期中国