重构 RPC 客户端重试策略,确保仅重试证明未到达服务器的请求。
这个 PR 值得精读,它展示了一个关键且经过深思熟虑的分布式系统设计决策。关注点在于: 1. **设计哲学**:如何通过错误分类(`NEVER_REACHED_SERVER_ERRORS` vs `RETRYABLE_ERRORS`)来平衡可用性与幂等性。 2. **实现模式**:`retry_until_deadline` 工具如何将重试策略(超时、退避、日志)与业务逻辑(`_submit_attempt`)解耦。 3. **测试方法**:`FlakyProxy` 和 `_HookTransport` 如何模拟复杂网络故障场景,是测试网络容错代码的优秀范例。
参与讨论