RocketMq高可用部署/消息高可靠性方案以及故障模拟

RocketMQ高可用思路

在实际生产环境中,一般需要服务达到高可用、无单节点故障的要求。在 rocketMq 中
就需要分布式部署。
RocketMQ的核心就是Broker的消息存储,而高可用的关键也在于Broker。因此,高可用方案可以参考一下推荐NameServer:因为NameServer是无状态的,所以只需要直接用集群 部署,只要由一台NameServer可用,那么集群就整体可用。Broker:实际存储消息的服务,服务不可用可能导致消息丢失推荐使用两主两从以上的集群配置此外Broker的主从配置有同步双写和异步双写,同步双写保证消息不会丢失,异步复制性能高,但是如果发现断电等瞬时故障导致主从同时宕机可能会丢失几条消息。正常情况异步复制一台机器发生故障不会丢失数据。

image.png

集群模式推荐配置

nameServer

无状态节点,直接部署多个实例即可

Broker

推荐使用双主双从,异步复制。对应配置文件:conf/2m-2s-async/目录下。如果偏向性能,则使用异步刷盘(数据落盘模式),异步复制(主从同步模式)。如果偏向消息高可靠,不在乎性能,则使用同步刷盘,同步双写。如果需求居中,则推荐异步刷盘,同步双写。以下是配置文件相关配置:同步刷盘/异步刷盘:flushDiskType=SYNC_FLUSH / ASYNC_FLUSH同步双写/异步复制:brokerRole=SYNC_MASTER/ASYNC_MASTER(注:如果是从节点这个字段则统一都是写SLAVE,主从复制策略只在主节点配置就可以)名词解释:同步刷盘/异步刷盘:指的是消息被写入内存的pagecache再存到磁盘的过程是同步还是异步
同步双写/异步复制:指的是消息在Broker主节点到从节点之间复制的过程是同步还是异步

主从模式下的故障情况与模拟结果

测试项目/消息场景发送消息发送消息过程中接收消费消息
停用一个namesrv不影响通信不影响通信不影响通信
停用全部namesrv影响通信不影响通信影响通信,启动任意的namesrv可恢复
停用单个master broker不影响通信不影响通信不影响通信
停用全部master broker影响通信影响通信,无法恢复不影响通信
停用一个slave broker不影响通信不影响通信不影响通信
停用全部slave broker不影响通信影响通信,数秒恢复不影响通信,数秒恢复
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值