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); |
| |
| rule.setCount(20); |
| rule.setGrade(RuleConstant.FLOW_GRADE_QPS); |
| rule.setLimitApp("default"); |
| rules.add(rule); |
| FlowRuleManager.loadRules(rules); |
| } |
二、降级规则
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); |
| |
| rule.setCount(10); |
| rule.setGrade(RuleConstant.DEGRADE_GRADE_RT); |
| rule.setTimeWindow(10); |
| rules.add(rule); |
| DegradeRuleManager.loadRules(rules); |
| } |
| |
三、热点规则
3.1 配置

3.2 参数
Field | 说明 | 默认值 |
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); |
| |
| 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)); |
四、系统规则
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); |
| } |
五、授权规则
5.1 配置

5.2 参数
Field | 说明 | 默认值 |
resource | 资源名,即限流规则的作用对象 | - |
limitApp | 对应的黑名单/白名单,不同 origin 用 , 分隔,如 appA,appB | default,代表不区分调用来源 |
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)); |
Q.E.D.