Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
Springboot+Dubbo+Nacos 集成 Sentinel(入门)-CSDN博客
热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。
Sentinel 利用 LRU 策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。
热点参数规则(ParamFlowRule
)类似于流量控制规则(FlowRule
):
属性 | 说明 | 默认值 |
---|---|---|
resource | 资源名,必填 | |
count | 限流阈值,必填 | |
grade | 限流模式 | QPS 模式 |
durationInSec | 统计窗口时间长度(单位为秒),1.6.0 版本开始支持 | 1s |
controlBehavior | 流控效果(支持快速失败和匀速排队模式),1.6.0 版本开始支持 | 快速失败 |
maxQueueingTimeMs | 最大排队等待时长(仅在匀速排队模式生效),1.6.0 版本开始支持 | 0ms |
paramIdx | 热点参数的索引,必填,对应 SphU.entry(xxx, args) 中的参数索引位置 |
|
paramFlowItemList | 参数例外项,可以针对指定的参数值单独设置限流阈值,不受前面 count 阈值的限制。仅支持基本类型和字符串类型) |
|
clusterMode | 是否是集群参数流控规则 | false |
clusterConfig | 集群流控相关配置 |
资源名,即限流规则的作用对象(可以是代码中指定名称或者指定路由)。
默认QPS 模式。
热点参数的索引,必填,对应 SphU.entry(xxx, args) 中的参数索引位置。
统计窗口时间长度(单位为秒),1.6.0 版本开始支持。非集群模式。
流控效果(支持快速失败和匀速排队模式),1.6.0 版本开始支持 ,默认快速失败。
最大排队等待时长(仅在匀速排队模式生效),1.6.0 版本开始支持。
是否是集群参数流控规则。
参数例外项,可以针对指定的参数值单独设置限流阈值,不受前面 count 阈值的限制。仅支持基本类型和字符串类型)。
@GetMapping(value = "/api/user/{id}")
@SentinelResource(value = "u-getUserById")
public String getUserById(@PathVariable("id") Long id) {
return userService.getName();
}
特别注意:例外参数类型要与客户端参数一致否则类外配置失效 !!!
Sentinel 规则持久化-CSDN博客
持久化Json数据格式
[
{
"resource": "u-getUserById",
"grade": 1,
"paramIdx": 0,
"count": 1,
"controlBehavior": 0,
"maxQueueingTimeMs": 0,
"burstCount": 0,
"durationInSec": 1,
"paramFlowItemList": [
{
"object": "0",
"count": 20,
"classType": "long"
}
],
"clusterMode": false,
"clusterConfig": {
"flowId": null,
"thresholdType": 0,
"fallbackToLocalWhenFail": true,
"sampleCount": 10,
"windowIntervalMs": 1000
}
}
]
spring:
application:
name: user
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
prefix: dubbo-user-api
file-extension: yml
sentinel:
transport:
dashboard: 127.0.0.1:6780
eager: true # 取消懒加载
datasource:
ds-user-paramFlow-rule:
nacos:
server-addr: 127.0.0.1:8848
dataId: user-paramFlow-rule
groupId: user-sentinel
namespace: sentinel
rule-type: PARAM_FLOW # AUTHORITY(授权规则) DEGRADE(熔断规则) FLOW(流控规则) GW_API_GROUP GW_FLOW PARAM_FLOW(热点规则) SYSTEM(系统规则)