RabbitMQ集群架构模式介绍

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/love905661433/article/details/85450081

主备模式

  • 实现RabbitMQ的高可用集群, 一般在并发和数据量不高的情况下, 这种模型简单好用。主备模式也从称之为Warren模式
  • 主节点如果挂了, 从节点提供服务

主备模式

远程模式

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

远程模式

Shovel模式拓扑图:

Shovel模式拓扑图

  1. Shovel集群的配置, 首先需要启动RabbitMQ插件, 命令如下:

    • rabbitmq-plugins enable amqp_client
    • rabbitmq-plugins enable rabbitmq_shovel
  2. 创建rabbitmq.config文件 : touch /etc/rabbitmq/rabbitmq.config

  3. 源服务器和目标服务器都使用相同的配置文件(rabbitmq.config)

镜像模式

  • 集群中非常经典的就是Mirror镜像模式, 保证100%数据不丢失, 在实际工作中也是使用最多的。集群实现很简单
  • Mirror镜像队列, 目的是为了保证rabbitmq数据的高可靠性解决方案, 主要就是实现数据的同步, 一般来讲是2-3个节点实现数据同步(对于100%数据可靠性解决方案一般是3节点)

架构如下:

镜像模式

  • 上面的SpringBoot Application表示应用, 实际不一定是SpringBoot的

多活模式

是实现异地数据复制的主流模式, 因为Shovel模式配置比较复杂, 所以一般来说实现异地集群都是使用这种双活或者多活模式来实现的。这种模式需要依赖rabbitmq的federation插件, 可以实现持续的可靠的AMQP数据通信, 多活模式配置与应用都很简单

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

    多活模式

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

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

    Federation Exchange

猜你喜欢

转载自blog.csdn.net/love905661433/article/details/85450081