RocketMQ 集群高可用方案深度解析
RocketMQ 集群高可用
一、故障型高可用
多节点部署以便故障转移
如果Broker以一个集群的方式部署,会有一个master节点和多个slave节点,消息需要从Master复制到Slave上。而消息复制的方式分为同步复制和异步复制。
同步复制:
同步复制是等Master和Slave都写入消息成功后才反馈给客户端写入成功的状态,同步复制会增大数据写入的延迟,降低系统的吞吐量。
异步复制:
异步复制是只要master写入消息成功,就反馈给客户端写入成功的状态。然后再异步的将消息复制给Slave节点在异步复制下,系统拥有较低的延迟和较高的吞吐量。但是如果master节点故障,而有些数据没有完成复制,就会造成数据丢失。
RocketMQ 的主从架构中,Master 是消息的写入和读取主节点,而 Slave 主要是复制 Master 消息,用于容灾和故障转移。
二、容量型高可用
消息积压处理
RocketMQ 消息积压是指 Broker 中待消费消息堆积过多,消费者消费速度跟不上生产者发送速度。
处理方法主要包括:
1️⃣ 监控队列堆积指标,及时发现问题
2️⃣ 对生产者进行流控或延迟发送,缓解高峰
3️⃣ 扩容 Broker 节点、优化磁盘和网络性能
4️⃣ 配合死信队列 DLQ 处理多次消费失败的消息,防止失败消息无限积压
5️⃣ 增加消费者并行度或消费者数量,提高消费速度
对于顺序消息,要注意队列和线程一一对应,否则增加消费者线程未必能提升消费速度
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 zoloy's blog!
评论