sentinel的功能强大,官方也提供了包括数据库、redis、nacos等多种数据源实现持久化动态规则,还提供了sentinel-dashboard的可视化界面配置规则
但是实际使用中发现,官方的可视化界面仅提供了基础的拉取功能,倘若在dashboard中进行规则的更改,是无法反向推送到nacos等数据源中的。
好在官方预留了DynamicRulePublisher和DynamicRuleProvider两个接口,提供了自定义实现拉取、推送,从而实现通过dashboard修改规则,也能同步到nacos存储的json文件中
具体改造过程参照:https://blog.youkuaiyun.com/weixin_42437633/article/details/108328767,这里不多做赘述
以上所有代码均只在数据源为nacos的情况下有用,其他数据源类型请自行照葫芦画瓢
nacos无需提前创建相关模块的限流规则文件,可直接在sentinel中直接配置后会自动创建如下类型文件
其中xqoo-client为模块名,param,thority,degrade为规则类型名,对应sentinel不同规则类型,
sentinel仅作为标识后缀
以上信息均在sentinel-dashboard项目的application.properties更改
需要注意的是在nacos端生成的json文件不是格式化的,是文本类型,nacos中修改建议复制到json工具中格式化后修改
一下附上源码,采用的sentinel版本为1.8.0,补全了所有限流类型的推送和拉取方法,增加了注入nacos.server.**之类的自定义配置