构建springboot项目




引入sentinel-core依赖
在pom.xml中引入sentinel-core的依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>1.8.0</version>
</dependency>
编写代码
定义限流规则
限流规则分四步:- 创建存放限流规则的集合
- 创建限流规则
- 将限流规则存放到集合中
- 加载限流规则
具体代码实现如下:
//定义限流规则 //@PostConstruct 当前类的构造函数执行之后执行有该注解的方法 @PostConstruct public void initFlowRules() { //1. 创建存放限流规则的集合 List<FlowRule> rules = new ArrayList<>(); //2. 创建限流规则 FlowRule rule = new FlowRule(); //定义资源,资源就是限流规则会对那个资源生效 rule.setResource("Hello"); //定义限流规则类型,RuleConstant.FLOW_GRADE_QPS表示QPS限流类型 rule.setGrade(RuleConstant.FLOW_GRADE_QPS); //定义QPS每秒能通过的请求个数 rule.setCount(2); //3. 将限流规则存放到集合中 rules.add(rule); //4. 加载限流规则 FlowRuleManager.loadRules(rules); }使用限流规则
@GetMapping("hello") public String hello() { //使用限流规则 try(Entry entry = SphU.entry("Hello")) {//限流入口 return "hello Sentinel";//被保护的资源 } catch (BlockException e) { return "系统繁忙,请稍后";//被限流或者被降级的操作处理 } }
测试
启动上述项目
如果项目启动成功,并且出现如下的INFO,则说明Sentinel限流规则已生效。
在这里我的端口号默认是8080,所以直接在浏览器中输入
localhost:8080/hello
点击刷新得到的结果也是正常的hello Sentinel,如果快速点击刷新则会显示如下:
此时说明被限流了,因为我们上述代码中设置了rule.setCount(2);
在上述运行成功后控制台输出的INFO中输出的路径就是日志所在的路径,
也就是上述控制台信息图标蓝的url就是本地的Sentinel的日志,日志如下(日志较多,查看时间最近的名字最长的那个):

启动Sentinel控制台
- 下载Sentinel控制台jar包(最新下载地址:https://github.com/alibaba/Sentinel/releases)
- 运行jar包:
注意上述9000是自定义的控制台的端口号,运行的jar注意是自己下载的那个jarjava -Dserver.port=9000 -jar sentinel-dashboard-1.8.0.jar
运行成功后在浏览器输入localhost:9000即可进入Sentinel控制台
登录账号和密码都是默认sentinel
注意,本地应用还没有接入到本地的控制台,所以我们还需要继续进行配置。
本地应用接入到本地控制台
引入依赖
<!--本地应用接入到本地控制台的依赖-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>1.7.2</version>
</dependency>
配置本地应用的JVM参数


-Dcsp.sentinel.dashboard.server=localhost:9000 -Dproject.name=SentinelQuickStart
-Dcsp.sentinel.dashboard.server=localhost:9000 :设置Sentinel控制台的主机地址和端口号,这里就是我们本机地址和之前设置的端口号9000
-Dproject.name=SentinelQuickStart :设置本地应用在Sentinel控制台中的名称
测试
上述配置完成后,重新启动web项目
启动成功后在浏览器先访问一次localhost:8080/hello然后刷新Sentinel控制台才会出现如下:
版权声明:本文为qq_43524048原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。