【RabbitMQ】4. RabbitMQ集群介绍

·  阅读 138

RabbitMQ提供两套集群架构,分别为:普通集群和镜像集群。

普通集群(副本集群)

20210916102923.png

官方是这样介绍的,RabbitMQ代理操作所需的所有数据 / 状态都将跨所有节点复制。这方面的一个例外是消息队列,默认情况下,消息队列位于一个节点上,尽管它们可以从所有节点看到和访问。要跨集群集中的节点复制队列,请参阅有关高可用性的文档(注意:本指南是镜像的先决条件)。

实际上在RabbitMQ中,Queue才是真正存储消息的,日后我们构建RabbitMQ集群可能有三个节点,一个Master节点,两个Slave节点。默认情况下,消息队列只位于Master节点上。Slave节点只能对Master节点的队列进行读操作,而不能进行写操作。而Master节点既可以对其队列进行读操作,也可以对其队列进行写操作。

这种集群也叫做 "主从复制" 集群,主节点真正去和生产者打交道,从节点只用来同步主节点的相应数据。从节点虽然能够备份主节点中所有的数据,但是不同数据的同步规则不相同。从节点只能实时同步主节点Exchange中的数据,不能实时同步主节点Queue中的信息。消费者可以订阅主节点,也可以订阅从节点,当订阅主节点时,可以获得Queue中实时的信息;订阅从节点时,从节点会自动去主节点中的Queue读取数据,由于多了一步操作,所以读取到的数据已经不是实时数据了。

该集群架构并不高可用,公司中使用的很少。虽然在该架构中,从节点可以减少消费者对于主节点的压力,但是如果当主节点忽然宕机,该集群无法进行故障转移,也就是从节点无法代替主节点成为新主节点,因为从节点虽然可以实时同步主节点的Exchange数据,并不能实时同步主节点的Queue数据,也就是说从节点的数据可能不是完整的。

镜像集群(镜像队列)

20210916121848.png

RabbitMQ中最经典的集群架构,基于普通集群构建。

镜像队列机制就是将队列在多个节点之间设置主从关系,消息会在节点之间进行自动同步,且如果其中一个节点不可用,并不会导致消息丢失或服务不可用的情况,提升MQ集群的整体高可用性。

该集群引入镜像的概念,从节点可以通过镜像去实时同步主节点中Queue的数据,可以真正做到消息百分百不丢失。由于从节点持有完整主节点数据,那么当主节点忽然宕机,从节点还可以代替主节点成为新主节点,从而实现失败的故障转移。

分类:
后端
分类:
后端