RabbitMQ如何实现高可用
RabbitMQ一共具有三种模式:单机、普通集群、镜像集群
单机模式
单机模式,就是我们平常玩的demo,生产上肯定不能用。具体安装部署过程可以参考我的这篇文章:CentsOS原生RabbitMQ安装过程
普通集群
普通集群就是在多台机器上启动多个实例。每个队列只会存在其中的一个实例上,然后所有实例同步这些队列的元数据。消费者在进行消费的时候,如果连接的实例上恰好不是队列所在的实例,就会根据队列的元数据去队列所在实例上拉取数据
由此可知,集群模式并没做到分布式,如果队列所在的实例宕机了,会导致接下来其他实例就无法从那个实例拉取消息
所以集群主要是提高吞吐量的
关于集群模式的安装部署过程可以参考我的这篇文章:RabbitMQ集群安装
镜像集群
跟普通集群模式不一样的是,在镜像集群模式下,无论队列中的元数据还是消息都会存在于多个实例上,就是说,每个 RabbitMQ 节点都有这个 队列的一个完整镜像。然后每次写消息到队列的时候,都会自动把消息同步到多个实例上
如何开启镜像集群
首先镜像集群是在普通集群的基础上的,所以你要先搭建一个普通集群,然后在随意一个实例上执行如下命令创建一个策略即可开启
rabbitmqctl set_policy -p vhostName name “^xxqueue” '{“ha-mode”:“all”}'
name是策略的名字
xxqueue是需要匹配的队列名称,如果要匹配所有的话使用^