之前寫的博客都有點(diǎn)問(wèn)題,修正下,以后文章編寫參考:https://github.com/ruanyf/document-style-guide
簡(jiǎn)介
Soul使用了多種同步配置信息的方式,包括WebSocket,ZooKeeper,Http長(zhǎng)輪詢,Nacos,還缺少一個(gè)Nacos。我們先了解下Nacos是個(gè)什么東西:Nacos 提供了一組簡(jiǎn)單易用的特性集,提供快速實(shí)現(xiàn)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。如果有用過(guò)ZooKeeper的話,Nacos是類似的。今天介紹的同步就是使用Nacos實(shí)現(xiàn)的。
快速上手
環(huán)境準(zhǔn)備
Nacos官網(wǎng)
需要下載Nacos
安裝步驟
Nacos配置步驟 官網(wǎng)很詳細(xì),這個(gè)直接參照官網(wǎng)就可以了
Nacos安裝編譯完成進(jìn)行啟動(dòng)
cutiedeMacBook-Pro:nacos cutie$ cd distribution/target/nacos-server-1.4.2-SNAPSHOT/nacos/bin/
cutiedeMacBook-Pro:bin cutie$ sh startup.sh -m standalone
# 可以查看啟動(dòng)是否成功
cutiedeMacBook-Pro:bin cutie$ less /Users/cutie/workspace/nacos/nacos/distribution/target/nacos-server-1.4.2-SNAPSHOT/nacos/logs/start.out
可以訪問(wèn)下 http://127.0.0.1:8848/nacos ,用戶名 nacos,密碼 nacos
新增一個(gè)命名空間soul

如何配置Soul注冊(cè)到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,里面沒(méi)有數(shù)據(jù),同步的時(shí)候調(diào)試一下

一開(kāi)始里面沒(méi)數(shù)據(jù),拉一下最新的代碼
啟動(dòng)admin,會(huì)注冊(cè)配置信息(插件,選擇器,規(guī)則,元數(shù)據(jù),授權(quán)信息)到Nacos。
之前規(guī)則沒(méi)同步的數(shù)據(jù)也同步過(guò)來(lái)了

具體是admin啟動(dòng)的時(shí)候,獲取數(shù)據(jù)庫(kù)中保存的配置信息,然后根據(jù)nacos配置的url和對(duì)應(yīng)的namespace同步到nacos
NacosListener 中nacosDataInit,如果數(shù)據(jù)沒(méi)進(jìn)行初始化的時(shí)候則進(jìn)行初始化。
NacosListener在初始化的時(shí)候也加載了NacosDataChangedListener,在本地?cái)?shù)據(jù)發(fā)生變化的時(shí)候使用這個(gè)監(jiān)聽(tīng),同步給nacos。
然后Bootstrap中的配置數(shù)據(jù)總是保持最新的改變后的,Bootstrap使用NacosSyncDataService監(jiān)聽(tīng),NacosSyncDataService中的start方法進(jìn)行監(jiān)聽(tīng)初始化。