猛跑小猪
在分布式环境下,特别是微服务结构的分布式系统中,一个软件系统调用另外一个远程系统是非常普遍的。这种远程调用的被调用方可能是另外一个进程,或者是跨网路的另外一台主机,这种远程的调用和进程的内部调用最大的区别是,远程调用可能会失败,或者挂起而没有任何回应,直到超时。更坏的情况是,如果有多个调用者对同一个挂起的服务进行调用,那么就很有可能的是一个服务的超时等待迅速蔓延到整个分布式系统,引起连锁反应,从而消耗掉整个分布式系统大量资源。最终可能导致系统瘫痪。断路器(Circuit Breaker)模式就是为了防止在分布式系统中出现这种瀑布似的连锁反应导致的灾难。一旦某个电器出问题,为了防止灾难,电路的保险丝就会熔断。断路器类似于电路的保险丝,实现思路非常简单,可以将需要保护的远程服务嗲用封装起来,在内部监听失败次数,一旦失败次数达到某阀值后,所有后续对该服务的调用,断路器截获后都直接返回错误到调用方,而不会继续调用已经出问题的服务,从而达到保护调用方的目的, 整个系统也就不会出现因为超时而产生的瀑布式连锁反应。