Soul網關同步數據之Zookeeper

Soul網關同步數據之Zookeeper

調整配置

pom文件中註釋掉原來默認的websocket同步方式,改爲zookeeper同步。

        <!--soul data sync start use zookeeper-->
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>soul-spring-boot-starter-sync-data-zookeeper</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!--soul data sync start use websocket-->
        <!--<dependency>-->
            <!--<groupId>org.dromara</groupId>-->
            <!--<artifactId>soul-spring-boot-starter-sync-data-websocket</artifactId>-->
            <!--<version>${project.version}</version>-->
        <!--</dependency>-->

同理註釋掉yml問價中的默認的websocket配置修改爲zookeeper配置

    zookeeper:
        url: localhost:2181
        sessionTimeout: 5000
        connectionTimeout: 2000

對應的網關soul-bootstrap層根據官方文檔做對應的設置

根據上一文的調試過程。我們同樣找到了zookeeper對應的配置文件和加載的代碼
file
從傳遞格式可以看到與websocket的同步的配置基本一樣,但是同樣的,我在這裏斷點調試時 final ObjectProvider pluginSubscriber組件的數據來源有一些疑問。因此我全局搜索了PluginDataSubscriber,發現了實現了PluginDataSubscriber接口的類CommonPluginDataSubscriber,發現在這個類中有事件訂閱和刷新相關的方法。毫無疑問,這些就是後續再具體操作時實現數據變化刷新時的關鍵邏輯
緊接着。我發現CommonPluginDataSubscriber類上並沒有Spring中相關的註解。那麼他是如何被注入到spring中的呢。於是我又進行了全局搜索,發現這個類在soul-web模塊中的SoulConfiguration模塊中進行了注入

@Bean
public PluginDataSubscriber pluginDataSubscriber(final ObjectProvider<List> pluginDataHandlerList) {
return new CommonPluginDataSubscriber(pluginDataHandlerList.getIfAvailable(Collections::emptyList));
}

 同時可以發現這個類中有其他轉發和插件處理等相關邏輯。這個後續的分析可能會用到,值得關注一下
 另外可以看到上述列表中同樣適用了ObjectProvider來注入插件數據處理類。利用這個線索。我們可以全局搜索一下PluginDataHandler相關的類,搜索後發現,基本每一個插件都是類似的這種做法Configuration-->PluginDataHandler

同時,可以知道數據流向RateLimiterConfiguration-->RateLimiterPluginDataHandler-->SoulConfiguration-->pluginDataSubscriber-->ZookeeperSyncDataConfiguration

同時在ZookeeperSyncDataService我們可以看到基於zookeeper的客戶端進行了選擇器和規則,元數據和權限相關的數據同步操作。關於這一部分的內容,後續我們繼續查看如何進行的數據同步
同時,後面我們會講解一些關於響應式編程的相關內容,例如Mono和Flux

歡迎搜索關注本人與朋友共同開發的微信面經小程序【大廠面試助手】和公衆號【微瞰技術】,以及總結的分類面試題https://github.com/zhendiao/JavaInterview

file
file

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章