在流量控制那篇文章中,我们在sentinel中配置好A服务对应的限流策略后,如果A服务重启就会导致sentinel中配置好的策略丢失,所以需要持久化操作。
流量控制可以有三种方法配置:一种是在sentinel控制台进行配置(服务重启则配置的策略丢失),一种是在代码中进行编写控制,还有就是从nacos中读取进行持久化配置。
限流配置
- [
- {
- “resource”:"/test", 需要限流的接口
- “limitApp”:“default”,
- “grade”:1, 阈值类型:1为QPS,0为线程数
- “count”:3, 每秒钟单机阈值,超过就会报错
- “strategy”:0, 流控模式 0直接,1关联,2链路
- “controlBehavior”:0, 设置流控效果 ,0直接拒接,1 Warm up 预热,2排队等待
- “clusterMode”:false
- },
- ,
- {
- “resource”:“POST:http://manage-nacos/get/name”,
- “limitApp”:“default”,
- “grade”:1,
- “count”:3,
- “strategy”:0,
- “controlBehavior”:0,
- “clusterMode”:false
- }
- ]
对应依赖
- <dependency>
- <groupId>com.alibaba.cloudgroupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
- dependency>
- <dependency>
- <groupId>com.alibaba.cloudgroupId>
- <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
- <version>${spring-cloud-alibaba.version}version>
- dependency>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-actuatorartifactId>
- dependency>
- <dependency>
- <groupId>com.alibaba.cspgroupId>
- <artifactId>sentinel-datasource-nacosartifactId>
- dependency>
配置文件中进行配置,从nacos中读取配置信息
- spring:
- jackson:
- default-property-inclusion: non_null # 全局jackson不对null做序列化输出
- cloud:
- # 将本服务与 sentinel监控进行绑定
- sentinel:
- transport:
- dashboard: 127.0.0.1:8080
- datasource:
- flow-ds: #sentinel从nacos获取指定的流控规则 这个名字可以自定义,不重复就可以
- nacos:
- server-addr: 127.0.0.1:8848
- dataId: flow-server
- groupId: DEFAULT_GROUP
- ruleType: flow # flow代表流程控制,degrade代表熔断规则
- username: nacos
- password: nacos
对应参数代表的含义请看 流程控制篇
- [
- {
- "resource":"/test", 请求路径
- "count":200, 每秒钟请求响应的平均时间,200就是一秒处理五个请求
- "grade":0, 降级策略,0为RT平均响应时间
- "timeWindow":5 熔断时间为5秒
- }
-
- ]
服务对应的配置文件
- spring:
- jackson:
- default-property-inclusion: non_null # 全局jackson不对null做序列化输出
- cloud:
- # 将本服务与 sentinel监控进行绑定
- sentinel:
- transport:
- dashboard: 127.0.0.1:8080
- datasource:
- flow-ds: #sentinel从nacos获取指定的流控规则 这个名字可以自定义,不重复就可以
- nacos:
- server-addr: 127.0.0.1:8848
- dataId: flow-server
- groupId: DEFAULT_GROUP
- ruleType: flow # flow代表流程控制,degrade代表熔断规则
- username: nacos
- password: nacos
- grade-ds: #sentinel从nacos获取指定的熔断规则 这个名字可以自定义,不重复就可以
- nacos:
- server-addr: 127.0.0.1:8848
- dataId: degrade-server
- groupId: DEFAULT_GROUP
- ruleType: degrade # flow代表流程控制,degrade代表熔断规则
- username: nacos
- password: nacos