Hystrix学习(2)雪崩效应
2016-04-23 12:27
246 查看
在IO型服务中,假设服务A依赖服务B和服务C,而B服务和C服务有可能继续依赖其他的服务, 继续下去会使得调用链路过长,技术上称1->N扇出。如下图
如果在A的链路上某个或几个被调用的子服务不可用或延迟较高,则会导致调用A服务的请求被堵住。
堵住的请求会消耗占用掉系统的线程、io等资源,当该类请求越来越多,占用的计算机资源越来越多的时候,会导致系统瓶颈出现,造成其他的请求同样不可用,最终导致业务系统崩溃,又称:雪崩效应。
正常情况下的访问
用户请求的多个服务(A,H,I,P)均能正常访问并返回。
发生阻塞时
当请求的服务中出现无法访问、异常、超时等问题时(图中的I),那么用户的请求将会被阻塞。
雪崩发生时
如果多个用户的请求中,都存在无法访问的服务,那么他们都将陷入阻塞的状态中。
举例来说,一个汽车生产线,生产不同的汽车,需要使用不同的零件,如果某个零件因为种种原因无法使用,那么就会造成整台车无法装配,陷入等待零件的状态,直到零件到位,才能继续组装。
此时如果有很多个车型都需要这个零件,那么整个工厂都将陷入等待的状态,导致所有生产都陷入瘫痪。一个零件的波及范围不断扩大。
造成雪崩效应的原因
1.硬件故障
2.负载过大(如:抢红包,双十一)
3.代码问题
Hystrix就是为了解决上述问题。
Hystrix提供了熔断模式和隔离模式来解决或者缓解雪崩效应。
这两种方案都属于阻塞发生之后的应对策略,而非预防性策略(例如限流模式)。
Hystrix是在服务访问失败时降低阻塞的影响范围,避免整个服务被拖垮。
相关文章推荐
- 我的问道游戏主题皮肤
- Myeclipse10.x破解方法
- excel批量转换日期格式,将yyyymmdd类型日期转换成yyyy-mm-dd等日期类型方法
- ROS探索总结(十六)(十七)(十八)(十九)——HRMRP机器人的设计 构建完整的机器人应用系统 重读tf 如何配置机器人的导航功能
- Swiper 中文API手册
- Linux GCC常用命令
- 树莓派 centos7 arm版本下载地址
- shell常用语法汇总
- 系统从win7更新到win10没有声音(扬声器一直显示未插入)
- 快速幂取余
- 解决404和there is no action mapped for action的问题
- 【个推推送】如果接受不到推送,如果你确定所有的xml配置都是好的
- ROS探索总结(十三)(十四)(十五)——导航与定位框架 move_base(路径规划) amcl(导航与定位)
- 深度学习入门-4.1 AND.py 源码分析
- explorer.exe不是有效的Win32应用程序
- ubuntu缺少public-key问题
- 花生米三连发(动规)
- DevExpress GridView 列标题点击事件
- DevExpress GridView 列标题点击事件
- java基础算法学习之分治