消息积压处理方法:紧急临时扩容
处理原理:先修复 Consumer 消费的问题,提升消费数据的速度,待数据被消费的差不多时,再将临时的 Consumer 都停掉,恢复到原先的架构。
具体步骤:
1. 新建一个 topic,partition 是原来的 10 倍,临时建立好原先 10 倍的 queue 数量。
2. 然后写一个临时的分发数据的程序,将这个程序部署上去来消费积压的数据,消费之后不做耗时的处理,直接均匀轮询写入临时建立好的 10 倍数量的 queue。
3. 接着临时征用 10 倍的机器来部署 Consumer,每一批 Consumer 消费一个临时 queue 的数据。
这种做法相当于临时将 queue 资源和 Consumer 资源扩大 10 倍,以正常的 10 倍速度来消费数据。
4. 等快速消费完积压数据之后,就得恢复原先部署的架构,重新用原来的 Consumer 机器来消费。
画图理解: