概述
分布式系统面临的问题
因为分布式系统是通过服务之间相互调用维持整个系统的,那么,在服务之间调用的时候就可能出现,A服务调用B、C、D,服务,B服务又调用E、C、D服务,E服务又调用F服务…这种服务之间层层调用或者相互调用的复杂关系称为 “扇出”,扇出中如果某个服务不可用了或者响应时间过长,而此时又有大量请求需要调用该服务,那么此时系统占用资源会相当高,进一步可能造成服务器崩溃,又称 “雪崩效应”。
是什么
为了解决上述问题,就有了Hystrix断路器。
类似于保险丝的作用
能干嘛
作用就是避免服务之间依赖出现联级故障,造成雪崩效应。
实现原理
在服务调用出故障的服务时,它通过给调用方返回一个可处理的、符合预期的,预备响应(FallBack),而不是长时间的等待,或者抛出调用方无法处理的异常。【处理机制类似与java.util.Optional对空指针异常的处理】
当扇出链路中的某个服务出现问题时会进行服务降级,进而熔断该服务的调用,并返回一个预期的、可处理的预备的结果。当检测到该节点服务响应正常后,恢复服务调用链。
Hystrix会检测服务响应,如果5秒内20次调用服务失败,就会启动服务降级。
熔断机制的注解是@HystrixCommand
这样就避免了服务调用方线程不必要的长时间的等待和占用,从而避免雪崩效应。