MQ学习——解决高可用、消息重复、消息丢失、消息顺序错乱、消息积压问题

本文是最近看儒猿技术窝视频做的一些笔记

高可用

面试题:如何保证消息队列的高可用?

RabbitMQ的高可用

RabbitMQ有三种模式:单机模式、普通集群模式、镜像集群模式。
在这里插入图片描述
在这里插入图片描述

kafka的高可用

在这里插入图片描述

消息重复

面试题:如何保证消息不被重复消费(如何保证消息消费时的幂等性)?
在这里插入图片描述
在这里插入图片描述

消息丢失

面试题:如何保证消息的可靠性传输(如何处理消费丢失的问题)?

在这里插入图片描述

消息顺序错乱

面试题:如何保证消息的顺序性?

rabbitMQ的消息错乱

在这里插入图片描述

在这里插入图片描述

kafka的消息错乱

在这里插入图片描述
在这里插入图片描述

消息积压

面试题:如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百完消息持续积压几小时,说说怎么解决?
在这里插入图片描述

像这种情况,只能操作临时紧急扩容了,具体操作步骤和思路如下:

(1)先修复consumer的问题,确保其恢复消费速度,然后将现有consumer都停掉

(2)新建一个topic,partition是原来的10倍,临时建立好原先10倍或者20倍的queue数量

(3)然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费者之后不做耗时的处理,直接均匀轮询写入临时建立好的10倍数量的queue

(4)接着临时征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的数据

(5)这种做法相当于是临时将queue资源和consumer资源扩大10倍,以正常的10倍速度来消费数据

(6)等快速消费完积压数据之后,得恢复原先部署架构,重新用原先的consumer机器来消费数据



如果想要详细了解的话,我觉得可以看石杉老师讲解的视频,真心不错。
附上链接:儒猿技术窝 | Java工程师面试突击第一季【免费】

猜你喜欢

转载自blog.csdn.net/weixin_43771998/article/details/111084654