已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
【背景】 我负责一个支付编排服务(JDK 17 + Spring Boot 3,单机 8C16G,前置 4 实例,K8s cpu limit=4),对外 QPS 峰值约 1.5k,P99 目标 500ms。一次请求内会并行发起 4 个下游 RPC:风控(P99 80ms)、账务(P99 120ms)、库存扣减(P99 150ms)、通知(P99 60ms,可异步化但暂时同步)。每个下游我用 Resilience4j 配了独立超时 + 1 次重试(指数退避 100ms 起步)。
【现象】
TimeLimiter + Mono.timeout 做"整链剩余预算",但重试那一跳并没有继承 deadline:第一次调用用了 150ms 超时失败,重试时 TimeLimiter 又给了完整的 150ms,等于实际消耗 300ms+ 退避时间,预算被悄悄透支。【已尝试】
【期望答案形态】