Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard 。核心库不依赖 Dashboard,但是结合 Dashboard 可以取得最好的效果 。
这篇文章主要介绍 Sentinel 引入和规则配置等使用方法 。我们说的资源,可以是任何东西,服务,服务里的方法,甚至是一段代码 。
因为Sentinel控制台配置的规则是在内存中的,所以我们需要Nacos来存储规则实现持久化 。
本文主要分为四个部分:
- Sentinel代码方式示例效果
- Sentinel控制台安装
- Springboot项目接入Sentinel控制台配置规则
- 使用Nacos存储规则并实时更新
Sentinel的使用步骤大致可以分为三步:
- 引入依赖
- 定义资源
- 定义规则
1.引入依赖
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>1.8.0</version></dependency>
2.定义资源public static void main(String[] args) { // 配置规则. initFlowRules(); while (true) { // 1.5.0 版本开始可以直接利用 try-with-resources 特性,自动 exit entry try (Entry entry = SphU.entry("HelloWorld")) { // 被保护的逻辑 System.out.println("hello world"); } catch (BlockException ex) { // 处理被流控的逻辑 System.out.println("blocked!"); } }}
在这里我们定义了一个“HelloWorld”的资源,不断打印hello world 。3.定义规则
private static void initFlowRules(){ List<FlowRule> rules = new ArrayList<>(); //定义规则列表 FlowRule rule = new FlowRule(); //定义一个规则 rule.setResource("HelloWorld"); //什么资源应用此规则 rule.setGrade(RuleConstant.FLOW_GRADE_QPS); rule.setCount(20); //没秒只能20次请求 rules.add(rule);//加入该规则 FlowRuleManager.loadRules(rules); //载入规则列表}
这里定义了资源“HelloWorld”每秒只能通过20个请求 。运行该main方法,可以看到控制台输出以下内容 。
文章插图
Sentinel代码方式示例效果
可以看到请求通过20次打印hello world后再请求会阻塞打印blocked!,等到下一秒才会继续打印hello world 。
这是一个简单的示例用于说明下Sentinel的作用,下面我们会介绍Sentinel控制台的使用以及搭配Nacos存储规则并实时更新规则 。
Sentinel控制台安装Sentinel控制台提供web可视化页面配置规则,我们需要下载官方提供的jar包安装启动该服务 。
1.jar包下载
可以在官网github上下载:https://github.com/alibaba/Sentinel/releases
拉到每个版本信息区块的最下方有jar文件的下载地址 。
文章插图
jar文件的下载地址
2.启动脚本:
注意根据下载的jar包修改文件名
JAVA -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar
文章插图
启动Sentinel控制台
3.访问Sentinel控制台
地址和账号密码 http://localhost:8080 账号:sentinel 密码:sentinel
文章插图
访问Sentinel控制台
文章插图
访问Sentinel控制台
控制台已经启动完成,可以看到左边首页下面显示了一个sentinel-dashboard的项目,项目包含了监控、链路、各种规则配置和机器列表等菜单可以管理该项目规则,如果有新项目连接到控制台,这里会出现新的项目菜单 。
推荐阅读
- 自媒体创作-无版权素材资源网站分享
- IPSec VPN中如何传输动态路由协议?理论知识分析实现原理
- Java内置条件队列应用,实现经典的生产者消费者算法
- 用Python实现蒙特卡罗模拟的详细教程
- 基于Redis实现的分布式锁知识点总结
- 考试|公务员考不进怎么办?有空考个健康管理师,轻松涨工资,满足这2点即可报名
- 基于SSM实现的个人网盘系统源码
- Spring Boot中一接多口实现
- 券商|推行职业经理人制度,如何与工资总额管理漂亮配合
- 58金融前端脚手架的设计与实现