断路器(Circuit Breaker)模式就是为了防止在分布式系统中出现这种瀑布似的连锁反应导致的灾难。
上图是断路器(Curcuit Breaker)的结构,它有两个基本状态(close和open)和一个基本trip动作:
close状态下, client向supplier发起的服务请求, 直接无阻碍通过断路器, supplier的返回值接直接由断路器交回给client.
open状态下,client向supplier发起的服务请求后,断路器不会将请求转到supplier, 而是直接返回client, client和supplier之间的通路是断的
trip: 在close状态下,如果supplier持续超时报错, 达到规定的阀值后,断路器就发生trip, 之后断路器状态就会从close进入open.
一个supplier一般很稳定,如果一旦故障发生后, 检查和恢复需要的时间比较长,通常无法短时间内快速修复的,那么这种服务比较适合采用断路器模式。否则很可能导致ping-pong效应。
为了防止一个应用程序试图调用一个远程服务或访问共享资源,如果该操作是极有可能失败, 这种模式可能不适合。
对于处理中的应用程序访问本地专用资源,例如在存储器内数据结构。在这种环境下通常也不适合,使用断路器只会增加系统开销。