面试系列MQ:消息堆积如何处理

当MQ中突发大量消息积压时,一种应急策略是临时扩容。首先修复consumer,然后创建新topic和queue,用临时consumer快速消费积压数据,并在多台机器上部署consumer以加速处理。待积压数据清理完毕后,恢复原有架构。

普通情况: 

1、后台定时任务每隔72小时,删除旧的没有使用过的消息信息
2、根据不同的业务实现不同的丢弃任务,选择不同的策略淘汰任务,例如FIFO/LRU等
3、消息定时转移,或者对某些重要的 TAG 型(支付型)消息真正落库

 突发大量消息在 mq 里积压了几个小时了还没解决

一般这个时候,只能临时紧急扩容了,具体操作步骤和思路如下:

1、先修复 consumer 的问题,确保其恢复消费速度,然后将现有 consumer 都停掉。
2、新建一个 topic,partition 是原来的 10 倍,临时建立好原先 10 倍的 queue 数量。
3、然后写一个临时的分发数据的 consumer 程序,这个程序部署上去消费积压的数据,消费之后不做耗时的处理,直接均匀轮询写入临时建立好的 10 倍数量的 queue。
4、接着临时征用 10 倍的机器来部署 consumer,每一批 consumer 消费一个临时 queue 的数据。这种做法相当于是临时将 queue 资源和 consumer 资源扩大 10 倍,以正常的 10 倍速度来消费数据。
5、等快速消费完积压数据之后,得恢复原先部署的架构,重新用原先的 consumer 机器来消费消息。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值