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