前面我们介绍了一夏spring cloud项目集成sentinel的方式方法,我们可以看到直接在nacos里面配置对应的规则,那么我们在这里介绍下对应的规则配置如何做,还有各个参数代表什么意思。
流控规则
1)字段说明
序号 | 字段名称 | 值样本 | 字段含义 |
1 | resource | /test | 资源名,一般指接口名称 |
2 | limitApp | default | 针对来源,若为 default 则不区分调用来源 |
3 | grade | 1 | 限流阈值类型(1:QPS;0:并发线程数) |
4 | count | 1 | 阈值 |
5 | clusterMode | FALSE | 是否是集群模式 |
6 | controlBehavior | 0 | 流控效果(0:快速失败;1:Warm Up(预热模式);2:排队等待) |
7 | strategy | 0 | 流控模式(0:直接;1:关联;2:链路) |
8 | warmUpPeriodSec | 10 | 预热时间(秒,预热模式需要此参数) |
9 | maxQueueingTimeMs | 500 | 超时时间(排队等待模式需要此参数) |
10 | refResource | rrr | 关联资源、入口资源(关联、链路模式) |
2)json样例:
[{ "resource": "/test", "limitApp": "default", "grade": 1, "count": 1, "clusterMode": false, "controlBehavior": 0, "strategy": 0, "warmUpPeriodSec": 10, "maxQueueingTimeMs": 500, "refResource": "rrr" }]
降级规则
1)字段说明
序号 | 字段名称 | 值样本 | 字段含义 |
1 | resource | /test | 资源名,一般指接口名称 |
2 | limitApp | default | 针对来源,若为 default 则不区分调用来源 |
3 | grade | 0 | 熔断策略(0:慢调用比例,1:异常比率,2:异常计数) |
4 | count | 200 | 最大RT、比例阈值、异常数 |
5 | slowRatioThreshold | 0.2 | 慢调用比例阈值,仅慢调用比例模式有效(1.8.0 引入) |
6 | minRequestAmount | 5 | 最小请求数 |
7 | statIntervalMs | 1000 | 当单位统计时长(类中默认1000) |
8 | timeWindow | 10 | 熔断时长 |
2)json样例
[{ "resource": "/test1", "limitApp": "default", "grade": 0, "count": 200, "slowRatioThreshold": 0.2, "minRequestAmount": 5, "statIntervalMs": 1000, "timeWindow": 10 }]
热点规则
1)字段说明
序号 | 字段名称 | 值样本 | 字段含义 |
1 | resource | /test1 | 资源名,一般指接口名称 |
2 | grade | 1 | 限流模式(QPS 模式,不可更改) |
3 | paramIdx | 0 | 参数索引 |
4 | count | 13 | 单机阈值 |
5 | durationInSec | 6 | 统计窗口时长 |
6 | clusterMode | FALSE | 是否集群 默认false |
7 | burstCount | 0 | |
8 | clusterConfig | 如果是集群模式的话,需要添加这个config的字典 | |
9 | clusterConfig.fallbackToLocalWhenFail | TRUE | |
10 | clusterConfig.flowId | 2 | |
11 | clusterConfig.sampleCount | 10 | |
12 | clusterConfig.thresholdType | 0 | |
13 | clusterConfig.windowIntervalMs | 1000 | |
14 | controlBehavior | 0 | 流控效果(支持快速失败和匀速排队模式) |
15 | limitApp | default | 针对来源,若为 default 则不区分调用来源 |
16 | maxQueueingTimeMs | 0 | |
17 | paramFlowItemList | 高级选项内容 | |
18 | paramFlowItemList.classType | int | 参数类型 |
19 | paramFlowItemList.count | 222 | 限流阈值 |
20 | paramFlowItemList.object | 2 | 参数值 |
2)json样例
[{ "resource": "/test1", "grade": 1, "paramIdx": 0, "count": 13, "durationInSec": 6, "clusterMode": false, "burstCount": 0, "clusterConfig": { "fallbackToLocalWhenFail": true, "flowId": 2, "sampleCount": 10, "thresholdType": 0, "windowIntervalMs": 1000 }, "controlBehavior": 0, "limitApp": "default", "maxQueueingTimeMs": 0, "paramFlowItemList": [{ "classType": "int", "count": 222, "object": "2" }] }]
系统规则
1)字段说明
序号 | 字段名称 | 值样本 | 字段含义 |
1 | avgRt | 1 | RT |
2 | highestCpuUsage | -1 | CPU 使用率 |
3 | highestSystemLoad | -1 | LOAD |
4 | maxThread | -1 | 线程数 |
5 | qps | -1 | 入口 QPS |
2)json样例
[{ "avgRt": 1, "highestCpuUsage": -1, "highestSystemLoad": -1, "maxThread": -1, "qps": -1 }]
授权规则
1)字段说明
序号 | 字段名称 | 值样本 | 字段含义 |
1 | resource | sentinel_spring_web_context | 资源名 |
2 | limitApp | /test1 | 流控应用 |
3 | strategy | 0 | 授权类型(0代表白名单;1代表黑名单。) |
2)json样例
[{ "resource": "sentinel_spring_web_context", "limitApp": "/test", "strategy": 0 }]
以上就是可以直接在nacos里面进行各种规则配置的字段和json样例,大家在实际开发中根据具体情况进行处理即可。
最后,附上关于sentinel的官方配置说明:sentinel官网
还没有评论,来说两句吧...