我们与第三方服务器通信,最终将我们的请求转发到相应的服务器(以 serverName 作为参数)。可用的服务器存储在我们的服务中。
我们希望将断路器模式应用于这些服务器中的每一个。目前,我们在最右边有两台服务器(两个断路器,应用于我们服务器中的两种不同方法)。但稍后第三方服务器可以添加更多服务器,并通知我们该更改。
我们希望为这个新服务器创建一个新的断路器。
我们不想破坏 API-0 的电路。我们希望在引入新服务器时即时创建断路器。
假设 api 是这种形式:GET API-0/{serverName}
那么我们想要,
用于 API-0/SERVER-1 的断路器 1
API-0/SERVER-2 的 CircuitBreaker2
... 等等
我们不想对正在运行的服务进行代码更改。如果引入了新服务器,我们会收到通知。使用该通知,我们想创建一个新的断路器
API-0/SERVER-3 的 CircuitBreaker3
这就是我们目前所拥有的。问题是,这只会创建一个断路器实例,因此如果任何服务器(1、2 或 3)出现故障,它就会打开。
@CircuitBreaker(name="api0")
public Response getData(String serverName, payload){
return callThirdParty(serverName, payload);
}
我们希望为每个服务器维护单独的断路器(使用 serverName)。服务器可以在运行时创建,因此我们不能为每个服务器都提供单独的功能。