当前位置:   article > 正文

springcloudalibaba架构(4):Sentinel流控规则_springcloud sentinel 请求链路 点击不了 流控

springcloud sentinel 请求链路 点击不了 流控

前言

Sentinel的流控规则。
本章使用的Sentinel版本为1.8.4,版本之间会存在差异。
在这里插入图片描述

第一节 流控规则

流量控制,其原理是监控应用流量的QPS(每秒查询率)或者并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。

编辑规则前,需要先请求一下对应的接口,才会被加载到sentinel控制台。
在这里插入图片描述

1. 基本规则

点击流控,新建流控规则
在这里插入图片描述

  • QPS: 每秒查询率
  • 并发线程数: 这个接口最大允许的线程数

这里直接演示例子:QPS, 阈值为2,然后点击新增。测试快速请求这个接口,发现部分请求会被sentinel直接限制。
在这里插入图片描述

2. 流控模式

流控规则有3种模式

2.1 直接模式

默认的配置是直接模式,就是前面章节的基本配置。

在这里插入图片描述

2.2 关联模式

什么是关联模式?
当关联的资源开始达到阈值开始限流的时候,本资源才开始执行限流规则,如果关联资源没有限流,则本资源即使达到阈值也不会限流。例如order的query和upate,当update过高时,我们就设置关联规则,避免query查询数据影响update的操作。

在这里插入图片描述
在这里插入图片描述

2.3 链路模式

什么是链路模式?
假设A和B 都调用C 资源,那么A–>C和B–>C就构成两条链路。A和B竞争相同的资源C。
示例:

  1. 定义一个资源,资源名为findById
@Service
public class MySourceServiceImpl {
    @SentinelResource("findById")//定义资源
    public String findById(){
        return "abc";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 构建两个方法同时调用这个资源,hello1和hello2都调用这个资源。
 @Autowired
    private MySourceServiceImpl mySourceService;

    @GetMapping("/hello1")
    public String hello() {
        log.info("say hello------------1");
        mySourceService.findById();
        return "hello1";
    }

    @GetMapping("/hello2")
    public String hello2() {
        log.info("say hello------------2");
        mySourceService.findById();
        return "hello2";
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  1. 启动服务器,访问刚刚定义的两个接口,在sentinel可以看到显示两个接口访问了同一个资源。
    在这里插入图片描述

  2. 设置流控规则
    在这里插入图片描述

  3. 访问 http://localhost:8091/hello1,频繁请求,发现失败了。但是访问http://localhost:8091/hello2,没有任何问题。

在这里插入图片描述
在这里插入图片描述
链路模式流控失败解决方案:Sentinel链路模式规则无效

第二节 流控效果

流控效果分为三种

1. 快速失败(默认)

直接失败,抛出异常,不做任何额外的处理

2. Warm Up

它从开始阈值到最大QPS阈值会有一个缓存阶段,一开始的阈值时最大QPS阈值的1/3,然后慢慢增长,直到最大阈值,适用于将突然增大的流量转换为缓慢增长的场景。
在这里插入图片描述

3. 排队等待

让请求以均匀的速度通过,单机阈值为每秒通过数量,其它的排队等待,它会让设置的一个超时时间,当请求超过超时时间还未处理,则会被抛弃。
这就好比有10个人同时发出买票请求,而系统处理阈值时1人/秒,如果排队等待的时间是5秒,那么有些请求在达到5秒的等待时间后,依然不会被处理,就直接拒绝了,不再处理这个请求了。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/512533
推荐阅读
相关标签
  

闽ICP备14008679号