目标
客户端发起成千上万个小请求,往返开销主导总耗时。本配方在请求层引入合并:把窗口内到达的请求收集起来,每 10 毫秒合并为一次批量调用,并把批量响应按项分发回各调用方;提醒对时延敏感的调用应保持极小窗口或允许退出批处理。
步骤要点
- 在窗口内收集请求并定时批量发送。
- 把批量响应按项分发回各调用方。
- 对时延敏感调用保持极小窗口或退出批处理。
- 设置批量上限并在达到时提前发送。
const pending = [];
let scheduled = false;
function enqueue(item) {
pending.push(item);
if (scheduled) return;
scheduled = true;
setTimeout(flush, 10);
}
排错提示
- 窗口会给每个调用增加延迟。
- 批处理过大需设上限。
- 错误处理需按项映射失败。
适用边界
- 需要端点支持批量。
- 会增加固定小延迟。