rabbitmq的多种集群模式;镜像集群模式自定义queue同步策略
Posted 好大的月亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rabbitmq的多种集群模式;镜像集群模式自定义queue同步策略相关的知识,希望对你有一定的参考价值。
概述
平時为了保证mq
的高可用,一般都会部署集群模式,不过对于rabbitmq
有多种集群模式,没有弄对的话容易埋坑。
- **单机模式:**风险大,生产一般没人使用。
- **普通集群模式:**虽然是集群,但是没有高可用。
- **镜像集群模式:**有高可用。
普通集群模式
mq
实例部署在多台服务器上。
如果创建了一个queue
,那么只会放在一台上面,其他的都是同步这个queue的元数据(即配置信息,可以路由到queue
所在机器)。
在消费的时候连接到非queue
所在服务器时,会根据保存的queue
元数据从它所在的实例上拉数据过来。如果此时queue
所在服务宕机了,那么就无法拉取消息,即使开启了消息持久化,也需要等其恢复后才能拉取数据。
这种模式虽然叫集群,让queue
分散在不同实例上,能减轻一些压力,但是在高可用要求上还是有点不太行。
镜像集群模式
此种模式和上面普通集群的区别在于,创建的queue
会同步到其他实例上,而且queue
里的消息也会同步到其他实例中。
简而言之就是每个mq
实例中都有queue
的完整镜像。每次写一个消息都会同步到其他实例中去。
优点:实现了高可用,避免一个实例挂了,导致某个queue
消费阻塞。
缺点:无法线性扩展,新增一台实例消息也全部会同步
过去(即包含了queue
的全部数据)。而且某些queue
的数据量非常大,可能导致磁盘无法容纳。
rabbitmq自定义queue同步策略
控制台配置位置
参数
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
-p Vhost: 可选参数,针对指定vhost下的queue进行设置
Name: policy的名称
#镜像配置的pattern 采用的是正则表达式匹配,也就是说会匹配一组符合要求的队列
Pattern: queue的匹配模式(正则表达式)
Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
all:表示在集群中所有的节点上进行镜像
exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
ha-params:ha-mode模式需要用到的参数
ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
priority:可选参数,policy的优先级
配置demo1同步到所有队列中
将_LOG
结尾的队列全部同步到其他mq实例中。
ha-sync-mode配置为automatic
在某个mq宕机重启后会自动拉取同步
配置demo2,同步到指定实例中
将QUEUE_开头
的队列同步到指定实例中
以上是关于rabbitmq的多种集群模式;镜像集群模式自定义queue同步策略的主要内容,如果未能解决你的问题,请参考以下文章