这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战
修改FlowControllerV2类,把之前的配置两个类注入,表示规则的拉取和规则的发布统一用两个的自定义实例
@RestController
@RequestMapping("/v2/flow")
public class FlowControllerV2{
@Autowired
@Qualifier("flowRuleNacosProvider")
private DynamicRuleProvider<FlowRuleEntity> ruleProvider;
@Autowired
@Qualifier("flowRuleNacosPublisher")
privateDynamicRulePublisher<FlowRuleEntity> rulePublisher;
}
在application.propetties文件中添加Nacos服务端的配置信息
sentinel.nacos.serverAddr=127.0.0.1:8848
sentinel.nacos.namespace=
sentinel.nacos.group-id=DEFAULT_GROUP
使用命令将代码打包成jar包,
mvn clean package
Sentinel Dashboard 流控规则数据同步
在网关应用配置文件中data-id命名要以-sentinel-flow结尾,因为在Sentinel Dashboard写一个固定的后缀。
spring:
application:
name: spring-cloud-sentinel-dynamic-update
cloud:
sentinel:
# 取消控制台懒加载
eager: true
transport:
# 控制台地址
dashboard: 127.0.0.1:8718
# nacos配置持久化
datasource:
ds1:
nacos:
server-addr: 127.0.0.1:8848
dataId: sentinel-trs-gateway
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
- 访问http://127.0.0.1:8718登录Sentinel Dashboard管控台,进入【流控规则】,然后根据需要添加限流的资源创建流控规则。
- 进入Nacos管控台,可查看到在Sentinel Dashboard配置的流控规则已同步到Nacos配置中心。
{
"resource":"teaching-management",
"count":1000,
"grade":1,
"limitApp":"default",
"strategy":0,
"controlBehavior":0
}
Sentinel 热点数据限流
热点数据是经常被访问到的数据,针对这些高频访问的数据进行限流,例如在一段时间内异常频繁访问的用户IP地址进行限流,或者针对异常频繁访问的用户ID进行限流。
Sentinel 提供了热点参数限流的策略,是一种特殊的限流,在普通限流基础上对同一个受保护的资源根据请求的参数分别处理,该策略只对包含热点参数资源调用生效。
热点限流场景有如下:
- 服务网关层,用于防止网络爬虫和恶意攻击,一种常用方法就是限制爬虫的IP地址,客户端IP地址是一种热点参数。