一、集群架构模式

1、主备模式

主节点挂了,从节点提供服务,和activeMQ利用zookeeper做主备一样。

消费者通过HaProxy路由到master节点,如果master节点挂了会将slave升级为master,而后续master复活将成为slave节点。

实现RabbitMQ高可用集群,一般在并发和数据量不高的情况下,也称为Warren模式。

rabbitmq 镜像制作 rabbitmq镜像集群原理_rabbitmq


rabbitmq 镜像制作 rabbitmq镜像集群原理_数据中心_02

与主从模式区别:主从模式中从节点提供读功能,而主备模式中备用节点不提供,用来主节点挂了HaProxy切换备用节点作用。

2、远程模式

远距离通信和复制,可以实现双活的一种模式,简称Shovel模式,所谓Shovel就是我们可以吧消息进行不同数据中心的复制工作,可以跨地域的让两个MQ集群互联。

缺点:可靠性差,配置复杂

rabbitmq 镜像制作 rabbitmq镜像集群原理_rabbitmq_03


由于前面MQ服务过热,达到阈值,所以加上Shovel进行消息同步,提高订单确认速度,保证可靠性。

3、镜像模式、(业界主流)

镜像就是复制备份,高可靠,使用Erlang编写数据同步性能非常好。

Mirror镜像队列保证了数据100%不丢失,主要就是实现数据的同步,一般来讲2、3个节点实现数据同步;

实现简单,在互联网公司也都用这种模式;

确定:无法横向扩容。

rabbitmq 镜像制作 rabbitmq镜像集群原理_数据中心_04


运行原理:消息发送至主节点,然后消息同步到从节点,同步keepAlived负载均衡。

4、多活模式

异地数据复制的主流模式,双数据中心或多中心集群,依赖federation插件实现AMQP可靠性通信。

rabbitmq 镜像制作 rabbitmq镜像集群原理_java_05

RabbitMQ部署架构采用双中心模式(多中心),那么在两套或者多套数据中心各部署一套RabbitMQ集群,各中心的RabbitMQ服务除了需要的为业务提供正常的消息服务外,中心之间还需要实现部分队列消息共享。