sentinel保护规则:
    流量控制规则
    熔断降级规则
    系统保护规则
    来源访问控制规则
    热点参数规则
    一:服务限流
    使用步骤:
    先通过flowRue来定义限流则,然后通过flowRueMangr.loadRules来加载规则列表

    1. private void intFlowQpsRue(){
    2. List<FlowRule> rules=new ArrayList();
    3. rule.setCount(20);
    4. rule.setGrade(RuleConstant.FlowGRADE_QPS);
    5. rule.setLimitApp("default");
    6. rule.setStrategy(RuleConstant.STRATEGY_CHAIN);
    7. rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT);
    8. rule.setClusterMode(false);
    9. rules.add(rule);
    10. FlowRuleManager.loadRules(rules);
    11. }

    属性含义如下:

    • 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

    二:服务熔断

    1. private static void uburDegradeRule(){
    2. List<DegradeRule> rules=new DegradeRule();
    3. degradeRule.setResource("KEY");
    4. degradeRule.setCount(10);
    5. degradeRule.setGrade(RuleConstant.DEGRADE_GRADE_RT);
    6. degradeRule.setTimeWindow(10);
    7. degradeRule.setMinRequestAmount(5);
    8. degradeRule.setRtSlowRequestAmount(5);
    9. rules.add(degradeRule);
    10. }

    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.