大家好,又见面了,我是你们的朋友程序猿。
一、什么是雪崩效应
分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图, 对于同步调用,当会员服务不可用时,订单服务请求线程被阻塞,当有大批量请求调用会员服务时, 最终可能导致整个会员服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。
二、雪崩效应常见场景
- 硬件故障:
如剔除坏盘抖动,服务器宕机,网络抖动,机房断电,光纤被挖断等;
- 流量激增:
如异常流量,重试加大流量等;
- 缓存穿透:
短时间内大量缓存失效时,大量的缓存不命中,使请求直击后端服务,造成服务提供者超 负荷运行,引起服务不可用;
- 程序BUG:
如程序逻辑导致内存泄漏, JVM长时间FullGC,流量高峰期执行定时任务等;
- 同步等待:
服务间采用同步调用模式,同步等待造成的资源耗尽。
三、雪崩效应应对策略
针对造成雪崩效应的不同场景,可以使用的应对策略,参考如下:
- 硬件故障:
多机房容灾、异地多活等;
- 流量激增:
服务自动扩容、流量控制(限流、关闭重试)等;
- 缓存穿透:
缓存预加载、缓存异步加载等;
- 程序BUG:
修改程序bug、及时释放资源、定时任务分散到流量低峰时执行等;
- 同步等待:
资源隔离、MQ解耦、不可用服务调用快速失败等。资源隔离通常指不同服务调用采用不同的线程池;不可用服务调用快速失败一般通过熔断器模式结合超时机制实现。
四、Netflix Hystrix
Hystrix,中文含义是豪猪,因其背上长满棘刺,从而拥有了自我保护的能力。本文所说的 Hystrix是Netflix开源的一款容错框架,同样具有自我保护能力,实现了容错和自我保护。 Netflix Hystrix是SOA/微服务架构中提供服务隔离、熔断、降级机制的工具/框架。 Netflix Hystrix是断路器的一种实现,用于高微服务架构的可用性,是防止服务出现雪崩的利器。
本文是SpringCloud微服务架构教程的课件文档,如需要全套Spring全家桶微服务架构师教程请评论或私信联系。
栈长,出处链接/158641.html感谢:链接
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/39862.html