Soul原始碼分析 soul admin原始碼分析

2021-10-16 05:23:10 字數 3048 閱讀 4691

頁面操作原始碼分析

public int createorupdate(final selectordto selectordto) );

} else );

}publishevent(selectordo, selectorconditiondtos);

return selectorcount;

}

與soul-bootstrap 資料同步(websocket)原始碼分析之前介紹了 admin 頁面操作之後把資料儲存資料庫,然後用了 spring 自帶的響應式程式設計把資料同步到 bootstrap 專案,以達到動態重新整理閘道器規則及外掛程式,而不用新增配置後去重啟閘道器。

當 soul-bootstrap 啟動時,看日誌會打出來這麼一段

2021-01-21 00:33:39.620  info 14276 --- [0.0-9095-exec-5] o.d.s.a.l.websocket.websocketcollector   : websocket on open successful....
那麼問題來了,它用 websocket 和誰連線了,又是怎麼連線的?下面通過找到打日誌的**,再通過打斷點的方式來除錯一下,這裡是打日誌出來的地方

先來分析一下這個**:

一找果不其然,上圖畫紅框的地方是不是很眼熟,沒錯,***,和websocket相關的***,如果還是有點看不明白監聽和之前的 publishevent 有什麼關係,那就把***裡的**打上斷點,除錯一把。我這裡為了方便,就點了這個同步所有資料

這裡進的是 datachangedeventdispatcher 這個類,呼叫了event 相關的方法,在左下角這個地方,是不是看到了熟悉了方法了,沒錯就是上面說的 publishevent

與soul-bootstrap 資料同步(zookeeper)原始碼分析與soul-bootstrap 資料同步(http)原始碼分析

老規矩,改 yml 檔案中的配置,然後找到對應的 listener 類打斷點除錯,這裡如果是用 http 的話 websocket 相關的類還是會被訪問到,所以這裡一樣的不能直接注釋

下面來看看裡面的**:

這裡乙個構造方法,裡面例項化了乙個 clients 陣列阻塞佇列,大小為1024。乙個定時任務執行緒池,執行緒數為1,名字字首為 「long-polling」 的後台守護執行緒,看名字可以知道,這是用來長輪詢的。乙個相關的屬性配置

初始化前方法裡面啟動了定時執行緒,間隔5分鐘之後,每5分鐘執行一次,去執行 refreshlocalcache 這個重新整理本地快取的方法

private void refreshlocalcache()
如果是手動點同步資料時,會去執行下面這些相關的方法,也是通過定時執行緒池來執行,只不過是立即執行

五分鐘後,執行相關的重新整理方法,列印的日誌

soul 中還有其它方法同步資料,這些後面有精力再分析,soul-admin 原始碼先分析到這,如果後續再分析的話,會另外再寫一遍文章,這裡就先到此為止

soul-admin 中還有功能現在還沒有使用到,還有很多好玩的東西,這篇會持續更新,到用到的時候再去具體分析裡面的原始碼。

2021-01-20分析了 soul-admin 用websocket 同步資料到 soul-bootstrap 中

2021-01-21分析了 soul-admin 用 zookeeper 同步資料到 soul-bootstrap 中

2021-01-21分析了 soul-admin 用 http 同步資料到 soul-bootstrap 中

Soul原始碼分析 soul admin多節點啟動

閘道器對外提供服務請求量不大時,只需要啟動乙個節點就可以了,如果請求量大的話,乙個節點肯定是扛不住的,這個時候就需要啟動多個節點來做集群對外提供服務了。下面我們來嘗試啟動多個 soul bootstrap,同時還可以啟動多個 soul admin 來管理外掛程式,看看資料會不會同步到各個 soul ...

Soul原始碼閱讀 1 初識 Soul

無論我們學習什麼東西之前,都要先搞清楚我們要學習的是什麼,就像一些哲學思考先要給出清晰的定義,否則後面的一切都無從談起。從今天開始,我來和大家一起,學習一款非常優秀的開源閘道器專案 soul。soul 是什麼呢?先來看下官網作者的定義 這是乙個非同步的,高效能的,跨語言的,響應式的api閘道器。我希...

Soul原始碼總結 01 20

總結首先啟動soul admin和soul bootstrap專案,在soul bootstrap控制台日誌會發現 soul admin與soul閘道器預設建立websocket通訊,那麼具體在 中是如何實現的呢?soul sync websocket urls ws localhost 9095 ...