目标:Sentinel的基本应用
工具:IDEA–2020.1、Sentinel Maven Nacos
学习目标:学习Sentinel集成Nacos实现动态流控规则
本次学习的工程下载链接放到文本最后面
前面我们实现了两种对定义的资源设置流控规则
1.通过FlowRuleManage.loadRules(List rules)手动加载流控规则
2.在Sentinel Dashboard上正对资源动态创建流控规则
对于第一种设置方式,我们如果介入Sentinel Dashboard,那么同样支持动态修改流控规则,但是,会存在一个问题,基于Sentinel Dashboard 所配置的流控规则只会保存在内存当中,一旦项目重启,这些规则都会被清除,为了解决这个问题,Sentinel提供了动态数据源来支持。
Sentinel集成Nacos实现动态流控规则,配置步骤如下:
1.添加Nacos数据源的依赖包
<!--添加nacos数据源的依赖-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
<version>1.7.2</version>
</dependency>
2.创建一个REST接口,用户测试。
@RestController
public class DynamicController {
@GetMapping("/dynamic")
public String dynamic(){
return "Hello Dynamic Rule";
}
}
3.在application.yml中添加数据源配置
spring:
application:
name: springcloud-sentinel-dynamic
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:7777
datasource:
- nacos:
server-addr: 127.0.0.1:8848
data-id: ${spring.application.name}-sentinel-flow
group-id: DEFAULT_GROUP
data-type: json
rule-type: flow
server:
port: 8888
配置说明:
1.datasource:目前支持redis、apollo、zk、file、nacos,选择什么类型的数据源就配置相对应的key即可。
2.data-id:可以设置为${spring.application.name},方便区分不同应用的配置
3.rule-type:表示数据源中规则属于那种类型,如flow、degrade、param-flow、gw-flow等
4.data-type:指配置项的内容格式,SpringCloud Alibaba Sentinel提供了JSON和XML两种格式,如果需要自定义只需要将值配置为custom,并配置converter-class指向converter类
4.登陆控制台,创建流控配置规则,配置信息如下
记住nacos中的data-id和你应用中的application.yml中的保持一致
评论区