码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Sentinel流控规则详解


    文章目录

    • 介绍
      • 流控操作台
    • 规则详解
      • Sentinel流控模式 - 直接
        • Sentinel流控效果 - 快速失败
        • Sentinel流控效果 - 预热(Warm Up)
        • Sentinel流控效果 - 排队等待
      • Sentinel流控模式 - 关联
      • 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
  • 相关阅读:
    Java.lang.Class类 getResource()方法有什么功能呢?
    Python绘图系统24:绘图类型和坐标映射的关系
    解决Mybatis-Plus或PageHelper多表分页查询总条数不对问题
    20230903-闹钟
    虹科方案 | 从概念到生产的自动驾驶软件在环(SiL)测试解决方案
    java基础入门(一)
    谷粒商城项目-环境配置
    视频剪辑方法:一键批量调整色调的高效技巧
    DTSE Tech Talk 第13期:Serverless凭什么被誉为未来云计算范式?
    uni-app配置微信开发者工具
  • 原文地址:https://blog.csdn.net/xianyun1992/article/details/125481955
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号