Hystrix(豪猪----->刺),宣言“defend your app”是由Netflix开源的一个 延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而 提升系统的可用性与容错性。Hystrix主要通过以下几点实现延迟和容错。
如果不进行任何设置,所有熔断方法使用一个Hystrix线程池(10个线程),那么这 样的话会导致问题,这个问题并不是扇出链路微服务不可用导致的,而是我们的线 程机制导致的,如果方法A的请求把10个线程都用了,方法2请求处理的时候压根都 没法去访问B,因为没有线程可用,并不是B服务不可用。
为了避免问题服务请求过多导致正常服务无法访问,Hystrix 不是采用增加线程数, 而是单独的为每一个控制方法创建一个线程池的方式,这种模式叫做“舱壁模式",也 是线程隔离的手段。
/** * 8秒钟内,请求次数达到2个,并且失败率在50%以上,就跳闸 * 跳闸后活动窗口设置为3s */ @HystrixCommand( commandProperties = { @HystrixProperty(name = "metrics.rollingStats.timeInMilliseconds",value = "8000"), @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold",value = "2"), @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage",value = "50"), @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",value = "3000") } )