在微服务架构系统中通常会有多个服务,在服务调用中如果出现基础服务故障,可能会导致级联故障,即一个服务不可用,可能导致所有调用它或间接调用它的服务都不可用,进而造成整个系统不可用的情况,这种现象也被称为服务雪崩效应。

服务雪崩效应是一种因“服务提供者不可用”(原因)导致“服务调用者不可用”(结果),并将不可用逐渐放大的现象。

 

服务雪崩效应示意如图所示,A为服务提供者,B为A的服务调用者,C为B的服务调用者。

 

当服务A因为某些原因导致不可用时,会引起服务B的不可用,并将不可用放大到服务C进而导致整个系统瘫痪,这样就形成了服务雪崩效应。

hadoop 里的雪崩效应 雪崩效应是_缓存

 

出现服务雪崩效应的原因如下: 硬件故障:如服务器宕机、机房断电、光纤被挖断等。

流量激增:如异常流量、重试加大流量等。

缓存穿透:一般发生在应用重启,所有缓存失效时,以及短时间内大量缓存失效时,因大量的缓存不命中,使请求直击后端服务,造成服务提供者超负荷运行,引起服务不可用。

程序bug:如程序逻辑导致死循环或者内存泄漏等。

同步等待:服务间采用同步调用模式,同步等待造成资源耗尽。

那么怎么避免出现服务雪崩效应呢?

我们可以针对不同的原因准备应对的策略。

例如,针对流量激增,可以进行限流和关闭重试;

针对缓存穿透,可以进行缓存预先加载;

针对程序bug,找到bug并修复即可;

至于硬件故障和同步等待的问题,就需要在服务调用者调用服务提供者出问题的时候进行中断访问并做出相应的处理,即进行服务熔断和服务降级处理来解决。

那么如何进行服务熔断和服务降级处理呢?

使用Hystrix熔断器来实现即可。