dubbo了解什么是服务雪崩

2023-07-17 19:55:07 浏览数 (2)

雪崩问题:

代码语言:javascript复制
服务雪崩指:服务提供者不可用导致服务调用者也跟着不可用,以此类推引起整个链路中的所有微服务都不可用

释:服务提供者A因为某种原因出现故障,那么服务调用者服务B依赖于服务A的请求便无法成功调用其提供的接口,假以时日依赖于服务A的请求越来越多导致服务B的Tomcat资源耗尽,造成服务B线程阻塞,导致服务B也出现故障。那么假如服务C依赖于服务B由于服务B也出现了故障导致服务C出现故障。以此类推引起整个链路中的所有微服务都不可用。

解决雪崩问题的常用方式:

代码语言:javascript复制
超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待
线程隔离:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。
熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。 
流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。

超时处理:

释:服务A依赖于服务B(故障),服务A向服务B发起请求时超过设定的超时时间,它会立即结束等待,并向返回提示信息。

这种方式就不会一直占用服务资源,缓解了雪崩问题 线程隔离:

释:服务A依赖于服务B和服务C(故障),例:服务A会把Tomcat线程划分为许多的独立线程池,每个业务分配一个线程池,那么服务C故障了最多只影响服务A的部分线程。避免了服务A整个tomcat资源耗尽的情况

熔断降级:

释:服务A依赖于服务B(故障),它会去统计服务A访问服务B的请求,当异常的比例超过了设定值时便会立即熔断该业务,当再次有请求需要访问服务B时它会拦截该请求并快速返回失败

流量控制:

释:当有大量的服务涌入服务A时,使用中间件拦截这些请求,让这些请求以服务能承受的频率去释放请求

0 人点赞