sentinel篇1-官方快速限流指引
作者:互联网
前言
- 最近 API 在改造,要开始考虑限流问题了。团队项目技术栈主为阿里系,自然就是
sentinel
了。 - 开始前,一定要检查官方各开源组件版本对照:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明,找到正确版本能避掉很多坑!
- 本系列版本和demo可文末参考
快速开始
目标代码块快速限流
- pom
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>${sentinel.version}</version>
</dependency>
- main方法
public class Demo0 {
public static void main(String[] args) {
// 配置规则.
initFlowRules();
while (true) {
// 1.5.0 版本开始可以直接利用 try-with-resources 特性
try (Entry entry = SphU.entry("HelloWorld")) {
// 被保护的逻辑
protectedCodes();
} catch (BlockException ex) {
// 处理被流控的逻辑
System.err.println(DateUtil.formatDateTime(new Date()) + " blocked!");
}
try {
Thread.sleep(RandomUtil.randomLong(300L));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private static void protectedCodes() {
System.out.println(DateUtil.formatDateTime(new Date()) + " hello world");
}
private static void initFlowRules() {
List<FlowRule> rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource("HelloWorld");
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
// Set limit QPS to 20.
rule.setCount(3);
rules.add(rule);
FlowRuleManager.loadRules(rules);
}
}
- 控制台输出
2021-11-11 15:12:38 hello world
2021-11-11 15:12:38 hello world
2021-11-11 15:12:39 hello world
2021-11-11 15:12:39 hello world
2021-11-11 15:12:39 blocked!
2021-11-11 15:12:39 hello world
2021-11-11 15:12:39 blocked!
2021-11-11 15:12:39 blocked!
2021-11-11 15:12:39 blocked!
2021-11-11 15:12:40 hello world
2021-11-11 15:12:40 hello world
2021-11-11 15:12:40 blocked!
2021-11-11 15:12:40 hello world
2021-11-11 15:12:40 blocked!
2021-11-11 15:12:40 blocked!
2021-11-11 15:12:40 blocked!
2021-11-11 15:12:41 hello world
2021-11-11 15:12:41 hello world
2021-11-11 15:12:41 hello world
2021-11-11 15:12:41 blocked!
2021-11-11 15:12:42 hello world
2021-11-11 15:12:42 hello world
2021-11-11 15:12:42 blocked!
2021-11-11 15:12:42 hello world
2021-11-11 15:12:42 blocked!
2021-11-11 15:12:42 blocked!
2021-11-11 15:12:42 blocked!
2021-11-11 15:12:42 blocked!
2021-11-11 15:12:43 hello world
- 限流阻断OK!
sentinel-dashboard
- 上面快速验证了限流功能
- 我们肯定希望对限流效果和限流规则可视化观察和动态配置
- 官方的
sentinel-dashboard
就是这个作用 - 首先下载官方的 sentinel-dashboard jar包或者下载源码本地跑起调试,建议后者。一定要注意版本!官方下载地址
- 下载源码构建运行后,浏览器访问控制台即可(默认端口8080,默认登录密码 sentinel/sentinel)
sentinel“资源”注册到控制台
- 刚刚的demo引入pom依赖
- Java启动参数添加
-Dcsp.sentinel.dashboard.server=localhost:8080
,使本地应用与dashboard能够通信。 - 启动应用并刷新 dashboard 查看实时监控情况
- 可对注册的“资源”实时配置流控和降级规则,也可配置全局的【系统规则】
- 图示↓
有效参考
标签:11,指引,12,15,限流,2021,sentinel,world,hello 来源: https://www.cnblogs.com/noodlerkun/p/15541109.html