当前位置: 首页 > 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的这种设计既保证了水平扩展能力(集群架构),又提供了高可用性(主从架构),是分布式消息中间件的典型架构设计。

http://www.xdnf.cn/news/546103.html

相关文章:

  • 深度解析 HDFS与Hive的关系
  • C#中使用SharpSvn和TortoiseSVN操作SVN版本控制系统的完整指南
  • FreeSWITCH 纯内网配置
  • 实现图片自动压缩算法,canvas压缩图片方法
  • Java 单元测试框架比较:JUnit、TestNG 哪个更适合你?
  • pycharm无法正常调试问题
  • 【蓝桥杯真题精讲】第 16 届 Python A 组(省赛)
  • 使用 GitHub Pages 部署单页面应用教程
  • ISCC 2025决赛 wp
  • 《深入解析 Django ORM 复杂查询优化:如何提升 SQL 执行效率》
  • 多通道振弦式数据采集仪MCU安装指南
  • SymPy | 获取表达式自由变量方法与因式分解
  • 王树森推荐系统公开课 排序04:视频播放建模
  • 代码随想录算法训练营第60期第四十二天打卡
  • 多类型RFID电子标签定制 助力行业精准化管理
  • Matplotlib imsave() 方法详解
  • 使用 ARCore 和 Kotlin 开发 Android 增强现实应用入门指南
  • STM32之定时器
  • 深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第三篇:Verilog实现I2C Master核
  • vscode 常用调试
  • 进程间通信(IPC): POSIX 消息队列
  • 【解决】SSH 远程失败之路由配置问题
  • CNBC专访CertiK联创顾荣辉:从形式化验证到AI赋能,持续拓展Web3.0信任边界
  • 2025 高级 Java 面试宝典 [特殊字符](先放题目后放答案)
  • Unity3D仿星露谷物语开发46之种植/砍伐橡树
  • 使用注解动态映射:根据实体List列表动态生成Excel文件
  • 音视频之H.265/HEVC速率控制
  • P1152 欢乐的跳
  • 第三个小程序动工:一款结合ai的菜谱小程序
  • LeetCode 1345. 跳跃游戏 IV(困难)