某一个节点长时间处理导致应用请求积压崩溃的现象被称为微服务的“雪崩效应”。

为什么微服务会产生雪崩效应

如下图所示,假如我们开发了一套分布式应用系统,前端应用分别向 A/H/I/P 四个服务发起调用请求:

image.png

前端应用需要四个服务

但随着时间推移,假如服务 I 因为优化问题,导致需要 20 秒才能返回响应,这就必然会导致 20 秒内该请求线程会一直处于阻塞状态。

image.png

image.png

其中一个出现长延时,会导致前端应用线程阻塞

但是,如果这种状况放在高并发场景下,就绝对不允许出现,假如在 20 秒内有 10 万个请求通过应用访问到后端微服务。容器会因为大量请求阻塞积压导致连接池爆满,而这种情况后果极其严重!轻则“服务无响应”,重则前端应用直接崩溃。

以上这种因为某一个节点长时间处理导致应用请求积压崩溃的现象被称为微服务的“雪崩效应”。

image.png

当大量线程积压后,前端应用崩溃,雪崩效应产生

如何有效避免雪崩效应?

https://cdn.nlark.com/yuque/0/2021/jpeg/576791/1634576109215-555d4f53-0d53-403f-b0a4-fa5d44614177.jpeg