赞
踩
Sentinel 分布式系统的流量防卫兵。
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
参考:https://github.com/alibaba/Sentinel/wiki/%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97#%E5%85%AC%E7%BD%91-demo
github 地址:https://github.com/alibaba/Sentinel
项目结构:
启动:DashboardApplication.java 类型
端口: 8080
新建立一个项目 spring-boot-sentinel
pom.xml 引入依赖 <!-- Sentinel --> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>1.8.3</version> </dependency> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-transport-spring-mvc</artifactId> <version>1.8.3</version> </dependency> <!-- Transport 模块来与 Sentinel 控制台进行通信 --> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-transport-simple-http</artifactId> <version>1.8.3</version> </dependency>
使用 sentinel 源码中的 demo 代码,TransportSpringMvcDemoApplication.java 类
1.启动类 @SpringBootApplication public class DemoApplication { public static void main(String[] args) { triggerSentinelInit(); initFlowRules(); SpringApplication.run(DemoApplication.class, args); } private static void triggerSentinelInit() { new Thread(() -> InitExecutor.doInit()).start(); } public static void initFlowRules() { List<FlowRule> rules = new ArrayList<>(); FlowRule rule = new FlowRule(); rule.setResource("demo-hello-api"); rule.setGrade(RuleConstant.FLOW_GRADE_QPS); // 设置 QPS 数 rule.setCount(1); rules.add(rule); FlowRuleManager.loadRules(rules); } @Bean public SentinelApiHandlerMapping sentinelApiHandlerMapping() { return new SentinelApiHandlerMapping(); } @Bean public SentinelApiHandlerAdapter sentinelApiHandlerAdapter() { return new SentinelApiHandlerAdapter(); } } 2.控制接口类 @RestController public class DemoController { @GetMapping("/hello") @ResponseBody public String hello() { Entry entry = null; try { entry = SphU.entry("demo-hello-api"); return "ok: " + LocalDateTime.now(); } catch (BlockException e1) { return "helloBlockHandler: " + LocalDateTime.now(); } finally { if (entry != null) { entry.exit(); } } } }
启动时加入 JVM 参数:
VM options: -Dcsp.sentinel.dashboard.server=127.0.0.1:8080
启动端口
server.port=8081
使用 Api Post 调试:
通过设置不同的 QPS 数,查看是否有 helloBlockHandler 的异常处理结果,能判断出 Sentinel 的功能是否起效果。
Dashboard 控制台
地址:http://localhost:8080/
默认登录账号: sentinel / sentinel
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。