RabbitMQ集群架构模式介绍

文章目录

  • 主备模式
  • 远程模式
  • 镜像模式
  • 多活模式
  • 相关链接

主备模式

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

RabbitMQ集群架构模式介绍_第1张图片

远程模式

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

RabbitMQ集群架构模式介绍_第2张图片

Shovel模式拓扑图:

RabbitMQ集群架构模式介绍_第3张图片

  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节点)

架构如下:

RabbitMQ集群架构模式介绍_第4张图片

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

多活模式

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

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

    RabbitMQ集群架构模式介绍_第5张图片

  • 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只接收具有订阅的消息,

    RabbitMQ集群架构模式介绍_第6张图片

相关链接

RabbitMQ入门与AMQP协议简介
RabbitMQ成员简介
RabbitMQ高级特性-消息可靠性投递
RabbitMQ高级特性-幂等性保障
RabbitMQ高级特性-Confirm确认消息
RabbitMQ高级特性-Return消息机制
RabbitMQ高级特性-消费端自定义监听
RabbitMQ高级特性-消费端限流
RabbitMQ高级特性-消费端ACK与重回队列
RabbitMQ高级特性-TTL队列/消息
RabbitMQ高级特性-死信队列(DLX)
Spring AMQP整合RabbitMQ
SpringBoot整合RabbitMQ
RabbitMQ集群架构模式介绍
从零开始搭建高可用RabbitMQ镜像模式集群
RabbitMQ集群恢复与故障转移
RabbitMQ-基础组件封装
Git代码地址


慕课网学习笔记

你可能感兴趣的:(分布式,中间件,RabbitMQ,消息队列,RabbitMQ)