共计 1701 个字符,预计需要花费 5 分钟才能阅读完成。
1. 用 Nacos 存储 Sentinel 的限流规则
1. 创建工程, 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
2. 添加客户端配置
添加 Sentinel 的控制地址、Nacos 的地址, 并自定义 Nacos 中的 dataId 和 groupId
spring.application.name=datasource-nacos
# 应用服务 WEB 访问端口
server.port=8092
spring.cloud.sentinel.transport.dashboard=localhost:8080
#Nacos 地址
spring.cloud.sentinel.datasource.ds.nacos.server-addr=localhost:8848
#自定义 Nacos 中存储规则的 dataId
spring.cloud.sentinel.datasource.ds.nacos.data-id=${spring.application.name}
#自定义 Nacos 中存储规则的 groupid
spring.cloud.sentinel.datasource.ds.nacos.group-id=DEFAULT_GROUP
#定义存储的规则类型为 flow
spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow
3. 自定义埋点
@RestController
public class SentinelController {@GetMapping("/hello")
// 自定义埋点
@SentinelResource("hello")
public String hello(){return "Hello Sentinel Demo";
}
}
4. 添加 Nacos 配置
在 Nacos 中添加如图配置信息
配置内容:
[
{"resource": "/hello",
"limitApp": "default",
"grade": 1,
"count": 3,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
-
resource: 资源名, 即限流规则的作用对象
-
limitApp: 流控针对的调用来源
-
grade : 限流阀值类型 (QPS 或并发线程数).0 代表根据并发数量来限流,1 代表根据 QPS 来进行流量控制
-
count: 限流阀值
-
strategy: 调用关系限流策略
-
controlBehavior: 流量控制效果, 有 3 个选项: 直接拒绝、Warm Up、匀速排队
-
clusterMode: 是否为集群模式
5. 测试配置的持久化
步骤 :
1. 确保启动了 Nacos、Sentinel 和自己编写的客户端
2. 访问 http://localhost:8088/hello, 并多次高频刷新. 如果出现 ”Blocked by Sentinel (flow limiting)” 的信息, 则代表配置成功
3. 来到 Sentinel 流控规则界面, 可以看到在 Nacos 中配置的限流规则
4. 在 Senitnel 中修改限流规则, 比如修改单机阀值为 10
5. 重启客户端, 会发现 Sentinel 中的限流阀值被刷新为 3, 代表修改并未持久化
6. 在 Nacos 中修改 count 的值为 20, 然后访问 http://localhost:8088/hello
7. 进入 Sentine 流控规则界面, 可以看到阀值变成了 20
正文完
星哥玩云-微信公众号