soul閘道器資料同步方式之zookeeper

2021-10-17 04:59:09 字數 2073 閱讀 3462

基於 zookeeper 的同步原理很簡單,主要是依賴 zookeeper 的 watch 機制,soul-web 會監聽配置的節點,soul-admin 在啟動的時候,會將資料全量寫入 zookeeper,後續資料發生變更時,會增量更新 zookeeper 的節點,與此同時,soul-web 會監聽配置資訊的節點,一旦有資訊變更時,會更新本地快取。

soul-admin處開啟zk同步方式

sync:

zookeeper:

url: localhost:2181

sessiontimeout: 5000

connectiontimeout: 2000

閘道器側同樣開啟對zk節點的監聽

soul :

file:

enabled: true

corss:

enabled: true

dubbo :

parameter: multi

sync:

zookeeper:

url: localhost:2181

sessiontimeout: 5000

connectiontimeout: 2000

重新啟動admin 與閘道器服務 看到soul的預設資料已經在zk中了

同樣以變更selector 資料為例 跟蹤具體流程

先看目錄結構 zookeeperdatachangedlistener,zookeeperdatainit這兩個一定是zk資料維護的入口,乙個是初始化資料的,乙個是變更節點資料的 直接在selector處變更資料方法處加上斷點

更新時間進行對應節點的資料寫入

監聽selcetor 節點資料變化

private void watcherselector(final string pluginname));

} subscribechildchanges(configgroupenum.selector, selectorparentpath, childrenlist)

;}

監聽節點資料變化同步記憶體具體處理

private void subscribeselectordatachanges(final string path)

@override

public void handledatadeleted(final string datapath)})

;}

跟蹤了下通過zk同步資料的主要流程

有websocket 的總結經驗整體找對應類方法入口基本比較暢通

對http長輪訓這裡看下順便補充下常輪訓的一些知識盲點

soul閘道器學習資料同步方式http長輪訓

zookeeper websocket 資料同步的機制比較簡單,而 http 同步會相對複雜一些。soul 借鑑了 apollo nacos 的設計思想,取其精華,自己實現了 http 長輪詢資料同步功能。注意 這裡並非傳統的 ajax 長輪詢!http 長輪詢機制如上所示,soul web 閘道器...

Soul閘道器同步資料邏輯初探

按照前面兩個同步資料的分析,可以看到http同步跟其他的同步的載入基本一樣。不同的地方主要是載入資料的操作 載入資料的過程主要是 private void start else executor override suppresswarnings unchecked for datachangedl...

Soul閘道器(九) Nacos同步資料

soul admin的nacos配置類nacosconfiguration初始化bean時通過nacosfactory建立配置服務。nacosdatachangedlistener 會監聽配置的變化,並將變化的配置存入本地記憶體,然後通過 nacos 的配置服務將變化的資料同步到 nacos 中 將...