任务 启动admin,与网关。 admin操作,使用nacos同步数据到网关
nacos 配置中心 按照步骤下载部署 nacos,在本地启动。注意, windows 的 terminal 中不支持-Dmaven.test.skip=true,可以使用 cmd 进行操 作。
1 2 3 4 5 6 7 8 9 git clone https://github.com.cnpmjs.org/alibaba/nacos.git cd nacos/ mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U cd distribution/target/nacos-server-1.4.2-SNAPSHOT/nacos/bin startup.cmd -m standalone
访问控制台:http://127.0.0.1:8848/nacos, 使用账号密码 nacos/nacos 进行登录。至此,nacos 部署完成。新建 namespace ,id 为 e776514a-73a1-49c2-8fb9-c5e566832d14。
nacos 同步数据 soul-admin,引入 nacos 的依赖,配置 nacos 同步策略:
1 2 3 4 5 <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>${nacos-client.version}</version> </dependency>
1 2 3 4 5 soul: sync: nacos: url: localhost:8848 namespace: e776514a-73a1-49c2-8fb9-c5e566832d14
网关,引入 nacos 的服务发现, nacos 同步的依赖,配置 nacos 的服务发现, nacos 同步策略。此时启动报错,主要是 NacosSyncDataService 中的监听配置项为空导致,其中包括 plugin、selector、rule、metadata、auth。猜测此时需要先注册服务。
1 2 3 4 5 6 7 8 9 10 11 12 13 <!-- springCloud if you config register center is nacos please dependency this--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.0.RELEASE</version> </dependency> <!--soul data sync start use nacos--> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-sync-data-nacos</artifactId> <version>${project.version}</version> </dependency>
1 2 3 4 5 6 7 8 9 10 11 spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 soul: sync: nacos: url: localhost:8848 namespace: e776514a-73a1-49c2-8fb9-c5e566832d14
1 2 3 4 5 6 7 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); }
这种情况下,divide 插件和 dubbo 插件使用时均出现有配置项没有同步到配置中心的情况。
按照官网的案例,是使用 springcloud 插件,然后使用 nacos 作为注册中心。在 springcloud 的 example 中打开 nacos 服务发现的依赖,配置 nacos 的服务发现。
1 2 3 4 5 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.0.RELEASE</version> </dependency>
1 2 3 4 5 6 7 spring: application: name: springCloud-test cloud: nacos: discovery: server-addr: 127.0.0.1:8848
此时,请求/springcloud/test/findByUserId成功。
最后,再看一下 nacos 的配置列表,可以看到 soul 的相关数据同配置成功。
如果看到 nacos 的配置项没有同步到,或者数据不是最新的,点击插件管理、插件列表、元数据管理和认证的“同步数据”。
Link
Author:
Eazon Shaw
Permalink:
http://eazon.xyz/2021/01/24/soul08/
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Solgan:
Do you believe in DESTINY?