面试题之Rabbitmq的集群镜像

本文介绍了RabbitMQ的集群模式,包括普通集群和镜像集群。普通集群适合提高吞吐量,但高可用性不足。镜像集群通过在多个节点同步消息,确保高可用性,但可能影响系统吞吐量。镜像集群采用选举算法,当master节点失效,最长消息队列的slave将成为新的master。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RabbitMQ集群高可用

RabbitMq集群模式分为两种:普通集群;镜像集群模式

普通集群模式

多台机器上启动多个RabbitMQ实例,每个实例中的exchange和queue都包含meta、contents、state等信息,exchange在集群中的每个节点都保存一份数据,但是queue不一样,queue在集群中对于contents只存储一份,其他节点只存储meta信息
也就是说:

  1. 对于publish,客户端任意连接集群的一个节点,转发给创建queue的节点存储消息的所有信息
  2. 对于consumer,客户端任意连接集群中的一个节点,如果数据不在该节点中,则从存储该消息data的节点拉取。
    可见当存储有queue内容的节点失效后,只要等待该节点恢复后,queue中存在的消息才可以获取消费的到

所以这个普通集群比较尴尬了,这就没有什么所谓的高可用性可言了,这方案主要是提高吞吐量的,就是说让集群中多个节点来服务某个queue的读写操作。高可用方面就差一点了
在这里插入图片描述

镜像集群模式

镜像集群是RabbitMQ高可用的一种模式,相对于普通集群模式,你创建的queue,无论元数据还是queue里的消息都会存在于多个实例上,然后每次你写消息到queue的时候,都会自动把消息到多个实例的queue里进行消息同步。
这样在单节点失效的情况下,整个集群仍旧可以提供服务。但是由于数据需要在多个节点复制,在增加可用性的同时,系统的吞吐量会有所下降。
在实现机制上,mirror queue内部实现了一套选举算法,有一个master和多个slave。

这样所有的操作都是对mastaer节点操作

  1. 对于publish,可以选择任意
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值