任务

启动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

image.png

访问控制台:http://127.0.0.1:8848/nacos, 使用账号密码 nacos/nacos 进行登录。至此,nacos 部署完成。新建 namespace ,id 为 e776514a-73a1-49c2-8fb9-c5e566832d14。

image.png

image.png

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成功。

image.png

最后,再看一下 nacos 的配置列表,可以看到 soul 的相关数据同配置成功。

如果看到 nacos 的配置项没有同步到,或者数据不是最新的,点击插件管理、插件列表、元数据管理和认证的“同步数据”。

image.png

Link