请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

流控规则nacos未生效

老师好,我这边持久化的流控规则(与nacos对接的流控规则)已经配置好了,图片描述但是访问接口超过阈值时并未触发限流规则。

同样在默认菜单的流控规则里配置的话就有效,这是什么问题呢?

正在回答 回答被采纳积分+3

3回答

慕田峪8546099 2023-09-13 17:24:33

没有生效的原因是因为流控规则使用的是V1版本,老师课程中修改的是V2版本,如果要想流控规则生效并将流控规则持久化到nacos中,需要修改V1版本,也就是com.alibaba.csp.sentinel.dashboard.controller.FlowControllerV1类,修改也很简单,主要修改两部分:

//List<FlowRuleEntity> rules = sentinelApiClient.fetchFlowRuleOfMachine(app, ip, port);
// 从nacos中获取流控规则
List<FlowRuleEntity> rules = ruleProvider.getRules(app);
if (rules != null && !rules.isEmpty()) {
    for (FlowRuleEntity entity : rules) {
        entity.setApp(app);
        if (entity.getClusterConfig() != null && entity.getClusterConfig().getFlowId() != null) {
            entity.setId(entity.getClusterConfig().getFlowId());
        }
    }
}


private CompletableFuture<Void> publishRules(String app, String ip, Integer port) throws Exception {
    List<FlowRuleEntity> rules = repository.findAllByMachine(MachineInfo.of(app, ip, port));
    // 将数据推送至nacos
    rulePublisher.publish(app, rules);
    return sentinelApiClient.setFlowRuleOfMachineAsync(app, ip, port, rules);
}

注意:这里修改的是V1版本,所以配置的时候使用原来流控规则配置Tab。

这样修改后你再试试,就可以丝滑的实现流控并将规则持久化道nacos了。

0 回复 有任何疑惑可以回复我~
子牙老师 2021-08-23 12:00:47

是不是同时配置产生冲突了

0 回复 有任何疑惑可以回复我~
子牙老师 2021-06-27 15:55:33

同学你好,可以紧跟老师的视频中的操作步骤做一次,看看差别是什么。

0 回复 有任何疑惑可以回复我~
  • 老师我也是 流控规则同步到了nacos但是没有流控住。而且老师视频里整合完nacos也没有对接口是否真正可以流控做测试
    回复 有任何疑惑可以回复我~ 2021-08-20 16:55:53
  • 可以按我上面修改的内容试试。
    回复 有任何疑惑可以回复我~ 2023-09-13 17:32:10
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信