1. 项目准备
我们在《Spring Cloud Alibaba入门十五:简单接入Sentine》的基础上进行改造
2. 引入sentinel对Nacos数据源的支持依赖
编辑pom.xml文件
<!-- 3.引入sentinel对Nacos数据源的支持依赖 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
3. application.yml配置
新增Nacos连接内容
spring:
cloud:
# 进行sentinel相关配置
sentinel:
datasource:
ds01:
nacos:
# Nacos连接信息
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
# Nacos配置文件的data-id
data-id: sentinel-cofig-flow
# Nacos连接的分组
group-id: DEFAULT_GROUP
# 规则类型,取值见:org.springframework.cloud.alibaba.sentinel.datasource.RuleType
# flow:流控规则;degrade:降级规则
rule-type: flow
# 配置文件存储类型
data-type: json
ds02:
nacos:
# Nacos连接信息
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
# Nacos配置文件的data-id
data-id: sentinel-cofig-degrade
# Nacos连接的分组
group-id: DEFAULT_GROUP
# 规则类型,取值见:org.springframework.cloud.alibaba.sentinel.datasource.RuleType
# flow:流控规则;degrade:降级规则
rule-type: degrade
# 配置文件存储类型
data-type: json
如图:
rule-type配置项对应的枚举类
public enum RuleType {
/**
* flow.
*/
FLOW("flow", FlowRule.class),
/**
* degrade.
*/
DEGRADE("degrade", DegradeRule.class),
/**
* param flow.
*/
PARAM_FLOW("param-flow", ParamFlowRule.class),
/**
* system.
*/
SYSTEM("system", SystemRule.class),
/**
* authority.
*/
AUTHORITY("authority", AuthorityRule.class),
/**
* gateway flow.
*/
GW_FLOW("gw-flow", "com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayFlowRule"),
/**
* api.
*/
GW_API_GROUP("gw-api-group", "com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinition");
}
application.yml完整文件如下:
server:
port: 8091
spring:
cloud:
# 进行sentinel相关配置
sentinel:
transport:
# 控制台连接地址
dashboard: 127.0.0.1:8780
# 取消Sentinel控制台懒加载,默认false
eager: true
datasource:
ds01:
nacos:
# Nacos连接信息
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
# Nacos配置文件的data-id
data-id: sentinel-cofig-flow
# Nacos连接的分组
group-id: DEFAULT_GROUP
# 规则类型,取值见:org.springframework.cloud.alibaba.sentinel.datasource.RuleType
# flow:流控规则;degrade:降级规则
rule-type: flow
# 配置文件存储类型
data-type: json
ds02:
nacos:
# Nacos连接信息
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
# Nacos配置文件的data-id
data-id: sentinel-cofig-degrade
# Nacos连接的分组
group-id: DEFAULT_GROUP
# 规则类型,取值见:org.springframework.cloud.alibaba.sentinel.datasource.RuleType
# flow:流控规则;degrade:降级规则
rule-type: degrade
# 配置文件存储类型
data-type: json
4. 创建配置文件
在Nacos中创建一个配置文件,文件信息需要与application.yml配置文件中Nacos相关的信息一致
4.1 流控规则
Data ID: sentinel-cofig-flow
Group: DEFAULT_GROUP
配置格式: JSON
[
{
"resource": "bl", // 资源名
"limitApp": "default",
"grade": 1,
"count": 1, // 单机阈值
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
4.2 降级规则
Data ID: sentinel-cofig-degrade
Group: DEFAULT_GROUP
配置格式: JSON
[
{
"resource":"bsj", // 资源名
"limitApp":"default",
"grade":0,
"count":50, // 最大RT(有效时间)
"slowRatioThreshold":1, // 比例阈值
"minRequestAmount":5, // 最小请求数
"timeWindow":100, // 熔断时长
"statIntervalMs":1000 // 统计时长
}
]
5. 测试
5.1 启动Springboot项目
查看Sentinel控制台,我们可以看到Nacos中的配置信息已经自动加载到Sentinel中。并且Nacos中修改,Sentinel也会实时更新
5.1.1 流控规则
5.2.2 降级(熔断)规则
5.2 测试
测试1
测试2