雪崩效应
分布式架构中的服务基本都存在依赖调用关系,每个服务在生产环境下都是避免不了出现故障的,当某个服务发生了故障,会导致连接(依赖)到它的所有请求超时,这时如果没有合适的处理机制,这种超时便会在生产系统中蔓延和累积,造成级联故障,进而可能使整个系统不可用,这种现象就是服务雪崩效应。
熔断器(Circuit Breaker)
熔断器(断路器)就是容器管理工具,通过熔断机制控制服务和第三方库的节点,从而为延迟和故障提供强大的容错能力。
它的基本机制类似于家电的电路熔断器,当电路发生短路时立即熔断电路,避免发生灾难。应用于微服务上就是,熔断器可识别某个服务节点是否出现故障、大量超时的情况,这种时候需要主动熔断,比如返回一个备选响应(FallBack),而不是长时间等待或者抛出异常,这样就可以保证服务调用方不会被长时间不必要地占用,从而避免故障在分布式架构中蔓延和积累,乃至雪崩。
熔断器的基本思想:将一个受保护的函数调用包含在用于监视故障的熔断器对象中,一旦故障数达到一个阈值,熔断器便会跳闸,并且对熔断器的所有后续调用都将返回错误,完全不接受对受保护函数的调用。通常,如果熔断器发生跳闸,还需要监控报警。
From:《Docker微服务架构实战》 - P69
有的熔断器(比如Netflix Hystrix)可以实现弹性容错,当服务节点的状况好转后,可自动重连。