SpringCloud面试 -- 什么是Hystrix?

Hystrix是什么

        在分布式系统中,每一个服务均可能会调用不少其余服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很常见的。
    Hystrix 可让咱们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。Hystrix 经过将依赖服务进行资源隔离,进而阻止某个依赖服务出现故障时在整个系统全部的依赖服务调用中进行蔓延;同时Hystrix 还提供故障时的 fallback 降级机制。
    总而言之,Hystrix 经过这些方法帮助咱们提高分布式系统的可用性和稳定性。
 

Hystrix 的设计原则

  • 对依赖服务调用时出现的调用延迟和调用失败进行控制和容错保护。
  • 在复杂的分布式系统中,阻止某一个依赖服务的故障在整个系统中蔓延。好比某一个服务故障了,致使其它服务也跟着故障。
  • 提供 fail-fast(快速失败)和快速恢复的支持。
  • 提供 fallback 优雅降级的支持。
  • 支持近实时的监控、报警以及运维操做。
举个例子:
    有一个分布式系统,服务A依赖于服务B,服务B依赖于服务C/D/E。在这样一个成熟的系统内,好比说最多可能只有100个线程资源。正常状况下,40个线程并发调用服务C,各30个线程并发调用 D/E。 
    调用服务 C,只须要 20ms,如今由于服务C故障了,好比延迟,或者挂了,此时线程会吊住2s左右。40个线程所有被卡住,因为请求不断涌入,其它的线程也用来调用服务 C,一样也会被卡住。这样致使服务B的线程资源被耗尽,没法接收新的请求,甚至可能由于大量线程不断的运转,致使本身宕机。服务A也挂了。
     Hystrix能够对其进行资源隔离,好比限制服务B只有40个线程调用服务C。当此40个线程被hang住时,其它60个线程依然能正常调用工做。从而确保整个系统不会被拖垮。
 

Hystrix 更加细节的设计原则

  • 阻止任何一个依赖服务耗尽全部的资源,好比 tomcat 中的全部线程资源。
  • 避免请求排队和积压,采用限流和 fail fast 来控制故障。
  • 提供 fallback 降级机制来应对故障。
  • 使用资源隔离技术,好比 bulkhead(舱壁隔离技术)、swimlane(泳道技术)、circuit breaker(断路技术)来限制任何一个依赖服务的故障的影响。
  • 经过近实时的统计/监控/报警功能,来提升故障发现的速度。
  • 经过近实时的属性和配置热修改功能,来提升故障处理和恢复的速度。
  • 保护依赖服务调用的全部故障状况,而不单单只是网络故障状况。    
相关文章
相关标签/搜索