Soul源碼閱讀 數(shù)據(jù)同步之nacos同步【第十天】

之前寫的博客都有點(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

image.png

如何配置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)試一下


image.png

一開(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)了


image.png

具體是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)初始化。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容