增强消费能力
Kafka 堆积 ≠ Kafka 挂了,而是生产速度 > 消费速度,持续一段时间后的必然结果。

首先,应提升消费者的处理速率,常见措施,包括:
增加消费者实例数量(扩展消费组分区并行度);
提高单消费者的处理效率(优化业务逻辑、使用异步或批量处理);
调整消费者端配置(增大fetch大小、缩短轮询间隔等)。
扩容时需保证分区数与消费者数量匹配,以充分利用并行性。
增加分区(Partition)
这是最直接的手段,Kafka 的消费并行度核心受限于 分区数。
比如:扩容分区, 将 Topic 的 Partition 数量增加(例如从 10 个扩到 30 个)。

除此之外,应检查并合理调整分区数量、复制因子、日志段大小。
并且,保留策略与刷盘策略(如acks、min.insync.replicas、segment.bytes、flush.messages等)。
同时监控磁盘I/O、网络带宽和GC情况,必要时扩容Broker节点或升级硬件以消除瓶颈。
流控与背压设计
在生产者端、与中间层,实现流控可避免短时突发写入压垮集群。

策略,包括:
- 限制生产速率(生产者端限流);
- 使用重试与退避机制;
- 在消费者端采用背压机制(控制下游处理速率并回压到上游)。
此外可在消息链路中引入缓冲层(如使用Redis、内存队列或临时Kafka主题)以平滑波动流量。
消息策略与容量治理
通过调整,消息策略来减少堆积风险。

对非关键、或已过时的数据,采用降级处理(压缩、合并或直接丢弃),使用合理的分区键以均衡负载;
对热点分区,采取重新分区或热分区迁移。
以及,定期进行容量规划与压力测试,基于业务峰值预留充足资源。
mikechen睿哥
10年+一线大厂架构实战经验,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。