用途:该技能用于在编写跨网络边界的代码时,防止因把网络调用当成函数调用而引发的生产故障。核心问题是:本地能跑的代码,在生产中会因网络不可靠而失败。写任何跨网络代码前应先问:这个调用变慢、失败或返回过期数据时会发生什么。
主要能力:系统梳理分布式系统八大谬误——网络可靠、延迟为零、带宽无限、网络安全、拓扑静态、单一管理员、传输成本为零、网络同质,并说明每种错误假设对应的现实与破坏点。同时给出检测信号:无超时的网络调用、串行依赖调用、只记录并重抛的 try/catch、对可独立失败的调用使用 Promise.all、硬编码服务地址、关键依赖无熔断、无补偿的多服务写入、只取两个字段却拉取完整对象。
必要用法与防御模式:每个网络调用都要有显式超时(如用 AbortController 配合 fetch);独立调用应并行并使用 Promise.allSettled 容忍部分失败,为失败调用提供默认值;对关键依赖使用熔断器(closed/open/half-open 三态)快速失败;跨服务写入用 Saga 的预留—确认—补偿模式,而非 ACID 事务;重试只针对可重试错误(5xx、限流),绝不重试 4xx,并配合指数退避与抖动,且被重试操作必须幂等。
适用场景:编写调用外部服务的代码、将单体拆分为微服务、设计跨服务数据写入、处理下游依赖变慢或宕机时。
限制与注意:资料未提供该技能的安装命令、平台支持、收费方式或具体使用步骤,暂未提供。文中代码示例仅为说明性片段,实际落地需结合具体语言与框架;跨服务只能获得最终一致性,CAP/PACELC 存在一致性与延迟权衡。