既然用了MQ,那么面试官肯定会问你如何来保证可用性?
面试官心理剖析:
主要是看你了不了解MQ的高可用,如果你只是简单的用用,不考虑高可用,那么面试官会觉得你是挖坑的。
回答:
这里分两种类型的MQ来讲,一种是分布式的;还有一种是主从架构的;
(1)RabbitMQ的高可用性
rabbitmq有三种模式:单机模式,普通集群模式,镜像集群模式
1、单机模式
这个是你自己玩玩的,如果线上你使用了这个,那么面试你基本没戏
2、普通集群模式
MQ1里面保存queue的元数据和实际数据,MQ2里面保存了queue的元数据。如果客户端消费数据连到MQ2,但是实际数据在MQ1里面,那么MQ2会从MQ1中获取到数据,在返回给客户端。其实这种模式也是单机的,如果MQ1挂了,那么系统就不可用了
缺点:
1)会产生大量数据传输;
2)queue所在的节点宕机了,导致数据丢失,那么可用性就不能保证;
这个方案是不能保证可用性的。
3、镜像集群模式
生产者调用MQ1,MQ1会把queue的元数据和实际数据同步给MQ2,消费者不管消费哪个MQ,都可以获取到数据。就是其中一个宕机也不影响使用。
这个方案是RabbitMQ真正的高可用方案