Rabbitmq有两种部署模式:普通集群模式,镜像集群模式
一、普通集群模式
基本思想:Rabbitmq会在多台机器上启动实例,每台机器启动一个,生产者创建的queue只会放在一个Rabbit实例上,其他实例同步这个queue的元数据。对于消费者而言,好的情况是连接到的是queue所在实例,直接消费数据。不好的情况是消费者连接到的是非queue所在实例上,那么消费数据比较麻烦,需要从queue所在实例上拉取数据。
缺点:(1)没做到分布式
(2)消费者随机连接一个实例然后拉取数据,会有高昂的拉取数据开销,且造成集群内大量数据传输
固定连接queue所在实例会出现性能瓶颈。
(3)如果queue所在实例宕机,其他实例无法再拉取queue的数据。
二、镜像集群模式(高可用模式)
基本思想:生产者生产的消息发往一台实例的queue里,其他实例也会同步这台queue的元数据和数据。
缺点:(1)没做到分布式
(2)如果数据量巨大,每个节点都是包含相同数据,横向扩展不佳。
kafka高可用(是分布式)
基本思想:一个集群有多个节点,每个节点上启动一个broker。创建的topic划分为多个partition,每个partition都有分主备。
这多个partition分散在多个broker上。消费者和生产者只和partition的leader(主)通信
注意:kafka在0.8以前是没有HA机制,即某个broker宕机了,那么上面的partition丢失。
0.8以后增加了replication机制(副本机制),每个partition会有多份,然后会在多份里选举leader,其他为follower。