博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot项目集成sentinel降级快速失败
阅读量:4130 次
发布时间:2019-05-25

本文共 3835 字,大约阅读时间需要 12 分钟。

项目的配置:

pom.xml

org.springframework.cloud
spring-cloud-starter-alibaba-sentinel
0.2.2.RELEASE
com.alibaba.csp
sentinel-core
1.7.0
com.alibaba.csp
sentinel-transport-simple-http
1.7.0
com.alibaba.csp
sentinel-datasource-nacos
1.7.0
com.alibaba.csp
sentinel-annotation-aspectj
1.7.0
com.alibaba.csp
sentinel-web-servlet
1.7.0

application.yml

application:    name: xxxProjectName  cloud:    sentinel:      transport:        dashboard: localhost:8080  #sentinel DashBoard 的端口号和地址      eager: true

配置sentinel需要的bean 设置降级规则为快速失败等等

package com.lty.fsb.cabintech.config;import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect;import com.alibaba.csp.sentinel.slots.block.RuleConstant;import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.annotation.PostConstruct;import java.util.ArrayList;import java.util.List;@Configurationpublic class SentinelAspectConfiguration {
@Bean public SentinelResourceAspect sentinelResourceAspect() {
return new SentinelResourceAspect(); } @PostConstruct private void initRules() throws Exception {
FlowRule rule1 = new FlowRule(); rule1.setResource("getAllParkList");//@sentinelResource的value的名字 rule1.setGrade(RuleConstant.FLOW_GRADE_QPS); // 规则类型 rule1.setCount(1); // 每秒调用最大次数为 1 次 FlowRule rule2 = new FlowRule(); rule2.setResource("checkHealthInfo"); rule2.setGrade(RuleConstant.FLOW_GRADE_QPS); rule2.setCount(1); // 每秒调用最大次数为 1 次 List
rules = new ArrayList<>(); rules.add(rule1); rules.add(rule2); // 将控制规则载入到 Sentinel com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager.loadRules(rules); }}
public class AmountOptionalController {
@AutowiredAmountOptionalService amountOptionalService; @RequestMapping("healthInfo") public Result health() {
return amountOptionalService.checkHealthInfo(); }}
@Override    @SentinelResource(value = "checkHealthInfo" ,fallback = "healthFallback")    public Result checkHealthInfo() {
return ResultUtil.requestSuccess("service health"); } public Result healthFallback(){
return ResultUtil.requestFaild("进入限流"); }
@GetMapping("getAllParkList")@SentinelResource(value = "getAllParkList",fallback = "getFailedParkList")public Result getAllParkList() throws Exception {
return ResultUtil.requestSuccess("");}
public Result getFailedParkList(){
return ResultUtil.requestFaild("请求太快,请求已拦截"); }

启动后请求接口 ,连续请求两次 结果:

在这里插入图片描述

在这里插入图片描述

配置dashboard:

文档   https://github.com/alibaba/Sentinel/wikidashboard release 下载地址:https://github.com/alibaba/Sentinel/releases

启动Sentinel服务端后台管理

执行命令:java -Dserver.port=8080 -jar sentinel-dashboard-1.6.0.jar   默认8080端口

可用参数:

-Dcsp.sentinel.dashboard.server=ip:port 启动端口号和Ip
-Dcsp.sentinel.api.port=8720
-Dproject.name=report-test

访问 localhost:8080

默认登录用户:sentinel       pwd:sentinel

在这里插入图片描述 在这里插入图片描述

在编辑规则处可以修改配置的参数

目前本人就学习到这里 还有个问题:

2020-04-02 15:04:53.985 ERROR 80796 --- [pool-2-thread-1] c.a.c.s.dashboard.metric.MetricFetcher   : Failed to fetch metric from 
(ConnectionException: Connection refused)

不知道如何处理 有大神的话 请私信 !!!

转载地址:http://ygbvi.baihongyu.com/

你可能感兴趣的文章
web.py 0.3 新手指南 - RESTful doctesting using app.request
查看>>
LeetCode第46题思悟——全排列(permutations)
查看>>
Mysql中下划线问题
查看>>
微信小程序中使用npm过程中提示:npm WARN saveError ENOENT: no such file or directory
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
idea的安装以及简单使用
查看>>
Windows mysql 安装
查看>>
python循环语句与C语言的区别
查看>>
Vue项目中使用img图片和background背景图的使用方法
查看>>
vue 项目中图片选择路径位置static 或 assets区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>