批处理与合并请求

把多个小请求合并为批次执行:网络往返、事务与锁开销被摊薄,吞吐明显提升;需要在批大小、等待窗口与延迟目标之间设定参数。

参数

参数
触发条件:达到 N 条 或 等待 T 毫秒(取先到者)
失败处理:单条失败不回滚整批,或整批重试加幂等
观测:批大小分布、平均等待时间、每批失败率

批参数与取舍

参数调大后调小后关注点
批大小吞吐上升,单批影响面扩大往返开销占比升高整批失败重试需幂等
等待窗口合并率升高,延迟增加延迟低但批变小窗口要明显小于端到端预算
失败粒度整批重试(实现简单)单条重试(影响面小)重试放大写入量需评估
合并窗口 T 直接加进响应延迟:T 要明显小于端到端延迟预算,并可按负载自适应。

易错点

  • 等待窗口设置过长,全部请求被延迟拖慢
  • 整批重试未做幂等,部分成功变为重复写入

数据来源与参考

  • 《数据密集型应用系统设计》(Kleppmann)第 3、11 章
  • Kafka Producer 文档:Batching 与 linger.ms
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌