Nacos 数据同步
soul-admin 监听数据变化并同步到 nacos
soul-admin的Nacos
配置类 NacosConfiguration
初始化bean时通过 NacosFactory
创建配置服务。NacosDataChangedListener
监听器会监听配置的变化,并将变化的配置存入本地内存,然后通过 nacos 的配置服务将变化的数据同步到 nacos 中:
// 将变化的数据同步到 nacos 中
@SneakyThrows
private void publishConfig(final String dataId, final Object data) {
configService.publishConfig(dataId, GROUP, GsonUtils.getInstance().toJson(data));
}
soul-bootstrap从 configServer 中同步变化的数据
在 soul-bootstrap中添加依赖:
<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-sync-data-nacos</artifactId>
<version>${project.version}</version>
</dependency>
soul-spring-boot-starter-sync-data-nacos
中自动配置类 NacosSyncDataConfiguration
在初始化bean是创建了 NacosSyncDataService
用于监听配置数据的变化并进行同步:
/**
* 观察到配置数据的变化,并从 configServer 中接收数据的改动
* 5个配置集(DATA_ID)
*/
public void start() {
watcherData(PLUGIN_DATA_ID, this::updatePluginMap);
watcherData(SELECTOR_DATA_ID, this::updateSelectorMap);
watcherData(RULE_DATA_ID, this::updateRuleMap);
watcherData(META_DATA_ID, this::updateMetaDataMap);
watcherData(AUTH_DATA_ID, this::updateAuthMap);
}
总结
Nacos 的 配置管理(ConfigServer)
nacos 中的几个概念:
命名空间(Namespace)
命名空间可用于进行不同环境的配置隔离。一般一个环境划分到一个命名空间
配置分组(Group)
配置分组用于将不同的服务可以归类到同一分组。一般将一个项目的配置分到一组
配置集(Data ID)
在系统中,一个配置文件通常就是一个配置集。一般微服务的配置就是一个配置集
主要功能
配置管理(发布、修改、查询、监听配置)
https://nacos.io/zh-cn/docs/feature-list.html