Hystrix高可用框架

Hystrix是什么

Hystrix Home,Hystrix是高可用性保障的一个框架。Netflix的API团队从2011年开始做一些提升系统可用性和稳定性的工作,Hystrix就是从那时候开始发展的。在2012年的时候,Hystrix就变得比较成熟和稳定了,Netflix中除了API团队以外,很多其他的团队都开始使用Hystrix。时至今日,Netflix中每天都有数十亿次的服务间调用,通过Hystrix框架在进行,而Hystrix也帮助Netflix网站提升了整体的可用性和稳定性。2018年11 月,Hystrix在其Github主页宣布,不再开放新功能,推荐开发者使用其他仍然活跃的开源项目。维护模式的转变绝不意味着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故障了,延迟或者挂了,此时线程会hang住2s左右。40个线程全部被卡住,由于请求不断涌入,其它的线程也用来调用服务C,同样也会被卡住。这样导致服务B的线程资源被耗尽,无法接收新的请求,甚至可能因为大量线程不断的运转,导致自己宕机。这种影响势必会蔓延至服务A,导致服务A也跟着挂掉。

Hystrix高可用框架_第1张图片

Hystrix可以对其进行资源隔离,限制服务B只有40个线程调用服务C。当此40个线程被hang 住时,其它60个线程依然能正常调用工作。从而确保整个系统不会被拖垮。

Hystrix设计原则

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

 

 

你可能感兴趣的:(中间件,中间件,分布式,hystrix)