概述今天主要分享RabbitMQ常见的4种集群架构,有待改进,大家一起看看吧!
01主备模式 也称为 Warren (兔子窝) 模式 。实现 rabbitMQ 的高可用集群,一般在并发和数据量不高的情况下,这种模式非常的好用且简单 。
也就是一个主/备方案,主节点提供读写,备用节点不提供读写 。如果主节点挂了,就切换到备用节点,原来的备用节点升级为主节点提供读写服务,当原来的主节点恢复运行后,原来的主节点就变成备用节点,和 activeMQ 利用 zookeeper 做主/备一样,也可以一主多备 。
文章插图
HaProxy 配置:
listen rabbitmq_clusterbind 0.0.0.0:567 # 配置 tcp 模式mode tcp # 简单的轮询balance roundrobin # 主节点 roundrobin 随机server 你的76机器 hostname 192.168.11.76:5672 check inter 5000 rise 2 fall 2server 你的77机器 hostname 192.168.11.77:5672 backup check inter 5000 rise 2 fall 2 # 备用节点 注意了,上面的 rabbitMQ 集群节点配置 # inter 每隔 5 秒对 mq 集群做健康检查,2 次正确证明服务可用,2 次失败证明服务器不可用,并且配置主备机制
02***模式 ***模式可以实现双活的一种模式,简称 shovel 模式,所谓的 shovel 就是把消息进行不同数据中心的复制工作,可以跨地域的让两个 MQ 集群互联,远距离通信和复制 。
Shovel 就是我们可以把消息进行数据中心的复制工作,可以跨地域的让两个 MQ 集群互联 。
文章插图
***模式
如图所示,有两个异地的 MQ 集群(可以是更多的集群),当用户在地区 1 这里下单了,系统发消息到 1 区的 MQ 服务器,发现 MQ 服务已超过设定的阈值,负载过高,这条消息就会被转到 地区 2 的 MQ 服务器上,由 2 区的去执行后面的业务逻辑,相当于分摊我们的服务压力 。
在使用了 shovel 插件后,模型变成了近端同步确认,远端异步确认的方式,大大提高了订单确认速度,并且还能保证可靠性 。
文章插图
shovel 模式拓扑图
如上图所示,当我们的消息到达 exchange,它会判断当前的负载情况以及设定的阈值,如果负载不高就把消息放到我们正常的 warehouse_goleta 队列中,如果负载过高了,就会放到 backup_orders 队列中 。backup_orders 队列通过 shovel 插件与另外的 MQ 集群进行同步数据,把消息发到第二个 MQ 集群上 。
不过这是 rabbitMQ 比较早期的架构模型了,现在很少使用了 。
03镜像模式 非常经典的 mirror 镜像模式,保证 100% 数据不丢失 。在实际工作中也是用得最多的,并且实现非常的简单,一般互联网大厂都会构建这种镜像集群模式 。
mirror 镜像队列,目的是为了保证 rabbitMQ 数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是 2 - 3 个节点实现数据同步 。对于 100% 数据可靠性解决方案,一般是采用 3 个节点 。
集群架构如下
文章插图
mirror 镜像队列
如上图所示,用 KeepAlived 做了 HA-Proxy 的高可用,然后有 3 个节点的 MQ 服务,消息发送到主节点上,主节点通过 mirror 队列把数据同步到其他的 MQ 节点,这样来实现其高可靠 。
04多活模式 这个也是实现异地数据复制的主流模式,因为 shovel 模式配置比较复杂,所以一般来说,实现异地集群的都是采用这种双活或者多活模型来实现的 。这种模式需要依赖 rabbitMQ 的 federation 插件,可以实现持续的,可靠的 AMQP 数据通信,多活模式在实际配置与应用非常的简单 。
rabbitMQ 部署架构采用双中心模式(多中心),那么在两套(或多套)数据中心各部署一套 rabbitMQ 集群,各中心的rabbitMQ 服务除了需要为业务提供正常的消息服务外,中心之间还需要实现部分队列消息共享 。
多活集群架构如下:
文章插图
federation 插件是一个不需要构建 cluster ,而在 brokers 之间传输消息的高性能插件,federation 插件可以在 brokers 或者 cluster 之间传输消息,连接的双方可以使用不同的 users 和 virtual hosts,双方也可以使用不同版本的 rabbitMQ 和 erlang 。federation 插件使用 AMQP 协议通信,可以接受不连续的传输 。federation 不是建立在集群上的,而是建立在单个节点上的,如图上黄色的 rabbit node 3 可以与绿色的 node1、node2、node3 中的任意一个利用 federation 插件进行数据同步 。
推荐阅读
- ipad屏幕镜像有什么用 ipad屏幕镜像是干嘛的
- iPhone手机镜像模式是什么意思
- 上海徐汇区公租房审核准入条件要多久?
- PS的镜像快捷键 ps镜像快捷键
- 苹果同一wifi下无法链接 苹果屏幕镜像搜索不到设备
- 苹果手机镜像怎么连接电视机 苹果手机镜像怎么连接电视
- 2022年苏州市区积分入学准入卡怎么领取
- 相城区积分入学排名名单 2022相城积分入学准入名单
- 华为镜像投屏在哪 华为镜像投屏怎么开启
- 苹果屏幕镜像怎么连接电视机 苹果屏幕镜像怎么连接电视