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