sentinel网关限流配置及使用
创始人
2025-01-10 23:05:59
0次

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、redirect           mode: response           # 响应状态码           response-status: ${sentinel.renturn.code}           # 响应信息           response-body: ${sentinel.renturn.msg}       transport:         dashboard: ${sentinel.dashboard.host}:${sentinel.dashboard.port}         filter:           enabled: false         ip: 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.json             data-type: json             rule-type: gw-flow         ds2:           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.json             data-type: json             rule-type: gw-api-group     gateway:       # 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、网关应用增加依赖:

             com.alibaba.csp             sentinel-datasource-nacos                               com.alibaba.cloud             spring-cloud-starter-alibaba-sentinel                               com.alibaba.cloud             spring-cloud-alibaba-sentinel-gateway                               com.alibaba.csp             sentinel-spring-cloud-gateway-adapter          

3、控制台配置限流规则

http://localhost:8081/

帐号/密码:sentinel/sentinel

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

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

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

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

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

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

二、资源和规则配置说明

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

1、资源定义

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

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

注解需要增加一个依赖

     com.alibaba.csp     sentinel-core     1.8.6  
@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 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);       } 

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

上一篇:threejs

下一篇:LeetCode热题100(JavaScript)

相关内容

热门资讯

终于清楚辅助!七七娱乐辅助AI... 终于清楚辅助!七七娱乐辅助AI插件,七七娱乐多功能一直真的有辅助插件1、完成七七娱乐有辅助插件,帮助...
一秒答解外挂!天天卡五星外挂A... 一秒答解外挂!天天卡五星外挂AI攻略,天天卡五星多功能本来真的是有外挂攻略1、操作简单,无需天天卡五...
玩家必备教程辅助器!心悦辽宁麻... 玩家必备教程辅助器!心悦辽宁麻将辅助器AIapp,心悦辽宁麻将多功能一直存在有辅助器app所有人都在...
重大来袭辅助器!残局斗地主辅助... 重大来袭辅助器!残局斗地主辅助器AI插件,残局斗地主多功能确实是有辅助器插件1、起透看视 残局斗地主...
盘点十款辅助!小熊猫麻将辅助A... 盘点十款辅助!小熊猫麻将辅助AI脚本,小熊猫麻将多功能果然是真的有辅助脚本小熊猫麻将脚本下载中分为三...
必看攻略辅助!创乐缘辅助AI技... 必看攻略辅助!创乐缘辅助AI技巧,创乐缘多功能原来真的有辅助技巧1、起透看视 创乐缘辅助软件价格2、...
重大通报透视挂!熊猫互娱透视挂... 重大通报透视挂!熊猫互娱透视挂AI插件,熊猫互娱多功能竟然有透视挂插件1、让任何用户在无需熊猫互娱安...
程序员教你辅助器!联众娱乐辅助... 程序员教你辅助器!联众娱乐辅助器AI技巧,联众娱乐多功能一贯有辅助器技巧1、联众娱乐免费辅助多个强度...
科普分享作弊器!推筒子作弊器A... 科普分享作弊器!推筒子作弊器AI插件,推筒子多功能原来是有作弊器插件所有人都在同一条线上,像星星一样...
一分钟揭秘开挂!牛大亨开挂AI... 一分钟揭秘开挂!牛大亨开挂AI攻略,牛大亨多功能真是真的有开挂攻略1、牛大亨透视辅助软件激活码多个强...