一、环境准备
1、Spring Cloud中单个服务并能正常使用。参考链接
2、Sentinel已经搭建。
3、服务已经整合Sentinel参考链接
5、Nacos已经搭建。参考链接
5、已完成Sentinel中读取Nacos中配置。参考链接
二、服务流控配置持久化
1、介绍:Sentinel官方文档 | 动态规则扩展 | 推荐链接
2、下载源码Sentinel-1.8.0.zip,并解压
3、sentinel-dashboard项目注释pom.xml依赖(sentinel-datasource-nacos)作用域配置(<scope>test</scope>)
4、复制Nacos相关文件
5、修改NacosConfig的配置在这里插入图片描述
@Bean
public ConfigService nacosConfigService() throws Exception {
Properties properties = new Properties();
// nacos 地址
properties.put(PropertyKeyConst.SERVER_ADDR, "101.101.101.101:7001");
// 命令空间
properties.put(PropertyKeyConst.NAMESPACE, "dev");
// nacos 账号
properties.put(PropertyKeyConst.USERNAME, "nacos");
// nacos 账号密码
properties.put(PropertyKeyConst.PASSWORD, "nacos");
return ConfigFactory.createConfigService(properties);
}
6、需注意FlowRuleNacosProvider和FlowRuleNacosPublisher的DataId和GroupId配置,需跟Nacos对应。
7、修改FlowControllerV2文件的注入依赖
@Autowired
@Qualifier("flowRuleNacosProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
@Autowired
@Qualifier("flowRuleNacosPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;
8、修改sidebar.html文件
<li ui-sref-active="active" ng-if="entry.appType==0">
<a ui-sref="dashboard.flowV1({app: entry.app})">
<i class="glyphicon glyphicon-filter"></i> 流控规则 V1</a>
</li>
<li ui-sref-active="active" ng-if="!entry.isGateway">
<a ui-sref="dashboard.flow({app: entry.app})">
<i class="glyphicon glyphicon-filter"></i> 流控规则 Nacos</a>
</li>
9、重启服务
注意:存在Nacos修改规则后,列表不会自动刷新问题。
二、问题总结
1、NacosConfig配置中不支持账号和密码?
版本问题,之前之后1.7.3版本就不支持账号和密码,后换了1.8.0版本。