基础示例
介绍
我们困难会遇到这些场景,比如某些参数请求过于频繁可能导致内存被打爆,所以我们需要监控这个参数,然后做出相应降级策略
配置步骤
编码
如下代码所示,注意blockHandler 如果没有配置后续降级会直接弹出错误页面,而不是返回catchMethod的值
@GetMapping("/getF")
@SentinelResource(value = "getF", blockHandler = "catchMethod")
public String getE(@RequestParam(value = "p1", required = false) String p1, @RequestParam(value = "p2", required = false) String p2) {
return "------getF p1" + p1 + " p2 " + p2;
}
public String catchMethod(String p1, String p2, BlockException exception) {
return "catchMethod";
}
配置
使用SentinelResource注解的value 值进行配置,配置索引0,即对p1的监控,假如p1 qps大于1就会触发这个规则
测试
可以看到传了p1且狂刷就会报错
补充,例外值处理
继续上述实验,假如我们规则要求有传p1时走流控,但是p1为6的时候,不走流控该怎么办呢?
只需按照下述配置即可保证p1为6时qps为200,从而达到上述效果
全局流控规则配置
配置也很简单,如下图所示即可完成全局的监控
源码地址
https://gitee.com/fugongliudehua/mscloud