天天看点

RabbitMQ 多实例方式学习

rabbitMQ 实现多节点 其有三种模式:

单机模式

普通集群模式

镜像集群模式

一、单机模式:

单机模式,实际就是一个节点,只要该节点宕机,则mq 就挂了,系统也就会出问题,因此生产环境基本不会使用

二、普通集群模式:

即在多个服务器上部署多个 MQ 实例, 每台机器一个实例. 创建的每一个 queue, 只会存在一个 MQ 实例上. 但是每一个实例都会同步 queue 的元数据 (即 queue 的标识信息). 当在进行消费的时候, 就算 连接到了其他的 MQ 实例上, 其也会根据内部的 queue 的元数据, 从该 queue 所在实例上拉取数据过来.

这种方式只是一个简单的集群, 并没有考虑高可用. 并且性能开销巨大. 容易造成单实例的性能瓶颈. 并且如果真正有数据的那个 queue 的实例宕机了. 那么其他的实例就无法进行数据的拉取.

这种方式只是通过集群部署的方式提高了消息的吞吐量, 但是并没有考虑到高可用.

三、镜像集群模式:

这种模式才是真高可用模式. 与普通集群模式的主要区别在于. 无论 queue 的元数据还是 queue 中的消息都会同时存在与多个实例上.

跟普通集群模式不一样的是,在镜像集群模式下,无论队列中的元数据还是消息都会存在于多个实例上,就是说,每个 RabbitMQ 节点都有这个 队列的一个完整镜像。然后每次写消息到队列的时候,都会自动把消息同步到多个实例上

要开启镜像集群模式, 需要在后台新增镜像集群模式策略. 即要求数据同步到所有的节点. 也可以指定同步到指定数量的节点.

这种方式的好处就在于, 任何一个服务宕机了, 都不会影响整个集群数据的完整性, 因为其他服务中都有 queue 的完整数据, 当进行消息消费的时候, 连接其他的服务器节点一样也能获取到数据.

继续阅读