一.项目引入依赖
引入sentinel核心依赖及nacos依赖
<!-- sentinel 核心依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2021.1</version>
<exclusions>
<!--我的项目用的是spring-webflux,会有异常,所以这边做了个排除 -->
<exclusion>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-spring-webmvc-adapter</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- nacos相关依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-spring-cloud-gateway-adapter</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-datasource</artifactId>
<version>2021.1</version>
</dependency>
二、配置文件
项目的application.yml文件,添加如下配置,由于sentinel控制台创建的规则默认是没有持久化的,我边设置为通过nacos做规则持久化。
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
discovery:
server-addr: localhost:8848
sentinel:
log:
# 日志输出位置
dir: ${cloud.logger.path}
transport:
# sentinel看板的地址
port: 8719
dashboard: localhost:8091
# 通过nacos持久化,主动拉取nacos上的配置
datasource:
ds:
nacos:
server-addr: localhost:8848
dataId: ${spring.application.name}-flow-rules
groupId: SENTINEL_GROUP
# 规则类型,取值见:
# org.springframework.cloud.alibaba.sentinel.datasource.RuleType
rule-type: flow
data-type: json
degrade:
nacos:
server-addr: localhost:8848
dataId: ${spring.application.name}-degrade-rules
groupId: SENTINEL_GROUP
rule-type: degrade
data-type: json
system:
nacos:
server-addr: localhost:8848
dataId: ${spring.application.name}-system-rules
groupId: SENTINEL_GROUP
rule-type: system
data-type: json
authority:
nacos:
server-addr: localhost:8848
dataId: ${spring.application.name}-authority-rules
groupId: SENTINEL_GROUP
rule-type: authority
data-type: json
param-flow:
nacos:
server-addr: localhost:8848
dataId: ${spring.application.name}-param-flow-rules
groupId: SENTINEL_GROUP
rule-type: param-flow
data-type: json
三、启动项目
刚登陆sentinel控制台时,会显示为空白,只要触发一个接口请求,即可在实时监控中 查看到请求的相关信息。
四、nacos推送规则
在nacos维护规则,具体字段解释参考官网。
Data ID:客户端服务名称-degrade-rules(对应application配置文件的spring.cloud.sentinel.datasource.degrade.dataId)
Data ID:SENTINEL_GROUP
[{
"app": "gw-api-svc",
"count": 300.0,
"gmtCreate": 1677051488971,
"gmtModified": 1677051488971,
"grade": 0,
"id": 2,
"ip": "172.25.125.79",
"limitApp": "default",
"minRequestAmount": 2,
"port": 8719,
"resource": "/gw-api-svc/oms2.0/order/add",
"slowRatioThreshold": 0.2,
"statIntervalMs": 1000,
"timeWindow": 10
}]
查看sentinel控制台
这时候可以看到熔断规则这边,有多了一条记录,代表规则同步成功。