Alibaba Sentinel 规则参数总结

一、流控规则

1.1 配置

Alibaba Sentinel 规则参数总结_第1张图片

 

1.2 参数

Field 说明 默认值
resource 资源名称  
count 限流阈值  
grade 限流阈值类型:0 表示线程数,1表示QPS QPS 模式
limitApp 流控针对的调用来源 default,代表不区分调用来源
strategy 流控模式: 0表是直接,1表示关联,2表示链路 根据资源本身
controlBehavior 流控效果(0快速失败 / 1warn up/ 2排队等待) 直接拒绝

1.3 代码配置示例

private void initFlowQpsRule() {
    List 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/%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6

1.5 参考:流量控制

二、降级规则

2.1 配置

Alibaba Sentinel 规则参数总结_第2张图片

2.2 参数

Field 说明 默认值
resource 资源名,即限流规则的作用对象  
count 阈值  
grade 熔断策略,支持秒级 RT/秒级异常比例/分钟级异常数 秒级平均 RT
timeWindow 降级的时间,单位为 s  
rtSlowRequestAmount RT 模式下 1 秒内连续多少个请求的平均 RT 超出阈值方可触发熔断(1.7.0 引入) 5
minRequestAmount 异常熔断的触发最小请求数,请求数小于该值时即使异常比率超出阈值也不会熔断(1.7.0 引入) 5

2.3 代码配置示例

private void initDegradeRule() {
    List 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 参考:

三、热点规则

3.1 配置

Alibaba Sentinel 规则参数总结_第3张图片

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 配置

Alibaba Sentinel 规则参数总结_第4张图片

4.2 参数

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

4.3 代码配置示例

private void initSystemRule() {
    List 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 配置

Alibaba Sentinel 规则参数总结_第5张图片

 

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));


 

你可能感兴趣的:(spring,cloud,alibaba)