soul 網(wǎng)關(guān)(十一):數(shù)據(jù)同步方式之 zookeeper(三)

本文主要接者上文說的 admin 的流程翠拣,討論一下 Bootstrap 端的流程和 Zookeeper 數(shù)據(jù)同步方式的時序圖萍程。

Bootstrap 端

啟動 bootStrap 時,命令行的日志顯示 zkClient 啟動并完成了數(shù)據(jù)同步咱枉。

2021-01-26 11:34:58.346  INFO 34694 --- [           main] s.b.s.d.z.ZookeeperSyncDataConfiguration : you use zookeeper sync soul data.......
2021-01-26 11:34:58.354  INFO 34694 --- [-localhost:2181] org.I0Itec.zkclient.ZkEventThread        : Starting ZkClient event thread.
...
2021-01-26 11:34:58.445  INFO 34694 --- [ain-EventThread] org.I0Itec.zkclient.ZkClient             : zookeeper state changed (SyncConnected)

啟動時

soul 封裝了自己的 boot湾碎,將 ZookeeperSyncDataConfiguration 納入自動配置中觉增。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.dromara.soul.spring.boot.sync.data.zookeeper.ZookeeperSyncDataConfiguration

ZookeeperSyncDataConfigurationSyncDataServiceZkClient 注冊了 Bean孕锄,而 ·SyncDataService 是個接口類吮廉,實際上是 ZookeeperSyncDataService, 該實現(xiàn)的構(gòu)造函數(shù)中含有 watcherData, watchAppAuth畸肆, watchMetaData 的方法宦芦, 這個三個方法都是都是直接或者間接更新本地的緩存,并調(diào)用 zkClient.subscribeDataChanges 開啟監(jiān)聽 Zookeeper 的數(shù)據(jù)變更轴脐。
大致流程圖如下:

大致流程圖

這個流程重在 ZookeeperSyncDataService 中调卑。

更新數(shù)據(jù)時

由于啟動時, zkClient.subscribeDataChanges 也開啟了數(shù)據(jù)變化監(jiān)聽大咱, 以更改 rule 為例恬涧, 在 subscribeRuleDataChanges 方法中得到看出:

private void subscribeRuleDataChanges(final String path) {
        zkClient.subscribeDataChanges(path, new IZkDataListener() {
            @Override
            public void handleDataChange(final String dataPath, final Object data) {
                cacheRuleData((RuleData) data);
            }

           ...
        });
    }

zkClient 訂閱到了 Zookeeper 的數(shù)據(jù)變更,最終在 CommonPluginDataSubscriber#subscribeDataHandler 的方法中徽级,進行配置的更新气破。大致如下:

數(shù)據(jù)同步數(shù)據(jù)變更

時序圖

經(jīng)過 admin 端和 bootstrap 端的數(shù)據(jù)流轉(zhuǎn),再此總結(jié)一下總的時序圖餐抢。

Zookeeper 數(shù)據(jù)同步總的流程圖

總結(jié)

    1. Zookeeper 數(shù)據(jù)同步的大體思想和之前的 Nacos 很相近现使,都是先寫入注冊中心,然后 bootstrap 端從注冊中心拿數(shù)據(jù)旷痕。
    1. 利用 MapStruct 生成對應(yīng)的實現(xiàn)類碳锈,可以在日常開發(fā)中使用。Mapping Frameworks 的對比
    1. Zookeeper 的 watch 機制還需要進一步的深入欺抗。
    1. 時序圖和 uml 的表達方式還得再加強售碳。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绞呈,隨后出現(xiàn)的幾起案子贸人,更是在濱河造成了極大的恐慌,老刑警劉巖佃声,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艺智,死亡現(xiàn)場離奇詭異,居然都是意外死亡圾亏,警方通過查閱死者的電腦和手機十拣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進店門封拧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夭问,你說我怎么就攤上這事泽西。” “怎么了缰趋?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵捧杉,是天一觀的道長。 經(jīng)常有香客問我埠胖,道長糠溜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任直撤,我火速辦了婚禮非竿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谋竖。我一直安慰自己红柱,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布蓖乘。 她就那樣靜靜地躺著锤悄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘉抒。 梳的紋絲不亂的頭發(fā)上零聚,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天,我揣著相機與錄音些侍,去河邊找鬼隶症。 笑死,一個胖子當(dāng)著我的面吹牛岗宣,可吹牛的內(nèi)容都是我干的蚂会。 我是一名探鬼主播,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼耗式,長吁一口氣:“原來是場噩夢啊……” “哼胁住!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起刊咳,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤彪见,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后娱挨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體余指,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年让蕾,在試婚紗的時候發(fā)現(xiàn)自己被綠了浪规。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡探孝,死狀恐怖笋婿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顿颅,我是刑警寧澤缸濒,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站粱腻,受9級特大地震影響庇配,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绍些,卻給世界環(huán)境...
    茶點故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一捞慌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柬批,春花似錦啸澡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至上沐,卻和暖如春皮服,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背参咙。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工龄广, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人昂勒。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓蜀细,卻偏偏與公主長得像,于是被迫代替她去往敵國和親戈盈。 傳聞我的和親對象是個殘疾皇子奠衔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,500評論 2 348

推薦閱讀更多精彩內(nèi)容