栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

微服务雪崩效应及解决办法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微服务雪崩效应及解决办法

什么是雪崩效应

假如我们有一个服务C,向服务B提供接口,服务B有很多请求发送到服务C

当服务C发生了宕机的时候,服务B发送到服务C的请求会阻塞掉,会导致服务B的内存被这些阻塞的线程占满而导致服务对外提供服务,而导致服务B产生宕机



与此同时,服务B作为服务A的提供者

同样的问题也会产生,导致服务A也无法使用


这一连串的效应导致整个系统挂掉,这样的现象称为雪崩效应

解决雪崩效应

1、设置线程的超时时间
在服务B调用服务C的时候,当服务C挂掉,如果给服务B调用服务C的每个线程都设置超时时间,例如500ms,当前几个线程阻塞500ms后,自动销毁,后续线程继续调用,以此解决由于服务B线程阻塞导致内存占满使得服务B挂掉的问题

2、设置限流
有三个服务A、B、C,当服务C因为一些网络性能问题挂掉

服务A发送到服务B的请求,同时再有一个请求发送到服务C,同理服务A发送请求到服务B,服务B再发送请求到服务C,当到达一个上限的时候,我们不会让服务B发请求到服务C,通过设置限流让服务B嘴都有三个线程发送到服务C,当三个线程满了的时候,就不会再新增线程请求服务C,此时不管服务A向服务B发送多少个请求,服务B都不会再发送请求到服务C,防止服务B因为内存过多导致服务B挂掉

3、熔断
当服务正常请求成功的时候,熔断处于关闭状态,而当服务调用失败的时候,熔断开关打开,那我们请求都会被跳过,不会真正请求整个服务,这样避免整个服务挂掉。
在分部式场景下一般都会有一个时间窗口,这个时间窗口会在时间窗口结束的时候会尝试调用之前挂掉的服务,熔断开关处于半开半闭状态,当请求失败的时候,熔断开关打开,当请求成功的时候,熔断开关关闭

文章参考慕课网实战教程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号