1.Hystrix是什么?
在分布式系统中,每个服务都可能会调用很多其他的服务,被调用的那些服务就是依赖服务,依赖服务出现一些故障是很正常的,因为不能保障100%的可用性。hystrix可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。Hystrix通过将依赖服务进行资源隔离,当某个依赖服务出现故障的时候,防止故障在整个系统的依赖服务中蔓延,同时Hystrix还提供了fallback降级机制。(Hystrix保护系统高可用主要通过一下几点:资源隔离、限流、熔断、限流、运维监控)。2.Hystrix的设计原则
1.对依赖服务调用时出现的延迟和失败进行容错保护。
2.在复杂的分布式系统中,阻止某一个依赖服务的故障在整个系统中蔓延
3.提供fall-fast(快速失败)和快速恢复的支持4.提供fallback优雅的降级的支持
5.支持近实时的监控、报警一级运维操作
3.Hystrix是如何实现的?
1.通过hystrixCommand或者HystrixObservableCommand来封装对外部依赖的访问请求,这个访问请求一般会运行在独立的线程中。
2.对于超出我们设定的阈(yu)值服务调用,直接进行超时返回,不允许它长时间的阻塞。
3.对每一个依赖服务进行资源隔离。通过线程池或者是semaphore这两种方式。4.对依赖服务被调用的成功次数,失败次数,拒绝次数,超时次数进行统计。
5.如果对某一个依赖服务的调用失败次数超过了一点的阈值,Hystrix自动进行熔断,并在一段时间内对该服务的调用直接进行降级,一段时间后再自动尝试恢复
6.当对一个服务调用出现失败、被拒绝、超时、短路等异常情况时,自动调用fallback降级机制
7.对属性和配置的修改提供近实时的支持