sentinel保护规则:
流量控制规则
熔断降级规则
系统保护规则
来源访问控制规则
热点参数规则
一:服务限流
使用步骤:
先通过flowRue来定义限流则,然后通过flowRueMangr.loadRules来加载规则列表
private void intFlowQpsRue(){
List<FlowRule> rules=new ArrayList();
rule.setCount(20);
rule.setGrade(RuleConstant.FlowGRADE_QPS);
rule.setLimitApp("default");
rule.setStrategy(RuleConstant.STRATEGY_CHAIN);
rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT);
rule.setClusterMode(false);
rules.add(rule);
FlowRuleManager.loadRules(rules);
}
属性含义如下:
- limitApp:是否需要针对调用来源进行限流,默认是default,即不区分调用来源;
- straegy:调用关系限流策略-直接,链路,关联;
根据调用方限流
- default:表示不区分调用者,也就是任何访问调用者的请求都会进行限流统计
- {some_origin_name}:设置特定的调用者,只有来自这个调用者的请求才会进行流量统计和控制
- other:表示针对除{some_origin_name}外的其他调用者进行流量控制。
规则的生效顺序:{some_origin_name}-other-default
根据调用链路入口限流
具有关系的资源流量控制
contrlBehavior:流控行为,包括直接拒绝,排队等待,慢启动模式,默认直接拒绝
- 直接拒绝:RuleConstant.CONTROL_BEHAVIOR_DEFAULT;
- warm up 冷启动:RuleConstant.CONTROL_BEHAVIOR_WARM_UP;
- 匀速排队:RuleConstant.CONTROL_BEHAVIOR_LIMITER;
冷启动+匀速排队:RuleConstant.CONTROL_BEHAVIOR_WARM_UP_RATE_LIMITER
- clusterMod:是否是集群限流,默认为否
grade:
- 并发线程数:FLOW_GRADETH
- QPS:FLOW_GRADE_QPS
二:服务熔断
private static void uburDegradeRule(){
List<DegradeRule> rules=new DegradeRule();
degradeRule.setResource("KEY");
degradeRule.setCount(10);
degradeRule.setGrade(RuleConstant.DEGRADE_GRADE_RT);
degradeRule.setTimeWindow(10);
degradeRule.setMinRequestAmount(5);
degradeRule.setRtSlowRequestAmount(5);
rules.add(degradeRule);
}
grade:熔断策略,支持秒级RT,秒级异常比例,分钟级异常数。默认是秒级RT
平均响应时间:RuleConstant.DEGRADE_GRADE_RT(默认上限是4900ms,如果超出上限都会算作4900ms,如果需要修改通过启动参数-Dcsp.sentinel.statistic.max.rt=xxx来配置)
异常比例:RuleConstant.DEGRADE_GRADE_EXCEPTION_RATIO
异常数:RuleConstant.DEGRADE_GRADE_EXCEPTION_COUNT
timeWindow:熔断降级的时间窗口,单位为s。也就是出发熔断降级之后多长时间内自动熔断。
rtSlowRequestAmount:在rt模式下,1s内持续多少个请求的平均rt超出阈值后出发熔断,默认值是5
minRequestAmount:出发的异常熔断最小请求数,请求数小于该值时即使异常比例超出阈值也不会触发熔断,默认值是5.