文章目录
- [Sentinel 热点规则](#Sentinel 热点规则)
Sentinel 热点规则
基于
spring-cloud-demo· order-service · Boot 4.1.0 + Cloud 2025.1.2
一、依赖与接入
xml
<!-- Sentinel 客户端,含热点参数限流 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
yaml
spring:
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:8100 # 控制台
二、热点规则是什么
按 方法参数的取值 分别限流:每个参数值独立计数。
例:打完比赛,所有人查第一名是谁,第一名的访问量巨大

三、控制台参数字段(完整)
| 控制台字段 | JSON 字段 | 说明 |
|---|---|---|
| 资源名 | resource | 与簇点链路一致 |
| 限流模式 | grade | 一般为 QPS(1) |
| 参数索引 | paramIdx | 从 0 开始,对应方法第几个参数 |
| 单机阈值 | count | 未配置例外的参数值的默认 QPS |
| 统计窗口时长 | durationInSec | 秒,默认 1 |
| 参数类型 | classType | int / long / String 等,与 Java 类型一致 |
| 参数值 | object | 例外项的具体值 |
| 限流阈值(例外项) | count(项内) | 该参数值专属阈值 |
参数索引说明
索引 = 方法声明顺序,从 0 起;不认参数名。
java
public String getById(Long id, String type) {
// paramIdx=0 → id
// paramIdx=1 → type
}
例外项配置示例
| 参数类型 | 参数值 | 限流阈值 |
|---|---|---|
| long | 1 | 1000 |
| long | 2 | 500 |
| long | 3 | 100 |
四、JSON 规则片段
持久化见 sentinel-规则持久化.md,rule-type: param-flow。
json
[
{
"resource": "/order/getOrderWithProduct",
"count": 10,
"grade": 1,
"durationInSec": 1,
"paramIdx": 0,
"paramFlowItemList": [
{ "object": "1", "classType": "long", "count": 1000 },
{ "object": "2", "classType": "long", "count": 500 },
{ "object": "3", "classType": "long", "count": 100 }
],
"clusterMode": false
}
]
| JSON 字段 | 说明 |
|---|---|
| paramIdx | 参数索引 |
| paramFlowItemList | 例外项列表 |
| object | 参数值字符串形式 |
| classType | Java 类型全名或简名 |