sentinel 参数详解

在类“RuleConstant”中进行定义
    //grade:限流阈值类型,QPS 或线程数模式
    public static final int FLOW_GRADE_THREAD = 0;//限流 基于线程数
    public static final int FLOW_GRADE_QPS = 1;//限流 基于QPS

    public static final int DEGRADE_GRADE_RT = 0;//降级  , 代表一秒内该资源的平均响应时间
    public static final int DEGRADE_GRADE_EXCEPTION_RATIO = 1;// 降级 异常比例
    public static final int DEGRADE_GRADE_EXCEPTION_COUNT = 2;// 降级, 异常数

    public static final int DEGRADE_DEFAULT_SLOW_REQUEST_AMOUNT = 5;
    public static final int DEGRADE_DEFAULT_MIN_REQUEST_AMOUNT = 5;

    public static final int AUTHORITY_WHITE = 0;// 认证, 白名单
    public static final int AUTHORITY_BLACK = 1;// 认证, 黑名单

    //strategy:判断的根据是资源自身,还是根据其它关联资源 (refResource),还是根据链路入口
    public static final int STRATEGY_DIRECT = 0;//资源自身
    public static final int STRATEGY_RELATE = 1;//关联资源
    public static final int STRATEGY_CHAIN = 2;//链路入口

    //controlBehavior:流控效果(直接拒绝 / 排队等待 / 慢启动模式)
    public static final int CONTROL_BEHAVIOR_DEFAULT = 0;// 限流行为,直接拒绝
    public static final int CONTROL_BEHAVIOR_WARM_UP = 1;// 限流行为,WARM_UP
    public static final int CONTROL_BEHAVIOR_RATE_LIMITER = 2;// 限流行为,匀速排队
    public static final int CONTROL_BEHAVIOR_WARM_UP_RATE_LIMITER = 3;

    //limitApp:流控针对的调用来源
    public static final String LIMIT_APP_DEFAULT = "default";
    public static final String LIMIT_APP_OTHER = "other";

    public static final int DEFAULT_SAMPLE_COUNT = 2;
    public static final int DEFAULT_WINDOW_INTERVAL_MS = 1000;

配置实例

[
    {
        "resource": "ruoyi-auth",
        "count": 500,
        "grade": 1,
        "limitApp": "default",
        "strategy": 0,
        "controlBehavior": 0
    },
	{
        "resource": "ruoyi-system",
        "count": 1000,
        "grade": 1,
        "limitApp": "default",
        "strategy": 0,
        "controlBehavior": 0
    },
	{
        "resource": "ruoyi-gen",
        "count": 200,
        "grade": 1,
        "limitApp": "default",
        "strategy": 0,
        "controlBehavior": 0
    },
	{
        "resource": "ruoyi-job",
        "count": 300,
        "grade": 1,
        "limitApp": "default",
        "strategy": 0,
        "controlBehavior": 0
    } 
]

### Sentinel 热点参数限流实现原理 #### 参数流量统计机制 热点参数限流的核心在于对特定参数及其值的流量进行精确统计。当接收到请求时,Sentinel会解析并提取指定位置的参数,随后对该参数的不同取值建立独立的计数器来跟踪访问频率[^1]。 #### 阈值判定逻辑 一旦某个具体参数值对应的累计请求数量达到预设阈值,则认为该参数成为“热点”。此时系统依据设定好的策略执行相应的限流措施,比如拒绝新的同类型请求或将超出部分请求延迟处理等操作[^3]。 #### 动态调整能力 为了适应实际业务场景的变化需求,Sentinel允许动态修改受监控的参数索引及对应的最大允许QPS(每秒查询率),而无需重启服务实例即可即时生效这些更改设置[^2]。 ```java // 定义规则示例代码片段 FlowRule rule = new FlowRule(); rule.setResource("/api/example"); rule.setGrade(RuleConstant.FLOW_GRADE_QPS); ArrayParamFlowItem item = new ArrayParamFlowItem(); item.setCount(1); // QPS threshold is set to 1 as an example. item.setParamIdx(0); // Limit on the first parameter of the request path. List<ParamFlowItem> paramItemList = Lists.newArrayList(item); rule.setParamItem(paramItemList.toArray(new ParamFlowItem[0])); ``` 通过上述方法论和技术手段的支持下,实现了高效灵活且易于管理维护的热点参数限流功能,在高并发环境下有效保障了系统的稳定性和响应速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值