monkeyphp/circuit-breaker

PHP 实现的断路器模式

dev-develop 2014-03-19 19:34 UTC

This package is not auto-updated.

Last update: 2024-09-28 14:58:09 UTC


README

PHP 实现的断路器模式

断路器是一种生产模式,由 Robert T Nygard 在其开创性的书籍《Release It!》中描述。[在此处插入亚马逊链接]

它是一种防御模式,旨在减少和消除应用程序中任何集成点(如第三方 Web 服务)对应用程序其他部分的影响。

例如,如果您的应用程序需要调用第三方 API,该 API 超出了您的控制范围,并且该服务开始对它的请求响应缓慢;这可能会降低您应用程序在处理客户端请求时的响应速度。这反过来又可能导致应用程序发生级联故障,最终可能导致完全失败。

断路器通过监控集成点来工作,在这个库的例子中是通过将请求和响应传递给策略对象来实现的。

状态

断路器可以处于三种状态之一

  • 开启
  • 半开启
  • 关闭

策略对象

策略对象可以确定请求是否允许通过到集成点。它还用于检查第三方集成的响应,并可能决定阻止进一步的请求通过集成点。

策略实例必须只实现两个方法 requestresponse,并且只需要返回一个布尔值。

request 的情况下,返回的布尔值将确定断路器是否应该继续将请求传递到集成点。

response 的情况下,返回的布尔值用于确定断路器是否应该向调用客户端返回 OpenException


$service = new CircuitBreaker(new FlakeyService(), new PolicyProvider());

$response = $myService->doSomething($request);