077、视频处理 Pipeline 消息堆积?Kafka + 背压控制 + Worker 弹性伸缩架构一、凌晨三点,告警电话响了“Pipeline 消息堆积超过 10 万条,延迟已经 15 分钟了。”运维在电话里说。我打开 Grafana,看到 Kafka 的 consumer lag 曲线像火箭一样往上窜。这不是第一次了——视频处理 Pipeline 里,某个环节一旦卡住,整个链路就像堵死的下水道。那次事故的根因很蠢:一个第三方转码服务偶尔返回 503,我们的 Worker 没有做重试退避,直接原地死循环重试,把 CPU 吃满,Kafka 消费线程被阻塞,消息越积越多。更讽刺的是,当时集群还有 30% 的空闲资源,但 Worker 数量是固定的,不会自动扩容。从那以后,我重构了整个 Pipeline 的架构。核心思路就三个字:扛得住、消得快、弹得动。下面是我踩过的坑和最终落地方案。二、Kafka 消费端:别让 poll 变成瓶颈很多人写 Kafka 消费者,上来就是while(true) { records = consumer.poll(100); process(records); }。这在 demo 里没问题,生产环境就是灾难。第一个坑:poll 超时设得太短。我见过有人设 50ms,结果每次 poll 都