diff --git a/script/sentinel/gateway-server/gateway-server-degrade-rules.json b/script/sentinel/gateway-server/gateway-server-degrade-rules.json
new file mode 100644
index 000000000..5cd82e079
--- /dev/null
+++ b/script/sentinel/gateway-server/gateway-server-degrade-rules.json
@@ -0,0 +1,11 @@
+[
+ {
+ "resource": "feign-test", // 资源名
+ "count": 1000, // 当熔断策略是慢调用时,此值为最大RT,单位是毫秒。当熔断是策略是异常比例时,此值为异常比例。当熔断策略是异常数时,此值为异常数目
+ "timeWindow": 5, // 熔断时长,单位是秒
+ "grade": 0, // 0: 慢调用, 1: 异常比例,2:异常数
+ "minRequestAmount": 2, // 最小请求数
+ "slowRatioThreshold": 0.2, // 比例阈值
+ "statIntervalMs": 10000 // 统计时长,单位毫秒
+ }
+]
\ No newline at end of file
diff --git a/script/sentinel/gateway-server/gateway-server-gw-flow-rules.json b/script/sentinel/gateway-server/gateway-server-gw-flow-rules.json
new file mode 100644
index 000000000..f80c1d360
--- /dev/null
+++ b/script/sentinel/gateway-server/gateway-server-gw-flow-rules.json
@@ -0,0 +1,12 @@
+[
+ {
+ "resource": "feign-test", // 资源名
+ "resourceMode": 0, // API类型, 0: ROUTE ID区分, 1: API
+ "count": 1, // 阈值,QPS类型就是限制时间间隔的请求数,线程数类型就是指并行的线程数
+ "grade": 1, // 阈值类型,0:线程数,1:QPS
+ "controlBehavior": 2, // 流控方式,0:快速失败,2:匀速排队
+ "intervalSec": 10, // 间隔,单位是秒
+ "burst": 0, // burst,只有在快速失败时才有效
+ "maxQueueingTimeoutMs": 1000 // 超时时间,单位是毫秒
+ }
+]
\ No newline at end of file
diff --git a/script/sentinel/gateway-server/gateway-server-system-rules.json b/script/sentinel/gateway-server/gateway-server-system-rules.json
new file mode 100644
index 000000000..6fb378ca0
--- /dev/null
+++ b/script/sentinel/gateway-server/gateway-server-system-rules.json
@@ -0,0 +1,10 @@
+[
+ {
+ "avgRt": 1, // RT
+ "highestCpuUsage": -1, // CPU 使用率
+ "highestSystemLoad": -1, // LOAD
+ "maxThread": -1, // 线程数
+ "qps": -1, // 入口 QPS
+ "count": 55 // 阈值,在CPU使用率中是百分比
+ }
+]
\ No newline at end of file
diff --git a/script/sentinel/system-server/system-server-authority-rules.json b/script/sentinel/system-server/system-server-authority-rules.json
new file mode 100644
index 000000000..a8d6241d8
--- /dev/null
+++ b/script/sentinel/system-server/system-server-authority-rules.json
@@ -0,0 +1,7 @@
+[
+ {
+ "resource": "sentinel_spring_web_context",
+ "limitApp": "/test",
+ "strategy": 0 // 授权类型(0代表白名单;1代表黑名单。)
+ }
+]
\ No newline at end of file
diff --git a/script/sentinel/system-server/system-server-degrade-rules.json b/script/sentinel/system-server/system-server-degrade-rules.json
new file mode 100644
index 000000000..75f6047b1
--- /dev/null
+++ b/script/sentinel/system-server/system-server-degrade-rules.json
@@ -0,0 +1,11 @@
+[
+ {
+ "resource": "/degrade-test",
+ "grade": 0, // 熔断策略,支持慢调用比例(0),异常比例(1),异常数(2)策略
+ "count": 1000, // 慢调用比例模式下为慢调用临界 RT(超出该值计为慢调用,单位ms);异常比例/异常数模式下为对应的阈值
+ "slowRatioThreshold": 0.1,// 慢调用比例阈值,仅慢调用比例模式有效(1.8.0 引入)
+ "minRequestAmount": 10, //熔断触发的最小请求数,请求数小于该值时即使异常比率超出阈值也不会熔断
+ "timeWindow": 10, // 熔断时长,单位为 s
+ "statIntervalMs": 1000 // 统计时长(单位为 ms),如 60*1000 代表分钟级
+ }
+]
diff --git a/script/sentinel/system-server/system-server-flow-rules.json b/script/sentinel/system-server/system-server-flow-rules.json
new file mode 100644
index 000000000..3b07d3d7b
--- /dev/null
+++ b/script/sentinel/system-server/system-server-flow-rules.json
@@ -0,0 +1,14 @@
+[
+ {
+ "resource": "/flow-test", // 资源名
+ "limitApp": "default", // // 针对来源,若为 default 则不区分调用来源
+ "grade": 1, // 限流阈值类型(1:QPS; 0:并发线程数)
+ "count": 1, // 阈值
+ "clusterMode": false, // 是否是集群模式
+ "controlBehavior": 0, // 流控效果 (0:快速失败; 1:Warm Up(预热模式); 2:排队等待)
+ "strategy": 0, // 流控模式(0:直接; 1:关联; 2:链路)
+ "warmUpPeriodSec": 10, // 预热时间(秒,预热模式需要此参数)
+ "maxQueueingTimeMs": 500, // 超时时间(排队等待模式需要此参数)
+ "refResource": "rrr" // 关联资源、入口资源(关联、链路模式)
+ }
+]
diff --git a/script/sentinel/system-server/system-server-param-flow-rules.json b/script/sentinel/system-server/system-server-param-flow-rules.json
new file mode 100644
index 000000000..ccdfd4c2b
--- /dev/null
+++ b/script/sentinel/system-server/system-server-param-flow-rules.json
@@ -0,0 +1,18 @@
+[
+ {
+ "resource": "/param-flow-test",
+ "grade": 1, // 限流模式(QPS 模式,不可更改)
+ "paramIdx": 0, // 参数索引
+ "count": 13, // 单机阈值
+ "durationInSec": 6, // 统计窗口时长
+ "clusterMode": false, // 是否集群 默认false
+ "controlBehavior": 0, // 流控效果(支持快速失败和匀速排队模式)
+ "limitApp": "default",
+ // 高级选项
+ "paramFlowItemList": [{
+ "classType": "int", // 参数类型
+ "count": 222, // 限流阈值
+ "object": "2" // 参数值
+ }]
+ }
+]
\ No newline at end of file
diff --git a/script/sentinel/system-server/system-server-system-rules.json b/script/sentinel/system-server/system-server-system-rules.json
new file mode 100644
index 000000000..6fb378ca0
--- /dev/null
+++ b/script/sentinel/system-server/system-server-system-rules.json
@@ -0,0 +1,10 @@
+[
+ {
+ "avgRt": 1, // RT
+ "highestCpuUsage": -1, // CPU 使用率
+ "highestSystemLoad": -1, // LOAD
+ "maxThread": -1, // 线程数
+ "qps": -1, // 入口 QPS
+ "count": 55 // 阈值,在CPU使用率中是百分比
+ }
+]
\ No newline at end of file
diff --git a/yudao-gateway/pom.xml b/yudao-gateway/pom.xml
index fd75115d9..df30365f0 100644
--- a/yudao-gateway/pom.xml
+++ b/yudao-gateway/pom.xml
@@ -69,6 +69,24 @@
com.google.guava
guava
+
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-sentinel-gateway
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ com.alibaba.csp
+ sentinel-datasource-nacos
+
diff --git a/yudao-gateway/src/main/resources/application-local.yaml b/yudao-gateway/src/main/resources/application-local.yaml
index a7132bd6f..1b3a92c64 100644
--- a/yudao-gateway/src/main/resources/application-local.yaml
+++ b/yudao-gateway/src/main/resources/application-local.yaml
@@ -13,6 +13,53 @@ spring:
namespace: dev # 命名空间。这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+--- #################### Sentinel相关配置 ####################
+spring:
+ cloud:
+ sentinel:
+ enabled: true # 是否开启。默认为 true 开启
+ eager: true # 是否饥饿加载。默认为 false 关闭
+ transport:
+ dashboard: 127.0.0.1:8080 # Sentinel 控制台地址
+ filter:
+ url-patterns: /** # 拦截请求的地址。默认为 /*
+ #自定义流控降级异常信息
+ scg:
+ fallback:
+ mode: response
+ response-body: '{"code": 429, "msg":"服务压力过大,请稍后重试!"}'
+ # sentinel用nacos作为数据源的配置 (可导入/yudao-cloud/script/sentinel/system-server下对应规则,使用时需去掉注释)
+ datasource:
+ # 流控规则
+ flow:
+ nacos:
+ server-addr: ${spring.cloud.nacos.server-addr}
+ namespace: ${spring.cloud.nacos.discovery.namespace}
+ username: ${spring.cloud.nacos.username}
+ password: ${spring.cloud.nacos.password}
+ data-id: ${spring.application.name}-gw-flow-rules # 在修改的sentinel 源码中定义的规则名
+ rule-type: gw_flow
+ # 降级规则
+ degrade:
+ nacos:
+ server-addr: ${spring.cloud.nacos.server-addr}
+ namespace: ${spring.cloud.nacos.discovery.namespace}
+ username: ${spring.cloud.nacos.username}
+ password: ${spring.cloud.nacos.password}
+ dataId: ${spring.application.name}-degrade-rules
+ rule-type: degrade
+ # 系统规则
+ system:
+ nacos:
+ server-addr: ${spring.cloud.nacos.server-addr}
+ namespace: ${spring.cloud.nacos.discovery.namespace}
+ username: ${spring.cloud.nacos.username}
+ password: ${spring.cloud.nacos.password}
+ dataId: ${spring.application.name}-system-rules
+ groupId: DEFAULT_GROUP
+ data-type: json
+ rule-type: system
+
# 日志文件配置
logging:
level: