开发者社区 > 云原生 > 正文

Sentinel持久化动态流控下发疑问

我对多个资源进行流控,在控制台上只对其中一个资源修改了流控规则,应用重启后,从持久化(zk)获取的流控规则把本地初始化流控规则全部覆盖。

应该是只会覆盖相同流控资源的规则,而不是全部以配置的为准。

1、应用内初始化资源的流控规则

2、在控制台新增初始化资源中某个资源的流控规则

3、应用内初始化的规则被控制台创建的规则覆盖

我看了下FlowRuleManager中configUpdate(List value)的方法实现,发现只要loadFlowConf(List list)返回不为null就会更新本地配置,但是loadFlowConf(List list)中一定会返回一个不为null的Map。这就导致了flowRules被完全覆盖,导致本地配置丢失。

原提问者GitHub用户Childe-Chen

展开
收起
码字王 2023-05-19 19:31:37 143 0
1 条回答
写回答
取消 提交回答
  • RuleManager 更新内存态的规则时会进行 全量更新 而不是 增量更新,因此要保证动态规则源中存储的规则为全量规则。控制台结合配置中心(如 ZooKeeper)推送需要进行相应的改造,详见 在生产环境中使用 Sentinel 控制台。

    原回答者GitHub用户sczyh30

    2023-05-19 22:46:36
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
阿里云容器 AHAS Sentinel 网关流控揭秘 立即下载
workshop专场-微服务专场-开发者动手实践营-微服务-使用Sentinel进行微服务流量控制 立即下载
Sentinel分布式系统下的流量防卫兵 立即下载