微服务保护-雪崩问题

雪崩:

微服务调用链路中的某个微服务故障,引起整个链路微服务都不可用,这就是雪崩。(在微服务中,某个微服务故障,导致整个微服务都不可用)

雪崩产生的原因:

微服务相互调用,服务提供者出现故障或阻塞。

服务调用者没有做好异常处理,导致自身故障。

调用链中所有的服务级联失败,导致整个集群故障。

解决方案

请求限流

限制访问请求微服务的并发量,避免服务因流量激增出现故障。(就像漏斗一样,当来很多水时,大口进,从细口小流量流出。)

线程隔离

限制每个业务能使用的线程数量,而将业务故障的隔离,避免故障扩散。(一个微服务会有很多业务,给每个业务都分线程数量。这样即使某个业务出问题了,不会影响其它业务。)

服务熔断

由熔断器统计请求的异常比例或慢调用比例,如果超出阈值则会熔断改业务,拦截该接口的请求。熔断期间,所有请求快速失败,全走fallback逻辑。(fallback失败处理,让业务失败时,不在抛出异常,而是返回默认数据或友好提示)

熔断器状态

closed:熔断器关闭状态。请求可以正常访问。

open:熔断器开启状态。异常或慢调用比例达到阈值,进入该状态。拦截所有请求,快速失败或者走fallback。

half-open:当达到配置的熔断时间结束后,进入该状态。该状态会放一次请求,若失败,进入open熔断状态,若成功进入closed状态。

以上问题可以用sentinel处理

相关推荐
肥仔哥哥19302 小时前
最新SpringBoot+SpringCloud+Nacos微服务框架分享
spring boot·spring cloud·微服务·nacos微服务·最新nacos微服务
IsPrisoner4 小时前
Go 语言实现高性能 EventBus 事件总线系统(含网络通信、微服务、并发异步实战)
开发语言·微服务·golang
程序员JerrySUN6 小时前
深入理解Linux DRM显示子系统:架构、实战项目与关键问题全解析
linux·运维·服务器·面试·职场和发展·架构
汪子熙7 小时前
Transformer 的原理解析与人工智能应用
后端·架构
Hilaku7 小时前
我用 Cursor 写了两个月代码,项目代码量不降反升,为什么?
前端·javascript·架构
DemonAvenger8 小时前
Go 中 string 与 []byte 的内存处理与转换优化
性能优化·架构·go
brzhang8 小时前
Android 16 卫星连接 API 来了,带你写出「永不失联」的应用
前端·后端·架构
运维成长记9 小时前
Zabbix 高可用架构部署方案(2最新版)
mysql·架构·zabbix
yours_Gabriel15 小时前
【java面试】微服务篇
java·微服务·中间件·面试·kafka·rabbitmq
程序员Bears15 小时前
Spring Cloud Hystrix熔断机制:构建高可用微服务的利器
spring cloud·hystrix·微服务