简单说,sentinel是分布式系统的流量防卫兵,是阿里巴巴开源的一套用于服务容错的综合性解决方案。随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel 分为两个部分:
核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。
控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器
怎么使用呢
第一步:POM如下
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>1.8.3</version>
</dependency>
第二步:JAVA代码中用它
public static void main(String[] args) {
initFlowRules();
while (true) {
Entry entry = null;
try {
entry = SphU.entry("HelloWorld");
/*业务逻辑 - 开始*/
System.out.println("hello world");
/*业务逻辑 - 结束*/
} catch (BlockException e1) {
/*流控处理 - 开始*/
System.out.println("block!");
/*流控处理 - 结束*/
} finally {
if (entry != null) {
entry.exit();
}
}
}
}
第三步:在initFlowRules方法中插入限流逻辑
private static void initFlowRules(){
List<FlowRule> rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource("HelloWorld");
//通过QPS来限流
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
//设置QPS为20.
rule.setCount(20);
rules.add(rule);
FlowRuleManager.loadRules(rules);
}
第四步:运行起来看效果