← 返回首页

Kafka 如何处理海量消息积压(Lag)?

临时扩容 Consumer:

如果当前 Consumer 数 < Partition 数:直接增加 Consumer 实例。

如果当前 Consumer 数 = Partition 数:

新建一个 Topic,Partition 数是原来的 10 倍(例如原 10 个,新 100 个)。

编写一个临时的转发 Consumer,只负责把旧 Topic 的消息快速拉取并不带业务逻辑地转发到新 Topic。

部署 10 倍数量的真实 Consumer 去消费新 Topic。

待积压清理完毕后,恢复原架构。

优化消费逻辑:检查消费者代码,是否进行了耗时 DB 操作或外部 API 调用,改为异步处理或批量处理。

丢弃非核心消息:如果是日志等非核心数据,可策略性丢弃部分消息以追赶进度。