网关集成sentinel

pull/138/head
koltZhang 2024-09-04 11:42:21 +08:00
parent 4ca68ff56a
commit 7c2597a908
10 changed files with 158 additions and 0 deletions

View File

@ -0,0 +1,11 @@
[
{
"resource": "feign-test", // 资源名
"count": 1000, // 当熔断策略是慢调用时,此值为最大RT,单位是毫秒。当熔断是策略是异常比例时,此值为异常比例。当熔断策略是异常数时,此值为异常数目
"timeWindow": 5, // 熔断时长,单位是秒
"grade": 0, // 0: 慢调用, 1: 异常比例,2:异常数
"minRequestAmount": 2, // 最小请求数
"slowRatioThreshold": 0.2, // 比例阈值
"statIntervalMs": 10000 // 统计时长,单位毫秒
}
]

View File

@ -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 // 超时时间,单位是毫秒
}
]

View File

@ -0,0 +1,10 @@
[
{
"avgRt": 1, // RT
"highestCpuUsage": -1, // CPU 使用率
"highestSystemLoad": -1, // LOAD
"maxThread": -1, // 线程数
"qps": -1, // 入口 QPS
"count": 55 // 阈值,在CPU使用率中是百分比
}
]

View File

@ -0,0 +1,7 @@
[
{
"resource": "sentinel_spring_web_context",
"limitApp": "/test",
"strategy": 0 // 授权类型(0代表白名单;1代表黑名单。)
}
]

View File

@ -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 代表分钟级
}
]

View File

@ -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" // 关联资源、入口资源(关联、链路模式)
}
]

View File

@ -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" // 参数值
}]
}
]

View File

@ -0,0 +1,10 @@
[
{
"avgRt": 1, // RT
"highestCpuUsage": -1, // CPU 使用率
"highestSystemLoad": -1, // LOAD
"maxThread": -1, // 线程数
"qps": -1, // 入口 QPS
"count": 55 // 阈值,在CPU使用率中是百分比
}
]

View File

@ -69,6 +69,24 @@
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<!-- SpringCloud Alibaba Sentinel Gateway -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>
<!-- SpringCloud Alibaba Sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- Sentinel Datasource Nacos -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
</dependencies>

View File

@ -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: