Netflix的Hystrix是一个帮助解决分布式系统交互超时处理和容错的类库,同样拥有保护系统的能力。 服务隔离 服务降级 1、服务隔离 在一个系统中,一个业务通常会依赖多个服务,且这若干个服务的调用是互不干扰的,故一般将这若干个服务的调用方在一个线程池中,当此时某一个服务不可用时,就会造成线程池中的线程因等待相应而被阻塞,使主服务受到很大的影响,甚至不可用。使用Hystrix通过对每一个依赖服务都分配独立的线程池进行服务隔离,从而避免由于某一个服务响应慢而影响主服务。 2、服务降级 当依赖的某一个服务不可用时,直接返回,不需要进行再次尝试,这是通过一个开关来进行控制的,当然此时该开关是打开的。当然其也会在一定的时间内进行测试,若是测试该服务可用了,那么 前面提到的开关就会关闭,那么当再次有该依赖服务的请求时,就不会直接返回,而会进行具体的业务逻辑处理。其中开关的打开是根据该服务的健康状况来进行控制的,而健康状况是由其请求失败数占请求总数的百分数,只要大于设定的失败率,则该开关打开。 参考: http://hot66hot.iteye.com/blog/2155036 http://my.oschina.net/ybakswu/blog/734374 http://www.sczyh30.com/posts/Microservice/netflix-hystrix-how-it-works-summary/