从 HTTP JSON 换成 gRPC,并不会消除依赖等待和故障。一次业务调用如果没有清晰的截止时间,下游变慢时仍可能积累大量在途工作。协议选型与等待预算需要分别设计。
从用户请求的总时间倒推
先确定业务能接受的等待范围,再为下游调用留出预算。多层调用应理解上游剩余时间,避免下游已经超出用户等待范围仍继续消耗资源。时间预算还需要覆盖本地处理与返回过程。
截止与取消要落实到业务代码
框架可以传递相关信号,但耗时循环、数据库操作和外部调用仍需按支持能力响应。客户端不再等待,不代表服务端副作用已经撤销。写入操作必须结合幂等和最终状态查询。
重试与流式调用单独评估
可重试错误、业务副作用和总预算应一起确定。长连接或流式任务还需要考虑中断后的恢复位置,而不是简单重新开始。不要把短查询的配置直接复制到长业务流。
验收慢依赖与中途断开
让测试下游延迟、返回错误或在处理后断连,观察客户端结果、服务端资源释放与业务状态。交付说明应明确谁设置截止时间、谁负责重试以及如何排查。
常见问题:使用 gRPC 就一定比现有 HTTP 接口更快吗?
不能预先保证。序列化、网络、业务处理和调用方式都会影响结果,应以实际场景验证。
技术参考:微软:gRPC 截止时间与取消。具体接口与配置请结合使用版本核对。
将评估落实到你的系统
如果内部团队需要把这些约定落到可运行的工程中,可以通过微服务基础架构建设沟通接口、公共能力与交接范围,先以一个业务场景验证方案。