sentinel提供了非常强大的控制台来提供流控等功能,但是控制台只是临时的配置,想要将流控配置永久的保存,或者在项目启动的时候就加载,不需要手动设置,就需要使用到nacos与sentinel做集成配置。这里都是不变代码,直接复制粘贴,改一下就可以了
#确认nacos和sentinel启动成功
<!-- 集成Sentinel与nacos相关依赖--> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>
在模块的配置文件中添加配置
spring: cloud: nacos: discovery: server-addr: localhost:8848 # nacos服务注册发现地址 namespace: train config: server-addr: localhost:8848 # nacos配置中心地址 file-extension: yaml # 配置后缀名 namespace: train sentinel: transport: dashboard: localhost:18080 # sentinel控制台地址 port: 8719 #固定端口 http-method-specify: true # 开启对http 访问前缀的支持比如GET、PU datasource: # sentinel临时配置的是临时配置,通过将配置项持久化到nacos中 flow: nacos: # nacos配置 server-addr: localhost:8848 # nacos服务地址 data-id: sentinel-business.yml # nacos配置文件名 rule-type: flow # 流控 group-id: DEFAULT_GROUP # 分组 data-type: json # 数据类型 namespace: train # 命名空间
然后在需要做拦截的接口上添加注解
然后在nacos中的配置文件中注册配置文件nacos: # nacos配置 server-addr: localhost:8848 # nacos服务地址 data-id: sentinel-business.yml # nacos配置文件名 rule-type: flow # 流控 group-id: DEFAULT_GROUP # 分组 data-type: json # 数据类型 namespace: train # 命名空间
注意信息要和配置文件一样
[{ "resource": "hello", // 资源路径,能够通过@SentinelResource来指定,不一定要写全路径 "limitApp": "default", // 限流针对的应用,默认为 "default" "grade": 1, // 限流阈值类型,0 表示线程数,1 表示 QPS "count": 10, // 限流阈值,这里是每秒 10 个请求 "strategy": 0, // 流控策略,0 表示直接拒绝,1 表示Warm Up,2 表示匀速排队 "controlBehavior": 0, // 流控效果,0 表示快速失败,1 表示 Warm Up,2 表示匀速排队,3 表示拒绝后排队 "clusterMode": false // 是否集群模式 }]