共计 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. 自定义埋点
public class SentinelController { | |
// 自定义埋点 | |
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
正文完
星哥玩云-微信公众号
