之前写的博客都有点问题,修正下,以后文章编写参考:https://github.com/ruanyf/document-style-guide
简介
Soul使用了多种同步配置信息的方式,包括WebSocket,ZooKeeper,Http长轮询,Nacos,还缺少一个Nacos。我们先了解下Nacos是个什么东西:Nacos 提供了一组简单易用的特性集,提供快速实现动态服务发现、服务配置、服务元数据及流量管理。如果有用过ZooKeeper的话,Nacos是类似的。今天介绍的同步就是使用Nacos实现的。
快速上手
环境准备
Nacos官网
需要下载Nacos
安装步骤
Nacos配置步骤 官网很详细,这个直接参照官网就可以了
Nacos安装编译完成进行启动
cutiedeMacBook-Pro:nacos cutie$ cd distribution/target/nacos-server-1.4.2-SNAPSHOT/nacos/bin/
cutiedeMacBook-Pro:bin cutie$ sh startup.sh -m standalone
# 可以查看启动是否成功
cutiedeMacBook-Pro:bin cutie$ less /Users/cutie/workspace/nacos/nacos/distribution/target/nacos-server-1.4.2-SNAPSHOT/nacos/logs/start.out
可以访问下 http://127.0.0.1:8848/nacos ,用户名 nacos,密码 nacos
新增一个命名空间soul
如何配置Soul注册到Nacos
Admin添加依赖
<!-- nacos-client 1.2.0 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${nacos-client.version}</version>
</dependency>
新增配置
sync:
nacos:
url: localhost:8848
namespace: 03bc0f22-78c1-49f0-a26c-7a62c1f7b898
Bootstrap添加依赖
<!-- 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>
新增配置
sync:
nacos:
url: localhost:8848
namespace: 03bc0f22-78c1-49f0-a26c-7a62c1f7b898
nacos里面查看rule.plugin,里面没有数据,同步的时候调试一下
一开始里面没数据,拉一下最新的代码
启动admin,会注册配置信息(插件,选择器,规则,元数据,授权信息)到Nacos。
之前规则没同步的数据也同步过来了
具体是admin启动的时候,获取数据库中保存的配置信息,然后根据nacos配置的url和对应的namespace同步到nacos
NacosListener 中nacosDataInit,如果数据没进行初始化的时候则进行初始化。
NacosListener在初始化的时候也加载了NacosDataChangedListener,在本地数据发生变化的时候使用这个监听,同步给nacos。
然后Bootstrap中的配置数据总是保持最新的改变后的,Bootstrap使用NacosSyncDataService监听,NacosSyncDataService中的start方法进行监听初始化。