架构风格与模式58 条

请求-响应模式

调用方发起请求并等待响应,是最直观的交互方式;实现简单、语义清晰,但调用双方在时间与可用性上耦合,需要超时、重试与熔断配套。

适用读操作、需要即时结果的交互、低延迟链路
同步开销调用链路过长时延迟叠加,故障向上传播
配套手段超时、重试退避、熔断、降级
  • 超时:按下游 P99 附余量设定,外层大于内层之和
  • 重试:仅限幂等操作,指数退避加随机抖动,限制次数
  • 熔断:错误率超阈值快速失败,保护线程与连接资源
  • 降级:预置默认值或返回缓存旧值,维持核心路径可用
  • 隔离:按下游拆分线程池或信号量,避免连锁阻塞
超时分解示例入口 1000ms → 服务 A 800ms → 服务 B 500ms,逐级留出处理与网络余量
跳数控制同步链路跳数越多,延迟叠加与故障放大越明显;长耗时动作优先异步化
适用取舍读多写少且需即时反馈的场景优先同步;批量与广播场景考虑发布订阅
同步链路每增加一跳都会放大整体延迟与失败概率,关键链路应控制跳数。

易错点

  • 没有超时设置,上游线程被慢下游拖死
  • 重试放在多层导致放大效应(每层都重试)

数据来源与参考

  • 《Enterprise Integration Patterns》(Hohpe & Woolf)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌