消息队列常见实战问题

本文探讨了消息队列如rabbitmq和kafka的高可用性实现,包括镜像集群和副本机制。同时,针对消息重复消费、丢失和顺序性问题,提出了幂等性设计、确认机制和分区策略。对于延时及过期失效,提出了应急处理方案,如新建topic、增加消费者和临时快速消费策略。
摘要由CSDN通过智能技术生成

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

一、rabbitmq的高可用

a.单机模式

b.普通集群模式(无高可用性)

    【连接获取数据方式】创建的queue只会放到一个mq上,消费的时候如果连接的另一个实例。那么需要去存放数据的queue拉取数据。

    【设置连接方式】

         1)随机 的获取实例连接所有的queue。缺点:有拉取数据的性能问题

         2)指定到有queue的mq上。缺点:单实例的性能瓶颈

     【事故处理方式】存放了queue的实例宕机了,未开启持久化的话,其它实例会拉取不到数据。开启了持久化的话,需要服务器恢复了才能继续使用。

c.镜像集群模式

      【存储数据的方式】创建的queue和queue里的消息都会存在于多个实例上,每次写消息都会自动把消息到多个实例queue进行消息同步。

       缺点:1.同步数据导致网络带宽压力和消耗很重。2.没有扩展性,新增的机器也包含了这个queue的全部数据。

       优点:一个机器坏了,其余机器可以顶上。

 二、kafka的高可用性

      【存放原理】每台服务器上会创建一个broker进程,每台机器+机器上的broker进程,就可以认为是kafka集群中的一个节点。创建一个topic可以指定三个partition。例如写三条数据可能会放到三个partition里面。

      【高可用机制】kafka 0.8以后是有高可用机制,副本机制,每个partition都会有一个副本。主的是leader,副本是follower,写和读数据都是从leader中。leader写入的时候会将数据同步到follower上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值