RabbitMQ 仲裁队列 -- 解决 RabbitMQ 集群数据不同步的问题

1.问题情景

        当我们搭建了一个 RabbitMQ 集群后是存在问题的,也就是数据不同步.我们可以来看下是什么问题

1. 1 添加队列

①:选择虚拟机(需要保证操作⽤户对当前虚拟机有操作权限)

②:设置队列名称

③:持久化队列

④:指定队列所在主节点,其他为从节点分别以 rabbit 节点和 rabbit2 节点添加两个队列

1.2 添加之后,可以看到三个节点都有队列了

1.3 往 testQueue 队列中发送⼀条数据(从任⼀节点都可以)

1.4 发送之后,观察 3 个节点的队列中均有消息

1.5 关闭主节点

root@hcss-ecs-2618:~# rabbitmqctl -n rabbit stop_app #rabbit为节点名称 
Stopping rabbit application on node rabbit@hcss-ecs-2618 ...
root@hcss-ecs-2618:~# 

关闭后可以看到 rabbit2 和 rabbit3 没有该队列的数据了,但是另⼀个队列不受影响

        也就是说,这个数据只在主节点存在,从节点没有,如果关闭的是 rabbit2,那么 testQueue2 的数据会消失 如何解决这个问题呢,就需要引⼊咱们的"仲裁队列"

2.仲裁队列(Quorum Queues)

        RabbitMQ 的仲裁队列是⼀种基于 Raft ⼀致性算法实现的持久化、复制的 FIFO 队列.

        仲裁队列提供队列复制的能⼒,保障数据的⾼可⽤和安全性.使⽤仲裁队列可以在 RabbitMQ 节点间进⾏队列数据的复制,从⽽达到在⼀个节点宕机时,队列仍然可以提供服务的效果.

Quorum Queues | RabbitMQ官⽅⽂档:Quorum Queues | RabbitMQ

        仲裁队列是 RabbitMQ 3.8 版本最重要的改动.他是镜像队列的替代⽅案.在 RabbitMQ 3.8版本问世之前,镜像队列是实现数据⾼可⽤的唯⼀⼿段,但是它有⼀些设计上的缺陷,这也是 RabbitMQ 提供仲裁队列的原因.经典镜像队列已被弃⽤,并计划在将来版本中移除.

2.1 Raft 协议介绍

什么是 Raft?

       &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小林想被监督学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值