熔断器就相当于生活中的保险丝,避免电流电流过大而烧掉整个电器,是一种保护机制。
比如A服务的X功能依赖于B服务的某个接口,当B服务的这个接口因为网络延迟响应慢或其他因素不可用,势必会造成A服务的X功能不可用,进而导致整个A服务不可用(线程被大量占用),加入熔断机制后,在这种情况下,A服务不再请求B的接口,从而避免产生整个服务的雪崩。

在股票中熔断也是类似的意思。当某一只股票下跌额超过10%时,就会触发跌停,这个时候不能再继续下跌,避免因为一个股票下跌过多,造成整个股票市场的恐慌。
Hystrix特性
1.断路器机制
当Hystrix Command请求后端服务失败数量超过一定比例(默认50%), 断路器会切换到开路状态(Open).这时所有请求会直接失败而不会发送到后端服务.断路器保持在开路状态一段时间后(默认5秒), 自动切换到半开路状态(HALF-OPEN).这时会判断下一次请求的返回情况,如果请求成功,断路器切回闭路状态(CLOSED), 否则重新切换到开路状态(OPEN)

2.Fallback
Fallback相当于是降级操作.对于查询操作,我们可以实现一个fallback方法,当请求后端服务出现异常的时候,可以使用fallback方法返回的值.fallback方法的返回值一般是设置的默认值或者来自缓存。

3.资源隔离
主要通过线程池来实现资源隔离.通常在使用的时候我们会根据调用的远程服务划分出多个线程池.例如调用产品服务的Command放入A线程池, 调用账户服务的Command放入B线程池.这样做的主要优点是运行环境被隔离开了

网友评论