微服务项目雪崩的解决思路

雪崩的介绍

雪崩是微服务中某个服务挂了,无法返回请求,导致调用改服务的上层服务也故障,最终形成连锁反应,导致整个系统故障。

解决思路

一般有四种思路:

1.最简单的就是超时处理,即超过一段时间就返回错误信息,但在请求量很大时仍然会出现问题,只能延缓。

2.限流

3.隔离

4.熔断降级

限流

简单说是允许每秒有多少个请求发给某个服务,减少服务的压力,降低服务故障的可能,从而避免雪崩发生。

隔离

服务已经故障的情况下进行,给要调用的服务单独分配一个线程池(或者用信号量记录),既是要调用的服务故障,耗尽所有的资源,但不影响其他服务进行。

熔断降级

熔断:每秒查看一定数量的请求,如果被查看的请求超过一定量发生异常,将服务熔断,后面调用该服务的请求一律返回异常(速度很快)。超过一定时间后,尝试放行一次请求,如果异常,继续熔断,反之,将服务恢复正常。

降级:熔断后直接返回异常信息不太合适,可以返回一个降级的返回信息,提高体验。注意!因为要调用的服务已经熔断,降级的信息只能在上层服务中写。

相关推荐
小bo波3 小时前
Java Swing 图形用户界面实验 —— 从算术练习到游戏开发的完整实践
java·课程设计·gui·游戏开发·扫雷·swing
咖啡八杯4 小时前
GoF设计模式——备忘录模式
java·后端·spring·设计模式
先吃饱再说8 小时前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils8 小时前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端
Databend10 小时前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶11 小时前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构
smallyoung12 小时前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·mysql·postgresql
parade岁月12 小时前
MySQL JOIN解析:朴实无华但食之有味
数据库·后端
用户31693538118312 小时前
MySQL服务无法启动问题解决全记录
数据库
SamDeepThinking15 小时前
裁掉那个差程序员后,给你看团队里高手的代码:这个习惯,希望你有
java·后端·程序员