分享一下最近的心得吧,alibaba的限流技术
对于老项目建议采用注解方式,新项目也建议,这样代码不繁琐
1.项目导入sentinel的依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>1.8.1</version>
</dependency>
2.导入切面依赖(因为采用的注解方式
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-annotation-aspectj</artifactId>
<version>1.8.1</version>
</dependency>
3.编写限流规则
@Bean
public void initFlowQpsRule() {
List<FlowRule> rules = new ArrayList<>();
FlowRule rule = new FlowRule(HeaderLoginController.RESOURCE_NAME);
// set limit qps to 2
rule.setCount(2);
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
rule.setLimitApp("default");
rules.add(rule);
FlowRuleManager.loadRules(rules);
}
3.1 对于限流规则自己可以编写哦
4.编写接口
//资源名称
public static final String RESOURCE_NAME = "testSentinel";
public R<String> queryUserByUserNameBlock(BlockException ex) {
//打印异常
log.warn("当前被限流");
return R.success("FAIL");
}
@GetMapping("testSentinel")
@SentinelResource(value = RESOURCE_NAME, blockHandler = "queryUserByUserNameBlock")
public R<String> testSentinel() {
return R.success("Hello Sentinel");
}
4.1接口讲解
4.2 讲解4.1中的方法名所对应的方法
5.然后就完成quick start了,至于您的项目,根据实际情况而定,如需其他的技术,可联系我