五小步快速集成使用sentinel限流( 二 )


只要应用的地址变化后,之前的配置就消失了 。不可能每次地址变化后都到控制台去重新配置策略,所以需要选择代码方式制定规则 。
流控规则一般会有如下几个:

  • 资源限流规则FlowRule
  • 异常熔断降级规则DegradeRule
  • 系统过载保护规则SystemRule
  • 访问黑白名单规则AuthorityRule
控制台设置流控规则,如下:
五小步快速集成使用sentinel限流

文章插图
代码制定和加载流控规则,如下:
public static void mAIn(String[] args) {// 加载限流规则initSentinelRule();SpringApplication.run(SpringSentinelDemoApplication.class, args);}private static void initSentinelRule() {// 资源限流FlowRule flowRule = new FlowRule("test").setCount(1).setGrade(RuleConstant.FLOW_GRADE_QPS);List<FlowRule> list = new ArrayList<>();/*if (method) {FlowRule flowRule1 = new FlowRule("test:sayHello(java.lang.String)").setCount(5).setGrade(RuleConstant.FLOW_GRADE_QPS);list.add(flowRule1);}*/list.add(flowRule);FlowRuleManager.loadRules(list);// 异常降级/*List<DegradeRule> DegradeRules = new ArrayList<>();DegradeRule degradeRule = new DegradeRule("");degradeRule.setGrade(CircuitBreakerStrategy.ERROR_RATIO.getType());degradeRule.setCount(0.7); // Threshold is 70% error ratiodegradeRule.setMinRequestAmount(100).setStatIntervalMs(30000) // 30s.setTimeWindow(10);DegradeRules.add(degradeRule);DegradeRuleManager.loadRules(DegradeRules);*/// 系统负载保护/*List<SystemRule> systemRules = new ArrayList<>();SystemRule systemRule = new SystemRule();systemRule.setHighestSystemLoad(10);systemRules.add(systemRule);SystemRuleManager.loadRules(systemRules);*/// 黑白名单授权访问/*AuthorityRule rule = new AuthorityRule();rule.setResource("test");rule.setStrategy(RuleConstant.AUTHORITY_WHITE);rule.setLimitApp("appA,appB");AuthorityRuleManager.loadRules(Collections.singletonList(rule));*/}4、启动测试项目启动完毕后,访问链接http://localhost:9091/foo , 就可以在控制台上看到被限流的资源
五小步快速集成使用sentinel限流

文章插图
在流控规则这里,可以看到上文中在代码里设置的规则:
五小步快速集成使用sentinel限流

文章插图
启动项目后,测试限流效果 , 如下:
  1. 1秒内多次访问http://localhost:9091/foo,可以看到触发了限流异常:

五小步快速集成使用sentinel限流

文章插图
  1. 输入http://localhost:9091/foo?t=-1会触发异常 。fallback用于配置熔断降级的方法 , 当发生慢调用、异常数、异常比例数时,会调用fallback方法 。
    五小步快速集成使用sentinel限流

    文章插图
  2. 输入http://localhost:9091/baz/foo、http://localhost:9091/baz/bad,会分别触发异常和默认fallback 。
    五小步快速集成使用sentinel限流

    文章插图
5、总结本文主要介绍spring项目如何快速集成sentinel实现系统限流 。
首先启动sentinel-dashboard,然后使用5个简单步骤即可使用sentinel限流 。
在应用server的IP地址频繁变动的场景下,建议使用代码方式限流 。
流控的方式较多 , 你需要根据自身的业务需求做选择,我一般情况下选择单机流控和系统保护 。

【五小步快速集成使用sentinel限流】


推荐阅读