前面我们介绍了一夏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官网

还没有评论,来说两句吧...