1.2. 断路器设计模式
断路器模式旨在处理服务架构中的故障,并防止多个系统出现级联故障。断路器可以充当客户端功能的代理,该代理将请求发送到可能失败的远程服务端点。您可以将发送到远程服务端点的任何请求嵌套在断路器对象中。然后,断路器调用远程服务并监控其状态。如果故障数量达到指定的百分比阈值,则触发断路器。然后,断路器确保对远程服务的任何进一步请求都会被自动阻止,并带有错误消息或回退响应。
根据断路器设计模式,断路器在任何特定时间具有以下状态之一:
- 关闭
-
失败的数量低于可触发断路器的指定百分比阈值。您可以将百分比阈值定义为传递给 Node.js 应用中的断路器的可选参数。默认百分比阈值为 50%。当故障数量低且断路器
关闭时
,客户端功能可以继续向远程服务端点发送请求。 - Open
-
故障数量已达到触发断路器的指定百分比阈值。例如,基于默认选项,如果 50% 的请求失败,断路器将变为
开状态
。然后,断路器在指定超时期间阻止对远程服务端点的所有调用,其中包含错误消息或回退响应。您可以将超时周期定义为传递给 Node.js 应用中的断路器的可选参数。默认超时时间为 30 秒。 - 半开
-
指定的超时时间已结束。例如,基于默认选项,超时时间结束,断路器在 30 秒后变为
半开状态
。然后,断路器尝试向远程服务端点发送有限数量的测试调用。如果测试调用成功,断路器进入闭
路状态,并且客户端功能可以继续向远程服务发送请求。但是,如果测试调用失败,断路器恢复为开状态
,并且继续阻止对指定超时周期的远程服务的所有调用。