Sentinel 新手指南
Sentinel 分布式系统的流量防卫兵。
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
Sentinel 源码项目
github 地址:https://github.com/alibaba/Sentinel
项目结构:
启动:DashboardApplication.java 类型
端口: 8080
Sentinel 客户端项目
-
新建立一个项目 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
|