RabbitMQ集群架构模式

主备模式

实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常好用且非常简单。也称为Warren模式

只有主节点提供读写,从节点不能读也不能写,从节点在主节点出现故障宕机的时候,实现自动的切换,从节点变为主节点,当原先的主节点重新加入的时候,原先的主节点变为现在的从节点

可以一主多备

RabbitMQ集群架构模式

镜像模式

集群模式非常经典的模式,保证100%数据不丢失,在实际工作中用的最多

Mirror镜像队列,目的是为了保证RabbitMQ数据的高可靠性解决方案,主要是实现数据同步,一般来说2-3个节点实现数据同步(对于100%数据可靠性方案一般是3个节点)

RabbitMQ集群架构模式

多活模式

这种模式是实现异地数据复制的主流模式,这种模型以来RabbitMQ的federation插件,可以实现持续的可靠的AMQP数据通信,多活模式在实际配置与应用非常简单

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

RabbitMQ集群架构模式

Federation插件是一个不需要构建Cluster,而在Brokers之间传输消息的高性能插件,Federation插件可以在Brokers或者Cluster之间传输消息,连接双方可以使用不同的users和Virtual hosts,双方也可以使用不同版本的RabbiMQ和Erlang。Federation插件使用AMQP协议通讯,可以接收不连续的传输

Federation Exchanges,可以看出Downstream从Upstream主动拉取消息,但并不是拉取所有消息,必须在Downstream上已经明确定义Bindings关系的Exchange,也就是实际的物理Queue来接收消息,才会从Upstream拉取消息到Downstream。使用AMQP协议实施代理间通信,Downstream会将绑定关系组合在一起,绑定/解除命令将发送到Upstream交换机。因此,Federation Exchange只接收具有订阅的消息。