1. 超时预算(timeout budget)如何在多层调用链上分配,为什么每层独立超时会让端到端延迟失控,deadline propagation 如何解决?
说明超时预算(timeout budget)如何在多层调用链上分配,以及为何每层独立超时会让端到端延迟失控,deadline propagation 如何解决?
- 多层调用链的延迟叠加
- 每层独立超时的失控
- deadline propagation 分配超时预算
在多层调用链中,端到端延迟 = 各层延迟之和。若每层设置独立的超时(如每层都等 2s),则端到端等待可能累积到多层之和(如 4 层 × 2s = 8s),远超用户可接受的延迟,导致端到端延迟失控。deadline propagation(截止时间传播)解决:把端到端的超时预算在调用链上显式分配,每层传递"剩余截止时间"(deadline),上层把剩余时间预算传给下层,下层据此计算本层可用的超时剩余,从而保证各层超时之和 ≤ 总预算。这样端到端延迟可控,不会因为各层独立超时而叠加失控。实现上,请求携带 deadline 或剩余预算,各层在超时前提前返回/失败。
独立超时导致"各层超时相加"的失控,deadline propagation 用"剩余预算分配"让各层共享全局超时,保证端到端延迟有界。这是分布式调用链延迟控制的关键。