rabbitmq 集群保证顺序消费_RabbitMQ集群的高可用

本文详细介绍了RabbitMQ消息的可靠性传输,包括队列持久化、手动ACK应答和发送端事务确认机制。接着讨论了如何在RabbitMQ中保证消息的顺序性,以及在集群中实现高可用,包括负载均衡和镜像集群的工作原理。集群通过单一节点持有队列数据,其他节点仅存储元数据,确保故障时队列能自动切换到镜像节点。负载均衡层使用HAProxy和Keepalived实现高可用的VIP漂移,确保服务连续性。
摘要由CSDN通过智能技术生成

前言:在讲集群高可用之前,先讲两个问题:

一,RabbitMQ消息可靠性传输

    1,队列持久化

    2,消费端的手动Basic.Ack应答机制

    3,发送端事务确认机制

          异步消息应答确认机制:发送到交换机时的确认,投递到队列后的确认。

二、RabbitMQ公平性的保证

    1,单生产者单消费者可以保证消息的顺序可达性

    2,使用的生产者的确认机制后因为消息的发送是异步的,每一个线程执行执行不同,则              无法保证消息达到Broker的的前后顺序

    3,生产端使用事务机制可以保证消息的顺序性

    4,消费端采用单消费者保证消息消费的顺序性

三、RabbitMQ集群保证高可用

1,原理:

5aa831ae574ce56131b508f81ad9e9ef.png

注意:

1)集群只会在单个节点而不是所有的节点上创建队列的进程并包含完整的队列消息,这样只有队列的宿主节点即所有者节点知道队列的所有信息,其他非所有者节点只知道队列的元数据和指向该队列存储在那个节点的指针。

2)节点有磁盘节点和内存节点,集群中建议需要保证有两个磁盘节点保证可靠性,其余可以设置为内存节点保证效率。

2,集群的负载均衡

    负载均衡层的软件是HAProxy,为了保证负载均衡层的高可用,我们需要使用到Keepalived软件,使用vrrp协议产生虚拟ip实现动态的ip漂移。

f8cf2ee95a1d571ddcd048228533dcad.png

820ae795fcb843efcf998ba407b82331.png

keepalived是以VRRP协议为实现基础的,VRRP即虚拟路由冗余协议。虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会定义向backup发送vrrp协议数据包, 当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

由于我们的虚拟IP是在Docker中产生的,而我们的应用程序是基于windows平台开发的,因此是无法直接使用docker容器中的虚拟ip,我们需要在宿主机上安装keepalived,让keepalived产生虚拟服务,后期我们访问HAProxy的时候,直接通过宿主机的虚拟服务去访问即可。

6e0642528a0b141af059d9dbfb529bac.png

3,RabbitMQ的镜像集群。

如果集群中的一个节点失效了,队列能自动的切换到镜像中的另一个节点上保证服务的可用性。工作模式如下:

788c72aee14eb4b5fc7a61eb094a9359.png

除发送消息(Basic.Publish)外的所有动作只会向master发送,然后master将命令的执行结果广播到各slave.如果消费者与slave建立订阅消息,slave会将请求转发,实际上也是消费的master的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值