Kafka如何解决消息积压问题?


一、Kafka如何解决消息积压问题?

首先分析一下消息积压问题的原因,如果不是系统BUG导致的,那就需要优化消费端的逻辑,来提高消费速率。

如果是系统BUG导致的,那么需要先修复系统BUG,然后再做临时扩容来消费大量的积压消息,具体步骤如下:

  1. 修复消费端的BUG,保证消费端有消费能力(即正常处理)
  2. 新建一个临时Topic,并且扩容机器到n台
  3. 写一个分发程序,将原积压Topic的消息重新消费后重新写入临时Topic里
  4. 等临时Topic把积压消息消费完后,将临时Topic和临时申请的机器释放掉

二、Kafka如何避免消息积压问题?

生产端:可以使用轮询策略,避免partition之间数据差距太大
消费端

  • 增加partition并行消费,尽量一个consumer敌营一个partition
  • 解决消费端代码可能存在的BUG
  • 调整消费超时时间,避免消费过慢导致出现重平衡
  • 批量拉取多条消息消费,减少IO交互次数

文章作者: GaryLee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 GaryLee !
  目录