新闻资讯
SpringCloud的雪崩效应
1、常见场景
(1)硬件故障:如服务器宕机,机房断电,光纤被挖断等。
(2)流量激增:如异常流量,重试加大流量等。
(3)缓存穿透:一般发生在应用重启,所有缓存失效时,以及短时间内大量缓存失效时。大量的缓存不命中,使请求直击后端服务,造成服务提供者超负荷运行,引起服务不可用。
(4)程序bug:如程序逻辑导致内存泄漏,JVM长时间FullGC等。
(5)同步等待:服务间采用同步调用模式,同步等待造成的资源耗尽。
2、应对策略
针对造成雪崩效应的不同场景,可以使用不同的应对策略,没有一种通用所有场景的策略。
(1)硬件故障:多机房容灾、异地多活等。
(2)流量激增:服务自动扩容、流量控制(限流、关闭重试)等。
(3)缓存穿透:缓存预加载、缓存异步加载等。
(4)程序bug:修改程序bug、及时释放资源等。
(5)同步等待:资源隔离、MQ解耦。、不可用服务调用快速失败等。资源隔离通常指不同服务调用采取不同的线程池;不可用服务调用快速失败一般通过熔断模式结合超时机制实现。
综上所述,如果一个应用不能对来自依赖的故障进行隔离,那该应用本身就处在被拖垮的风险中。因此,为了构建稳定、可靠的分布式系统,我们的服务应当具有自我保护能力,当依赖服务不可用时,当前服务启动自我保护功能,从而避免发生雪崩效应。
原文链接:https://my.oschina.net/u/4006148/blog/3176044
回复列表