Skip to content

Latest commit

 

History

History
40 lines (16 loc) · 2.37 KB

服务降级.md

File metadata and controls

40 lines (16 loc) · 2.37 KB

组件

  1. sentinel

  2. Hystrix断路器

服务降级

当某个微服务模块出现异常时,或者服务器压力增大时,为了不影响其他模块功能,主动关闭服务的一些功能,从而保证核心服务器运行正常,实际场景中,对异常的感知通常由熔断器实现

程序运行异常、超时、线程池/信号量打满、服务熔断触发都会导致服务降级

服务雪崩

多个微服务之间调用时,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它微服务,这就是所谓的扇出,如果扇出的链路上某个微服务调用的响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,也就是雪崩效应

对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,这样即使单个依赖关系失败,也不会取消整个应用程序和系统

所以,通常当你发现一个模块下的某个实例失败后,这个模块依然还会接收流量,然后这个有问题的模块还调用了其他模块,就会发生级联故障,或者叫雪崩

服务熔断

熔断机制是应对雪崩效应的一种微服务链路保护机制。

当一个服务因为各种原因停止响应时,调用方通常会等待一段时间,然后超时或者收到错误返回。如果调用链路比较长,可能会导致请求堆积,整条链路占用大量资源一直在等待下游响应。所以当多次访问一个服务失败时,应熔断,标记该服务已停止工作,直接返回错误。直至该服务恢复正常后再重新建立连接。

类似保险丝,达到最大服务访问后,直接拒绝访问,然后调用服务降级返回友好提示

服务限流

通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队、降级