nacos动态配置数据源_Sentinel使用Nacos存储规则及同步

本文介绍了如何使用Nacos作为Sentinel的动态规则存储,包括Sentinel动态规则扩展、Nacos数据源配置、规则推送模式,以及如何改造Sentinel Dashboard实现实时同步Nacos中的限流规则。通过这些步骤,实现了Nacos与Sentinel的双向同步限流规则。
摘要由CSDN通过智能技术生成

点击关注“阿甘正专”,设为星标80d8ce37d6de249c6f87140fe2735bf8.gif

奇迹每天都在发生,等你而来


743b7289a4f6cdd0fa1b004163383519.png

引言

上一篇介绍了如何《使用Sentinel实现gateway网关及服务接口限流》,相信大家已经学会在Spring Cloud Alibaba的整合封装之下,如何将Sentinel整合到Spring Cloud应用中。但是,细心的人,就会发现Sentinel Dashboard控制台中设置的限流规则,在应用重启之后就丢失了,所以需要将Sentinel的规则持久化。

一、使用Nacos存储限流规则

1、Sentinel 动态规则扩展


Sentinel 的理念是开发者只需要关注资源的定义,当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则:

  • 通过 API 直接修改 (loadRules)

  • 通过 DataSource 适配不同数据源修改

手动通过 API 修改比较直观,可以通过以下几个 API 修改不同的规则:

FlowRuleManager.loadRules(List rules); // 修改流控规则

DegradeRuleManager.loadRules(List rules); // 修改降级规则

手动修改规则(硬编码方式)一般仅用于测试和演示,生产上一般通过动态规则源的方式来动态管理规则。

2、规则管理及推送

一般来说,规则的推送有下面三种模式:

4b650bc7ca3ff5d219c28a27237d54eb.png

3、DataSource 扩展


上述 loadRules() 方法只接受内存态的规则对象,但更多时候规则存储在文件、数据库或者配置中心当中。DataSource 接口给我们提供了对接任意配置源的能力。相比直接通过 API 修改规则,实现 DataSource 接口是更加可靠的做法。

生产环境下一般更常用的是 push 模式的数据源。对于 push 模式的数据源,如远程配置中心(ZooKeeper, Nacos, Apollo等等),推送的操作不应由 Sentinel 客户端进行,而应该经控制台统一进行管理,直接进行推送,数据源仅负责获取配置中心推送的配置并更新到本地。因此推送规则正确做法应该是 配置中心控制台/Sentinel 控制台 → 配置中心 → Sentinel 数据源 → Sentinel,而不是经 Sentinel 数据源推送至配置中心。这样的流程就非常清晰了:

be15e9183f4b08693eb420735d6ff027.png

DataSource 扩展常见的实现方式有:

  • 拉模式:客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件,甚至是 VCS 等。这样做的方式是简单,缺点是无法及时获取变更;

  • 推模式:规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。

Sentinel 目前支持以下数据源扩展:

  • Pull-based: 文件、Consul

  • Push-based: ZooKeeper, Redis, Nacos, Apollo, etcd

详细说明,可参考官网:

https://github.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值