• Sentinel流控规则详解


    介绍

    • Sentinel 提供一个轻量级的开源控制台,可以提供机器发现以及健康情况管理功能;
    • sentinel是懒加载机制,只有访问过一次的资源才会被监控,不过可以通过配置关闭懒加载;

    流控操作台

    在簇点链路中,可以给指定路径添加流控规则:

    在这里插入图片描述

    规则详解

    Sentinel流控模式 - 直接

    • 默认的效果为快速失败

    Sentinel流控效果 - 快速失败

    • 这个就是字面意思,当这个请求地址每秒访问量超过1qps时,方法将不继续处理请求,有请求访问时,提示失败信息
      在这里插入图片描述
      请求返回信息
      在这里插入图片描述

    Sentinel流控效果 - 预热(Warm Up)

    • 默认的冷加载因子为 3 ,如果当你单机阈值为 100 的时候,并不是一开始就允许 100 个QPS访问;
    • 因为已经选择了Warm Up,就要通过计算才能得出初始阈值:
      • 初始阈值 = 单机阈值 / 3,那么,在这里就是 100 / 3 ≈ 33,经过10s的预热之后,阈值才会升到100
    • 使用场景:
      • 秒杀、或者有其他活动的时候都可以进行设置,防止请求QPS短时间激增,搞垮服务器
        在这里插入图片描述

    Sentinel流控效果 - 排队等待

    • 字面意思,超出QPS之后,请求进入之后也会匀速等待处理,类似于漏桶算法
    • 主要用于处理突发性比较强的场景,例如消息队列,在某一秒会有大量请求,接下来一段时间是空白的
      在这里插入图片描述

    Sentinel流控模式 - 关联

    • 如下所示,如果关联资源/index/v1/hello/indexB的QPS达到100,那么/index/v1/hello/indexA再接收到请求时,则会做快速失败处理;
    • 使用场景:
      • 在同一服务中,分为有写入数据接口和读数据接口,恰好写入数据接口的权重比较重要,那么在关联资源上设置读取接口就行了,一旦写入请求多,就限制读的请求;
        在这里插入图片描述

    Sentinel流控模式 - 线程数 直接失败

    • 线程数直接失败与QPS直接失败的区别:
      • 如果QPS为10的话,那么这10个请求需要多少个线程处理是不一定的,有可能是5个,也有可能是6个;
      • 如果请求是线程数的话,那么将不关心多少个请求,最多接受100个线程同时调用此接口;
        在这里插入图片描述

    自定义流控异常信息

    spring:
      cloud:
        sentinel:
          #配置限流之后的响应内容
          scg:  
            fallback:
              # 两种模式:一种是response返回文字提示信息,一种是redirect,重定向跳转,需要同时配置redirect(跳转的uri)
              mode: response
              # 响应的状态
              response-status: 426
              # 响应体
              response-body: '{"code": 426,"message": "限流了,稍后重试!"}'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    ASAN地址消毒+GCOV覆盖率分析
    MyBatis打印不带问号SQL
    Linux进程控制
    安卓开发Java版——UI界面的设计
    Android 状态栏显示运营商名称
    Docker 容器文件(数据)共享
    分享一个因子挖掘的利器:遗传规划
    从零开始的搭建指南:开发高效的抖音预约服务小程序
    1.10 - 总线
    Linux命令--重启系统的方法
  • 原文地址:https://blog.csdn.net/xianyun1992/article/details/125481955