首先我看了很多有人改造sentinel dashboard的资料,教如何通过修改源码重新打包dashboard的,但考虑到自行修改编译的风险,我还是采用了官方建议的动态配置方式,程序通过nacos加载sentinel相关的规则配置。
此文描述记录一下scg的配置方式。
1.等同介绍
首先举个例子,下图dashboard配置等同json的配置
[{
"resourceMode": 0,
"resource": "payment-gary",
"grade": 1,
"count": 2,
"intervalSec", 1,
"controlBehavior": 0,
"burst": 0
}]
2.配置详解
参数名 | 描述 | 属性类型 | 枚举项 | 说明 |
resourceMode | API类型 | 数字 | 0 | ROUTE ID区分,不设置此为默认值 |
1 | API分组区分 | |||
resource | 资源名称 | 字符 | —— | API名称,在网关应用中指scg的routes:id |
grade | 阈值类型 | 数字 | 0 | 按线程数 |
1 | 按QPS,不设置此为默认值 | |||
count | 阈值 | 数字 | —— | QPS类型就是限制时间间隔的请求数 线程数类型就是指并行的线程数 |
QPS阈值类型专属配置项目 | ||||
intervalSec | 间隔 | 数字 | —— | 单位是秒,dashboard上面有单位下拉框,实际也是换算秒后存储的 |
controlBehavior | 流控方式 | 数字 | 0 | 快速失败,不设置此为默认值 |
2 | 匀速排队 | |||
burst | 额外流量 | 数字 | —— | 快速失败流控方式下,允许突出的流量数 |
maxQueueingTimeoutMs | 排队时间 | 数字 | —— | 单位是毫秒,匀速排队流控方式下,允许排队的时间 |
以下是设置了针对请求属性的配置,笔者没有此需求所以上面的实例图中也没有配置,此处列出是顺手之事,请有需要的人参考 | ||||
paramItem | 请求属性key | json对象 | —— | 为配置的json key,value就是余下的配置项 |
parseStrategy | 参数属性 | 数字 | 0 | ClientIP,请求方的IP |
1 | RemoteHost,请求的host | |||
2 | Header,请求的Header参数值 | |||
3 | URL参数 | |||
4 | Cookie,请求的Cookie参数 | |||
fieldName | 参数名称 | 字符 | —— | 若参数属性选择 Header 模式或 URL 参数模式,则需要指定对应的 header 名称或 URL 参数名称 |
matchStrategy | 参数值匹配策略 | 数字 | 0 | 精确匹配,不设置此为默认值 |
1 | 子串查询匹配 | |||
2 | 正则表达式匹配 | |||
pattern | 参数值匹配内容 | 字符 | —— | 按匹配策略来配置的值,只有匹配该模式的请求属性值会纳入统计和流控;若为空则统计该请求属性的所有值。 |