sentinel网关限流配置及使用

sentinel控制台源码:https://download.csdn.net/download/yixin605691235/89543923

sentinel控制台jar包:https://download.csdn.net/download/yixin605691235/89543931

不同环境直接修改jar包中的application.yml文件中的nacos地址就可以了。

一、网关限流配置及使用

1、nacos配置

新增文件gdebs-gateway-sentinel.yml、gdebs-gateway-sentinel-dynamic.properties

spring:cloud:sentinel:eager: true#配置网关scg:fallback:content-type: application/json# 模式 response、redirectmode: response# 响应状态码response-status: ${sentinel.renturn.code}# 响应信息response-body: ${sentinel.renturn.msg}transport:dashboard: ${sentinel.dashboard.host}:${sentinel.dashboard.port}filter:enabled: falseip: gdebs-gateway-service# 控制台数据持久化配置datasource:ds1:nacos:server-addr: ${sentinel.nacos.host}:${sentinel.nacos.port}username: ${sentinel.nacos.name}password: ${sentinel.nacos.pwd}namespace: ${sentinel.nacos.namespace}group-id: ${sentinel.nacos.group}data-id: ${spring.application.name}-sentinel-flow-rules.jsondata-type: jsonrule-type: gw-flowds2:nacos:server-addr: ${sentinel.nacos.host}:${sentinel.nacos.port}username: ${sentinel.nacos.name}password: ${sentinel.nacos.pwd}namespace: ${sentinel.nacos.namespace}group-id: ${sentinel.nacos.group}data-id: ${spring.application.name}-sentinel-api-rules.jsondata-type: jsonrule-type: gw-api-groupgateway:# spring cloud gateway 路由配置方式discovery:locator:#表明gateway开启服务注册和发现的功能enabled: true#将请求路径上的服务名配置为小写lower-case-service-id: true
# sentinel控制台信息
sentinel.dashboard.host=xxxx
sentinel.dashboard.port=xxx# sentinel返回信息
sentinel.renturn.msg= 对不起,已经被限流了!!!
sentinel.renturn.code= xxx# sentinel数据持久化配置
sentinel.nacos.host=xxx.xx.xx.xx
sentinel.nacos.port=xxxx
sentinel.nacos.name=xx
sentinel.nacos.pwd=nacxxos
sentinel.nacos.namespace=xxx
sentinel.nacos.group=xxx
spring.application.name=xxx

2、网关应用增加依赖:

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId></dependency><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-spring-cloud-gateway-adapter</artifactId></dependency>

3、控制台配置限流规则

http://localhost:8081/#/login

帐号/密码:sentinel/sentinel

此处注意:sentinel控制台采用懒加载,因此需要现有请求才能看到链路

API管理:可以根据请求路径来设置API组

设置网关可以按照API分组设置,也可以设置app应用的总体限流

流控方式有快速失败和匀速排队两种:

快速失败可以设置Burst size,这是一个突刺个数,如果QPS设置为1,突刺数设置为10 ,当高并发请求时,首先能消耗的请求数是11个,超过11则拒绝,后续还是可通过一个请求。

匀速排队可以设置等待时长毫秒,当高并发请求超过QPS时,进入等待状态,如果超过等待时长则拒绝。

二、资源和规则配置说明

官网详细说明:basic-api-resource-rule | Sentinel

1、资源定义

主流框架默认适配:系统当前使用的springcloud本身支持请求链路

另外一种方式通过注解引用的方式:@SentinelResource

注解需要增加一个依赖

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-core</artifactId><version>1.8.6</version>
</dependency>
@RestController
@RequestMapping(value = "/sentinel")
@Api(value = "sentinel", tags = {"testController"})
public class TestController {@SentinelResource(value = "tesSentinel" , blockHandler = "myBlockHander")@PostMapping("/tesSentinel")public String tesSentinel() {return "1";}// 限流或者熔断之后执行的方法public String myBlockHander(BlockException blockException){if(blockException instanceof FlowException){// 限流异常return "您被限流了";}else if(blockException instanceof DegradeException){// 熔断异常return "您被熔断了";}return "被限制了";}
}

2、规则定义

可以通过代码设置规则,也可以通过控制台设置规则

private void initFlowQpsRule() {List<FlowRule> rules=new ArrayList<>();System.out.println("限流初始化规则");// 定义一个限流规则FlowRule flowRule=new FlowRule();flowRule.setResource("tesSentinel"); // 资源名|必须参数flowRule.setGrade(RuleConstant.FLOW_GRADE_QPS); // 限流指标:QPS/线程数 |必须参数flowRule.setCount(1);  // 限流数量(上一步 QPS 或线程数的值) |必须参数flowRule.setStrategy(RuleConstant.STRATEGY_DIRECT); //调用关系限流策略【非必须设置】flowRule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER); // 流控效果【非必须设置】 排队等待flowRule.setMaxQueueingTimeMs(1000); // 等待超时时间flowRule.setClusterMode(false); // 是否集群限流【非必须设置,默认非集群】rules.add(flowRule);FlowRuleManager.loadRules(rules);}

提供的关联流控和链路流控可以应用到一些特殊的业务场景的流控

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据信用查询有哪些问题值得注意呢?

随着大数据技术的不断发展&#xff0c;大数据信用报告成为一种新型的信用风险检测工具&#xff0c;被很多的银行和机构广泛用于信用风险评估&#xff0c;那大数据信用查询有哪些问题值得注意呢?本文就带大家一起去了解一下&#xff0c;希望对你有一定的帮助。 大数据信用查询这…

python 方向梯度直方图(HOG)算法 【附两种实现方法并可视化】

目录 一、概述1.1 算法定义1.2 实现过程二、方法1(skimage库)2.1 代码实现2.2 结果示例三、方法2(cv2库)3.1 代码实现3.2 结果示例四、结果对比🙋 结果预览 一、概述 1.1 算法定义 方向梯度直方图(Histogram of Oriented Gradient,HOG):是应用在计算机视觉和图像处…

LLM微调

文章目录 一. 常见微调分类1.1 全量微调&#xff08;FFT&#xff1a;Full Fine-tuning&#xff09;1.2 参数高效微调(PEFT&#xff1a;Parameter-Efficient Fine-Tuning)1.3 指令微调&#xff08;IFT&#xff1a;Instructional Fine-tuning&#xff09;1.3.1 Hard prompt1.3.2 …

Docker存储目录问题,如何修改Docker默认存储位置?(Docker存储路径、Docker存储空间)etc/docker/daemon.json

文章目录 如何更改docker默认存储路径&#xff1f;版本1&#xff08;没测试&#xff09;版本2&#xff08;可行&#xff09;1. 停止 Docker 服务&#xff1a;2. 创建新的存储目录&#xff1a;3. 修改 Docker 配置文件&#xff1a;4. 移动现有的 Docker 数据&#xff1a;5. 重新…

Uniapp自定义动态加载组件(2024.7更新)

1.本次介绍如何使用uniapp实现自定义动态加载Loading的组件&#xff0c;可以gif格式&#xff0c;也可以mp4格式等; 编写自定义Loading组件(CustomLoader.vue)&#xff1b;组件中含有“动态接收图片路径”&#xff0c;“10秒超时未false则自动断开关闭Loading”&#xff1b;在全…

【JavaScript 算法】广度优先搜索:层层推进的搜索策略

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、算法原理二、算法实现三、应用场景四、优化与扩展五、总结 广度优先搜索&#xff08;Breadth-First Search, BFS&#xff09;是一种用于遍历或搜索图或树数据结构的算法。该算法从起始节点开始&#xff0c;逐层向外扩展…

小程序-2(WXML数据模板+WXSS模板样式+网络数据请求)

目录 1.WXML数据模板 数据绑定 事件绑定 小程序中常用的事件 事件对象的属性列表 target和currentTarget的区别 bindtap的语法格式 在事件处理事件中为data中的数据赋值 事件传参与数据同步 事件传参 bindinput的语法绑定事件 文本框和data的数据同步 条件渲染 w…

SpringCloud | 单体商城项目拆分(微服务)

为什么要进行微服务拆分&#xff1f; 在平常的商城项目中&#xff0c;我们一般的项目结构模块都是将各种业务放在同一个项目文件夹&#xff0c;比如像&#xff1a; 用户&#xff0c;购物车&#xff0c;商品&#xff0c;订单&#xff0c;支付等业务都是放在一起&#xff0c;这样…

线上观看 3 万+!「智能运维MeetUp」精彩回顾,探讨智能体构建新方向

龙蜥社区“走进系列”第 11 期走进中兴通讯-智能可观测运维技术 MeetUp 于成都圆满结束&#xff0c;由中兴通讯联合龙蜥社区系统运维联盟&#xff08;SOMA&#xff09;&#xff08;以下简称“联盟”&#xff09;共同举办。本次活动现场汇聚了阿里云、谐云科技、乘云数字、中兴通…

MySQL数据库day7.11

一&#xff0c;SQL概述 1.1 SQL语句语法 MySQL 数据库的 SQL 语句不区分大小写&#xff0c;关键字建议使用大写&#xff0c; 以分号结尾。例如&#xff1a; SELECT * FROM user; 使用 /**/ 、 -- 、 # 的方式完成注释 /* 多行注释 */ -- 单行注释 # 单行注释 SELECT * FRO…

计算机硬件---如何更新自己电脑的BLOS

1找官网 例如“我使用的是HP&#xff08;惠普&#xff09;品牌的电脑”我只需要在浏览器上搜索“惠普官网”或“惠普-blos更新” 就可以看到&#xff0c;来自官网中更新blos的信息 2.有些品牌要查序列号该怎么办呢&#xff1f; 有许多方法可以查询&#xff0c;例如&#xf…

android13 frameworks里面常用的保存信息或者版本判断的方法

总纲 android13 rom 开发总纲说明 目录 1.前言 2. 数据库 2.1 代码读取用法参考 3.prop 属性配置 3.1 property的key值有哪些特点 4.区别 5. 其他数据存储 6.彩蛋 1.前言 frameworks 不像我们一般开发app那样,很多应用保存的方法都无法使用。这里记录我们系统rom开…

关于java的反射

❓❓❓反射是啥呀相信许多学java的同学非常困惑在学的时候&#xff0c;总是感觉懂了却又没懂或者直接忽略过去了&#xff0c;那么本文就带大家探讨一下什么是反射在java中以及它的机制和运用。 ⭐️什么是反射&#xff1a; 首先我们知道一些知识&#xff1a; 维基百科的解释 …

springboot项目 导入 maven坐标 错误 Could not transfer artifact XXX

1.报错原因 当时导入的是 redis坐标 &#xff0c;导入jar 包报错&#xff08;当时是网速太慢了&#xff0c;一直卡着不动 就关了 idea 重新下载&#xff09;结果报错 之前的redis 项目都可以的&#xff0c;网上找了一下 都没解决 2.解决办法 既然说不能传输&#xff0c; 就说…

有用的工具

一、appuploader Appuploader home -- A tool improve ios develop efficiency such as submit ipa to appstore and manage ios certificate这是一款p12证书查看的工具&#xff0c; 需要建立一个apple ID专用密码&#xff1a;Manage your Apple ID

redis其他类型和配置文件

很多博客只讲了五大基本类型&#xff0c;确实&#xff0c;是最常用的&#xff0c;而且百分之九十的程序员对于Redis只限于了解String这种最常用的。但是我个人认为&#xff0c;既然Redis官方提供了其他的数据类型&#xff0c;肯定是有相应的考量的&#xff0c;在某些特殊的业务…

C++相关概念和易错语法(22)(final、纯虚函数、继承多态难点)

1.final final在继承和多态中都可以使用&#xff0c;在继承中是指不想将自己被继承&#xff0c;在多态中是指不想该函数被重写&#xff0c;比较简单&#xff0c;下面是一些使用例子。 2.纯虚函数 当我们需要抽象一个类的时候&#xff0c;我们就需要用到纯虚函数。所谓抽象的类…

如何设计统计量及相关假设检验

一、如何设置H0和H1假设 谁做H0&#xff0c;谁做H1&#xff0c;在统计学的假设检验里是有约定俗成的规定的。即&#xff1a;status quo&#xff08;默认/现状&#xff09;是H0&#xff0c;而新观点或试图challenge现状的是H1。H1也叫research hypothesis&#xff0c;所以我们做…

【多个Python版本存在,使用pip+不同版本安装库时,windows弹出打开方式窗口的解决方法】

问题描述 电脑上存在python3.9&#xff0c;3.10&#xff0c;3.11&#xff0c;安装顺序也是先安装3.9&#xff0c;然后3.10&#xff0c;最后3.11&#xff0c;那么直接使用pip安装&#xff0c;会装在3.11的位置&#xff0c;经过搜索可以通过pip版本&#xff0c;比如pip3.9 insta…

如何在勒索软件攻击中幸存下来:最佳备份实践、勒索拦截方案

无论身处什么业务或行业&#xff0c;数据都是您业务的关键资产。没有针对数据进行安全可靠的备份保护&#xff0c;您将会受到许多“可能性”的威胁&#xff0c;无论数据丢失是由于在键盘上洒了饮料还是遭受到了勒索软件的攻击。 为了确保业务不被中断&#xff0c;企业数据不会…