如何保证消息队列的高可用

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。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值