RabbitMq 四种集群架构 区别

284 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天, 点击查看活动详情 

Rabbitmq 四种集群架构

1. 主备模式 
2. 远程模式
3. 镜像模式  
4. 多活模式

主备模式

主备模式: warren 兔子窝 一个主、一个备方案 主节点如果挂了 从节点提供服务 和Activemq 利用zk 做主/备一样 请添加图片描述 主备模式 -----------------------》HaProxy 配置

listen rabbitmq_cluster 
bind 0.0.0.0:5682 # 配置tcp 模式
mode tcp # 简单的轮询
balance roundrobin #主节点 
server bhz76 192.168.11.78:5672 check inter 5000 rise 2 fall 2 
server bhz76 192.168.11.79:5672 backup check inter 5000 rise 2 fall 2   #备用节点  

远程模式

远程模式 远距离通信和复制 可以实现双活的一种模式,简称 Shovel 模式 配置麻烦 现在使用不多 所谓Shovel 就是我们可以把消息进行不同数据中心的复制工作 ,可以跨地域的让两个mq 集群互联 请添加图片描述请添加图片描述

1.0 Step1 启动RabbitMq 插件  
​     rabbitmq-plugins enable amqp_client 
​     rabbitmq-plugins enable rabbitmq_shovel
2. 0 创建rabbitmq.config 文件
   touch /etc/rabbitmq/rabbitmq.config

请添加图片描述

镜像模式

集群模式非常经典的就是Mirror 镜像模式 保证100%数据不丢失 在实际工作中用的最多 并且实现集群非常的简单 一般互联网大厂 都会使用这样构建这种镜像集群模式 Mirror 镜像队列 ​ 高可靠 ----------》数据同步 ---》elang 交换机 ----》3节点 请添加图片描述缺点 :没有保证横向扩容

多活模式

这种模式也是实现异地数据复制的主流模式 因为Shovel 模式 配置比较复杂 所以一般来说实现异地集群都是使用这种双活或者 多活模型来实现的 这种模型需要依赖RabbitMq 的federation 插件 可以实现持续的可靠的Amqp 的数据通信 多活模式实际配置与应用非常简单 RabbitMq 部署架构采用双中心模式 多中心 那么在两套 或多套 数据中心中客部署一套 RabbitMq 集群 客中心的RabbitMq 服务除了需要为业务提供正常的消息服务外 中心之间还需要实现部分队列消息共享 请添加图片描述

Federation 插件

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

​ Federation Exchanges 可以看成Downstream 从Upstream 主动拉取消息 但并不是拉取所有消息 必须是在Downstream 上已经明确定义Bindings 关系的 Exchange 也就是有实际的物理 Queue 来接收消息 才会从Upstream 拉取消息组合在一起 ,绑定/解除绑定命令将发送到Upstream 交换机 因此 Federation Exchanges 只接收具有订阅的消息 请添加图片描述