初始场景:

生产者非常多、消费者非常少,核心问题不是“怎么消费得更快”,而是 怎么高吞吐接住写入,以及怎么处理持续积压

  • 多 Broker:单机写入扛不住大量生产者 → Broker 水平扩容,把写压力分散到多台机器
  • 多 Partition:单个 Topic 单分区吞吐有限 → 拆多个 Partition,让不同分区并行写入
  • 顺序日志:大量随机写磁盘效率低 → 每个 Partition 采用 append-only 顺序写
  • 批量写 / 刷盘:每条消息单独落盘开销太大 → 批量聚合后写入,提高吞吐
  • 消息积压:生产速度明显高于消费速度 → MQ 依靠磁盘持久化先把消息存下来,消费者按自身速度慢慢拉
  • 容量规划:持续积压最终会把磁盘写满 → 扩容 Broker / 磁盘,并设置明确的保留策略
  • 保留策略:磁盘满了以后必须决定保谁 → 消息不能丢就扩容或拒绝新写;允许丢历史则按时间/容量淘汰旧消息
  • 系统边界:消费者只有一个,而且长期 生产速率 > 消费速率无论 MQ 怎么设计,积压最终都会持续增长,只能延缓,不能根治

最后主线就是:

大量生产者 → Broker 水平扩容 → Partition 分散写入 → 顺序日志高吞吐 → 磁盘承接积压 → 容量/保留策略兜底 → 明确单消费者的吞吐上限。