一 概述
在微服务的调用过程之中,可能会出现下面的问题:
[1]当一个微服务调用另外一个微服务的时候,如果被调用的微服务出现问题,就会导致调用者出现问题,如果调用的关系是级联的,就会出现级联错误,发生服务雪崩.
[2]微服务如果出现共享线程池的情况,一个微服务出现问题,就会影响在此线程池之中的另外线程.
解决方法:
在整个微服务架构之中,通常存在下面的三种解决方式
[1]超时机制:如果一个方法调用出现延迟的情况,立马发生超时错误,放置微服务的调用堆积,造成系统资源耗尽.
[2]线程隔离:不同的微服务之间使用不同的线程池,防止一个线程池的原因,导致多个微服务出现资源的问题.
[3]熔断器模式:本质上说,熔断器是一个快速失败的机制,当出现调用问题的时候,立马结束调用,这里面可以使用超时机制进行规避.
当多次错误发生的时候,就认为这个服务不可用,进行快速失败.熔断器会一个检测的功能,当发现微服务可用,就打开熔断器,进行正常的微服务的调用.
在springcloud之中,使用hystrix组件帮助我们实现微服务的容错机制.
从本质上,熔断器就是一个使用快速失败解决资源分配的问题.
二 .Hystrix提供的功能
[1]failback机制:一旦发生微服务的调用失败,直接进行fallback机制.默认情况下,histrix使用异常机制实现,当然我们也可以使用fallback方法进行容错返回.
[2]超时机制:一旦方法调用出现超时,立马认为微服务失败,直接进入fallback机制.
[3]线程隔离:不同的方法调用进入到不同的线程之中,这样彼此的微服务相互的影响降到最低.
[4]熔断器:一旦微服务多次失败,直接进入到fallback机制,不再做无谓的尝试.同时Hystrix提供半开模式,允许进行一些微服务的调用的尝试,当成功的几率符合设置,熔断器就关闭,进行正常的方法调用.