流控规则持久化到Nacos
在Sentinel Dashboard中配置规则之后重启应用就会丢失,实际生产环境中需要配置规则的持久化实现,Sentinel提供多种不同的数据源来持久化规则配置,包括file,redis、nacos、zk。
Pull模式
pull 模式数据源(如本地文件、RDBMS 等)一般是可写入的。 客户端主动向某个规则管理中心(如本地文件、RDBMS 等)定期轮询拉取规则。既可以在应用本地直接修改文件来更新规则,也可以通过 Sentinel 控制台推送规则。以本地文件数据源为例,推送过程如下图所示:

Sentinel 控制台通过 API 将规则推送至客户端并更新到内存中,接着注册的写数据源会将新的规则保存到本地的文件中。使用 pull 模式的数据源时一般不需要对 Sentinel控制台进行改造。
优点:简单,无任何依赖;规则持久化
缺点:不保证一致性(无法保证同步);实时性不保证(毕竟是轮询),拉取过于频繁也可能会有性能问题。
Push模式
规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。生产环境下一般采用 push 模式的数据源。
推送的操作不应由 Sentinel 客户端进行,而应该经控制台统一进行管理,直接进行推送,数据源仅负责获取配置中心推送的配置并更新到本地。配置中心控制台/Sentinel 控制台 → 配置中心 → Sentinel 数据源 → Sentinel:
优点:规则持久化;一致性;快速
缺点:引入第三方依赖
Nacos控制台添加配置

属性说明
resource:资源名称 limitApp:来源应用 grade:阀值类型,0:线程数,1:QPS count:单机阀值 strategy:流控模式,0:直接,1:关联,2:链路 controlBehavior:流控效果,0:快速失败,1:warmUp,2:排队等待 clusterMode:是否集群
[ { "resource": "/v1/order/createPayment", "limitApp": "default", "grade": "1", "count": "1", "strategy": "0", "controlBehavior": "0", "clusterMode": false } ]
启动Sentinel就可以看到 ,上面的这个限流规则已经在Sentinel控制台了,所以我们在Nacos配置的限流规则,已经推送到了Sentinel控制台。
问题
每次需要在Nacos配置规则然后会推送到Sentinel。但是Nacos中的规则需要手动添加,这样很不方便。希望做到当然是在Sentinel控制台添加熔断规则,自动将熔断规则推送到Nacos数据源
参考:
https://www.cnblogs.com/jian0110/p/14139044.html
https://mynamelancelot.github.io/spring-cloud/spring-cloud-alibaba-sentinel.html
浙公网安备 33010602011771号