前言
这是一个MQ的系列文章,主要由MQ的基础认识到深入了解,和针对不同业务对MQ的技术选型问题。通过文章了解不同MQ的各种区别,和使用MQ会存在的一些问题。
入门篇:MQ(消息队列)系列学习—MQ基础认识
基础篇:MQ(消息队列)系列学习—MQ组件优劣势比较
晋级篇:MQ(消息队列)系列学习—MQ如何保证消息队列高可用
在我们选择了一个技术框架后,我们不光要掌握它的日常使用,也要了解因为这个选型而出现的问题,并未这些问题做好相应的方法备案。而这些知识都是使用该组件会碰见的问题,也是面试必备的问题。
如何保证消息队列是高可用的?
在系统中引入了会导致系统的复杂程度增加,如果系统的中间件挂掉后会导致系统中有依赖的内容崩溃,那么保证系统的高可用性就是必不可少的。
在生产中,消息队列一般都是使用使用集群来实现高可用。但对于不同的MQ的会有不同的集群模式,如RabbitMQ的集群模式为单机模式,普通集群模式,镜像集群模式、RocketMQ的集群方式为多个master集群、多Master多Slave模式-异步复制、多Master多Slave模式-同步双写。
1 RabbitMQ实现高可用
1.1 普通集群(无高可用性,可提高吞吐量)
多台MQ上启动多个RabbitMQ的实例,你使用的queue只会在某一个RabbitMQ的实例上,但是每个实例都会去同步queue的元数据(就是一些配置信息,通过元数据就可以找到queue所对应的实例)。如果你消费的时候,如果连接了其他实例(其他实例中并没有queue需要的数据),那么当前实例就通过元数据,找到对应的实例中的queue然后进行拉取数据。<