我正在尝试将断路器模式作为一种学习体验来实现(我知道这种模式已经在多个框架中实现了)。
我的天真、简化且非线程安全的实现看起来像
CircuitBreaker circuitBreaker = null;
try {
//get the current circuit breaker
if (circuitBreaker.isOpen()) {
throw new CircuitBreakerOpenException();
} else {
//proceed normally
//or retry if half open
}
} catch (CircuitBreakerCallbackExecutionException e) {
//update or replace the circuit breaker
}
如何在不同步受保护的调用(断路器对象)的情况下实现线程安全?理想情况下,如果失败阈值设置为 10,我不想在远程系统出现故障时允许超过 10 个多线程调用通过警卫。
到目前为止,我还没有找到任何看起来 100% 线程安全的开源框架。但也许试图实现这一目标是没有意义的。
这个问题更多的是关于线程安全而不是断路器。