1.0 Hystrix前言:
在大中型分布式系统中,通常系统很多依赖(HTTP,hession,Netty,Dubbo等),在高并发访问下,这些依赖的稳定性与否对系统的影响非常大,但是依赖有很多不可控问题:如网络连接缓慢,资源繁忙,暂时不可用,服务脱机等。
当依赖阻塞时,大多数服务器的线程池就出现阻塞(BLOCK),影响整个线上服务的稳定性,在复杂的分布式架构的应用程序有很多的依赖,都会不可避免地在某些时候失败。高并发的依赖失败时如果没有隔离措施,当前应用服务就有被拖垮的风险。
1.1 下面这个例子很好的解释
=================================================================================
2.0 Hystrix原理
2.1 Hystrix能做什么
通过Hystrix可以解决雪崩效应问题,它提供了资源隔离、降级机制、融断、缓存等功能。
2.2 雪崩效应常见场景
· 硬件故障:如服务器宕机,机房断电,光纤被挖断等。
· 流量激增:如异常流量,重试加大流量等。
· 缓存穿透:一般发生在应用重启,所有缓存失效时,以及短时间内大量缓存失效时。大量的缓存不命中,使请求直击后端服务,造成服务提供者超负荷运行,引起服务不可用。
· 程序BUG:如程序逻辑导致内存泄漏,JVM长时间FullGC等。
· 同步等待:服务间采用同步调用模式,同步等待造成的资源耗尽。
2.3 Hystrix遵循的设计原则:
· 防止任何单独的依赖耗尽资源(线程)
· 过载立即切断并快速失败,防止排队
· 尽可能提供回退以保护用户免受故障
· 使用隔离技术(例如隔板,泳道和断路器模式)来限制任何一个依赖的影响
· 通过近实时的指标,监控和告警,确保故障被及时发现
· 通过动态修改配置属性,确保故障及时恢复
· 防止整个依赖客户端执行失败,而不仅仅是网络通信<