02、初识Sentinel-雪崩问题及解决方案

Spring Cloud Config (Spring自家的)
Gateway (Spring自家的)
Nefflix : Eureka Feign Ribbon Hystrix
Alibaba :Nacos 服务注册发现Sentinel 限流熔断Setata 分布式事务

什么是雪崩

雪崩就是当微服务收到请求的时候发送给订单服务,当订单服务的请求量过大就会造成宕机,然后用户服务调用订单服务里的资源,是调用不了的,就会导致用户服务的tomcat线程占用,当用户服务的tomcat的线程被占用完了也会宕机,这就是雪崩

解决方法(4种)

1.超时处理:(默认是1秒)

设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待

2.线程隔离(仓壁模式)

给每个微服务创建一个线程池10个,当这十个线程占用了,就把请求返回(降级:友好提示业务繁忙)
我们可以限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。

3.熔断器(断路器)(三个方法)

1.设置超时比例(慢请求比例)
2.异常比例
3.异常数

状态机包括三个状态:

  • closed:关闭状态,断路器放行所有请求,并开始统计异常比例、慢请求比例。超过阈值则切换到open状态
  • open:打开状态,服务调用被熔断,访问被熔断服务的请求会被拒绝,快速失败,直接走降级逻辑。Open状态5秒后会进入half-open状态
  • half-open:半开状态,放行一次请求,根据执行结果来判断接下来的操作。
    • 请求成功:则切换到closed状态
    • 请求失败:则切换到open状态


image.png

4.QPS限流(预防雪崩)(一共三种方法)

Sentinel限流-QPS限流

QPS限流示例

触点接入=接口

1)流控模式

在添加限流规则时,点击高级选项,可以选择三种流控模式

1.直接
写多少个单阀一秒钟就放行多少个
image.png
统计当前资源的请求,触发阈值时对当前资源直接限流,也是默认的模式
2.关联:统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流
(自己理解的)当关联的资源访问超过了五个,就会限制资源名的资源,把资源调给关联资源使用
image.png

3.链路:统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限

image.png