快速开始
参考Sentinel官方文档的快速开始。
引入依赖
1 2 3 4 5
| <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>1.8.5</version> </dependency>
|
自定义资源
资源 是 Sentinel 中的核心概念之一。最常用的资源是我们代码中的 Java 方法。 当然,您也可以更灵活的定义你的资源。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public void sentinelTest2(int i) { try (Entry entry = SphU.entry("sentinelTest1")) { log.info(i + ""); } catch (BlockException ex) { exceptionHandler(i, ex); } }
public static void exceptionHandler(int i, BlockException blockException) { log.info("阻断:" + i); }
|
我们还可以使用注解来定义一个资源。
1 2 3 4
| @SentinelResource(value = "sentinelTest1", blockHandler = "exceptionHandler") public void sentinelTest (int i) { log.info(i + ""); }
|
定义规则
1 2 3 4 5 6 7 8 9 10 11
| @PostConstruct private static void initFlowRules(){ List<FlowRule> rules = new ArrayList<>(); FlowRule rule = new FlowRule(); rule.setResource("sentinelTest1"); rule.setGrade(RuleConstant.FLOW_GRADE_QPS); rule.setCount(20); rules.add(rule); FlowRuleManager.loadRules(rules); }
|
测试
写一个请求,让它循环调用100次我们的资源。
1 2 3 4 5 6
| @GetMapping("/sentinelTest1") public void sentinelTest1() { for (int i = 0; i < 100; i ++){ postService.sentinelTest1(i); } }
|