超级热门的面试八股文

超级热门的面试八股文
帅旋
关注
充电
IT宅站长,技术博主,共享单车手,全网id:arthinking。

如何保证消息队列的高可用

发布于 2024-03-14 | 更新于 2024-03-14

可以参考RocketMQ或者Kafka的高可用设计。

比如RocketMQ的,可以分为消费端的高可用和生产端的高可用:

  • 消费端的高可用:**Master Broker支持读和写,Slave Broker只支持读。**当Master不可用的时候,Consumer会自动切换到Slave进行读,也就是说,当Master节点的机器出现故障后,Consumer仍然可以从Slave节点读取消息,不影响消费端的消费程序。

  • 生产端的高可用:如果一个Master宕机了,要让生产端程序继续可以生产消息,为此需要部署多个Master节点,组成多个broker组。在创建Topic的时候,把Topic的不同消息队列分布在多个broker组中,即使某一个broker组的Master节点不可用了,其他组的Master节点仍然可用,保证了Producer可以继续发送消息。

另外高可用过程中,会涉及到很多问题,也是值得进一步思考的:

  • 发生故障转移之后,如何保证消息消费不丢失或者消息消费不重复?
  • 故障转移过程中,消息会丢失吗?
  • 生产者宕机了,发生消费Rebalance,如何保证消息消费不丢失或者不重复?

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/faqs/mq/how-to-ensure-high-availability.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。