SpringClouldAlibaba 之 Sentinel流控规则同步到nacos(并重新生成镜像)

前言

上一篇我们将流控规则配置到了nacos 让服务启动时拉取流控规则从而实现持久化但是是有一个缺陷的,毕竟在nacos中维护这个流控规则不太友好,毕竟sentinel为我们提供了可视化界面,我们只需要修改修改 sentinel-dashboard这个工程然后重新制作一个镜像(docker)就可以了

首先我们需要去下载 dashboard 的源码

官方文档地址

因为是在github上网不好下载有点慢这里我放一个 gitee上的地址 gitee.com/mirrors/Sen… (这个和github那个是一样一天一次同步它)

改造第一步

注意: 官方其实已经为我们封装好了代码就在测试包下

Sentinel Dashboard修改的规则同步Nacos可以按以下步骤操作: ### 配置项目 在项目(如Gateway项目)中添加相关配置,示例如下: ```properties # 你的nacos地址 nacos.server-addr=localhost:8148 # 准备把sentinel配置同步到的nacos命名空间 nacos.namespace=zixun_dev # 你的nacos用户名 nacos.username=nacos # 你的nacos密码 nacos.password=nacos ``` 此步骤是为项目指定Nacos的相关连接信息,以确保可以与Nacos进行通信 [^2]。 ### 编写Nacos扩展实现 在`com.alibaba.csp.sentinel.dashboard.rule`包下新建一个`nacos`包,用于编写针对Nacos的扩展实现。同时创建Nacos的配置类,代码如下: ```java import com.alibaba.csp.sentinel.dashboard.datasource.entity.rule.FlowRuleEntity; import com.alibaba.fastjson.JSON; import com.alibaba.nacos.api.config.ConfigFactory; import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.PropertyKeyConst; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; import java.util.List; import java.util.Properties; @Configuration public class NacosConfig { @Bean public Converter<List<FlowRuleEntity>, String> flowRuleEntityEncoder() { return JSON::toJSONString; } @Bean public Converter<String, List<FlowRuleEntity>> flowRuleEntityDecoder() { return s -> JSON.parseArray(s, FlowRuleEntity.class); } @Bean public ConfigService nacosConfigService() throws Exception { Properties properties = new Properties(); properties.put(PropertyKeyConst.SERVER_ADDR, "localhost"); return ConfigFactory.createConfigService(properties); } } ``` 这个配置类中定义了规则实体的编码、解码转换器,以及创建了Nacos的配置服务实例,用于与Nacos进行交互 [^4]。 ### 修改注入的Bean 修改`com.alibaba.csp.sentinel.dashboard.controller.v2.FlowControllerV2`中`DynamicRuleProvider`和`DynamicRulePublisher`注入的Bean,改为针对Nacos的实现,以确保规则的获取和发布使用Nacos相关逻辑 [^5]。 ### 参考数据源存取 nacos数据源的存取,可参考`test`模块`com.alibaba.csp.sentinel.dashboard.rule.nacos`的`FlowRuleNacosProvider`和`FlowRuleNacosPublisher`,了解如何从Nacos获取规则以及如何将规则发布到Nacos [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值