Alibaba Sentinel 规则参数总结

本文总结了Alibaba Sentinel各种规则的参数。

基于Sentinel 1.6.2编写,本文未来可能不再适用

一、流控规则

1.1 配置

流控规则

1.2 参数

Field说明默认值
resource资源名,资源名是限流规则的作用对象
count限流阈值
grade限流阈值类型,QPS 或线程数模式QPS 模式
limitApp流控针对的调用来源default,代表不区分调用来源
strategy判断的根据是资源自身,还是根据其它关联资源 (refResource),还是根据链路入口根据资源本身
controlBehavior流控效果(直接拒绝 / 排队等待 / 慢启动模式)直接拒绝

1.3 代码配置示例

private void initFlowQpsRule() {
    List<FlowRule> rules = new ArrayList<>();
    FlowRule rule = new FlowRule(resourceName);
    // set limit qps to 20
    rule.setCount(20);
    rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
    rule.setLimitApp("default");
    rules.add(rule);
    FlowRuleManager.loadRules(rules);
}

1.4 参考:https://github.com/alibaba/Sentinel/wiki/如何使用#流量控制规则-flowrule

1.5 参考:流量控制

二、降级规则

2.1 配置

降级规则

2.2 参数

Field说明默认值
resource资源名,即限流规则的作用对象
count阈值
grade降级模式,根据 RT 降级还是根据异常比例降级RT
timeWindow降级的时间,单位为 s

2.3 代码配置示例

private void initDegradeRule() {
    List<DegradeRule> rules = new ArrayList<>();
    DegradeRule rule = new DegradeRule();
    rule.setResource(KEY);
    // set threshold RT, 10 ms
    rule.setCount(10);
    rule.setGrade(RuleConstant.DEGRADE_GRADE_RT);
    rule.setTimeWindow(10);
    rules.add(rule);
    DegradeRuleManager.loadRules(rules);
}

2.4 参考:https://github.com/alibaba/Sentinel/wiki/如何使用#熔断降级规则-degraderule

三、热点规则

3.1 配置

热点规则

3.2 参数

属性说明默认值
resource资源名,必填
count限流阈值,必填
grade限流模式QPS 模式
durationInSec统计窗口时间长度(单位为秒),1.6.0 版本开始支持1s
controlBehavior流控效果(支持快速失败和匀速排队模式),1.6.0 版本开始支持快速失败
maxQueueingTimeMs最大排队等待时长(仅在匀速排队模式生效),1.6.0 版本开始支持0ms
paramIdx热点参数的索引,必填,对应SphU.entry(xxx, args)中的参数索引位置
paramFlowItemList参数例外项,可以针对指定的参数值单独设置限流阈值,不受前面count阈值的限制。仅支持基本类型
clusterMode是否是集群参数流控规则false
clusterConfig集群流控相关配置

3.3 代码配置示例

ParamFlowRule rule = new ParamFlowRule(resourceName)
    .setParamIdx(0)
    .setCount(5);
// 针对 int 类型的参数 PARAM_B,单独设置限流 QPS 阈值为 10,而不是全局的阈值 5.
ParamFlowItem item = new ParamFlowItem().setObject(String.valueOf(PARAM_B))
    .setClassType(int.class.getName())
    .setCount(10);
rule.setParamFlowItemList(Collections.singletonList(item));
​
ParamFlowRuleManager.loadRules(Collections.singletonList(rule));

3.4 参考:https://github.com/alibaba/Sentinel/wiki/热点参数限流

四、系统规则

4.1 配置

系统规则

4.2 参数

Field说明默认值
highestSystemLoad最大的load1-1 (不生效)
avgRt所有入口流量的平均响应时间-1 (不生效)
maxThread入口流量的最大并发数-1 (不生效)
qps所有入口资源的 QPS-1 (不生效)

4.3 代码配置示例

private void initSystemRule() {
    List<SystemRule> rules = new ArrayList<>();
    SystemRule rule = new SystemRule();
    rule.setHighestSystemLoad(10);
    rules.add(rule);
    SystemRuleManager.loadRules(rules);
}

4.4 参考:https://github.com/alibaba/Sentinel/wiki/如何使用#系统保护规则-systemrule

五、授权规则

5.1 配置

授权规则

5.2 参数

Field说明默认值
resource资源名,即限流规则的作用对象-
limitApp对应的黑名单/白名单,不同 origin 用,分隔,如appA,appBdefault,代表不区分调用来源
strategy限制模式,AUTHORITY_WHITE为白名单模式,AUTHORITY_BLACK为黑名单模式,默认为白名单模式AUTHORITY_WHITE

5.3 代码配置示例

AuthorityRule rule = new AuthorityRule();
rule.setResource("test");
rule.setStrategy(RuleConstant.AUTHORITY_WHITE);
rule.setLimitApp("appA,appB");
AuthorityRuleManager.loadRules(Collections.singletonList(rule));
预览

5.4 参考:https://github.com/alibaba/Sentinel/wiki/如何使用#访问控制规则-authorityrule

最后修改:2022 年 10 月 18 日
如果觉得我的文章对你有用,请点个赞吧~