Soul run it

1,概述

Soul 是基于 WebFlux實(shí)現(xiàn)的響應(yīng)式的 API 網(wǎng)關(guān),具有異步、高性能、跨語言等特點(diǎn),接下來,我們將從環(huán)境部署開始,一層層撥開她,進(jìn)行行一場靈魂的碰撞!
項(xiàng)目github地址:https://github.com/Dromara/soul
clone 項(xiàng)目:
使用:mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true命令編譯項(xiàng)目

2,部署

簡易部署框圖

上圖簡易部署admin和bootstrap,隨著學(xué)習(xí)的深入逐漸完善各部組件的源碼實(shí)現(xiàn)!
啟動admin后,登錄:admin/123456

2.1,啟動admin分析
     查看配置文件application.yml
application.yml

紅色框出的作用:(猜測一下是:開啟websocket,sync同步?-->同步開啟websocket?使用websocket的原因是啥?)
這時(shí)框圖變成這樣:


admin2

查看同websocket有關(guān)的類,一般情況下在配置類:WebsocketSyncProperties;全局文本搜索WebsocketSyncProperties;


WebsocketSyncProperties

這個(gè)@Configuration里面分別@Bean三個(gè):WebsocketDataChangedListener;WebsocketCollector;ServerEndpointExporter具體作用后面在詳解;但是可以發(fā)現(xiàn):WebsocketCollector 這個(gè)類被@ServerEndpoint("/websocket")所修飾;說明這個(gè)websocket是服務(wù)端;
而這個(gè)類的類名:DataSyncConfiguration ---->中文釋義:數(shù)據(jù)同步配置在進(jìn)一步推導(dǎo):使用websocket進(jìn)行數(shù)據(jù)同步;
這時(shí)我們的框圖就是這樣的:


admin3
2.2 Soul-bootstrap啟動分析:

Soul-bootstrap

(1)紅色框中1的部分說明:在啟動bootstrap過程中就去加載插件。進(jìn)入SoulConfiguration搜索load plugin:
@Bean("webHandler") public SoulWebHandler soulWebHandler(final ObjectProvider<List<SoulPlugin>> plugins) { List<SoulPlugin> pluginList = plugins.getIfAvailable(Collections::emptyList); final List<SoulPlugin> soulPlugins = pluginList.stream() .sorted(Comparator.comparingInt(SoulPlugin::getOrder)).collect(Collectors.toList()); soulPlugins.forEach(soulPlugin -> log.info("load plugin:[{}] [{}]", soulPlugin.named(), soulPlugin.getClass().getName())); return new SoulWebHandler(soulPlugins); }
debugger進(jìn)入:
image.png

證明是分析是對的!
(2)紅色方框2:說明建立了一個(gè)websocket連接;
如上述閱讀方法:進(jìn)入WebsocketSyncDataConfiguration類:看到這個(gè)注解@ConditionalOnProperty(prefix = "soul.sync.websocket", name = "urls")
再看配置文件:發(fā)現(xiàn)
soul :
file:
enabled: true
corss:
enabled: true
dubbo :
parameter: multi
sync:
websocket :
urls: ws://localhost:9095/websocket
這個(gè)地址不就是:admin的websocket服務(wù)端嗎?

3,第一節(jié)框圖

到此時(shí)我們的框圖如下:


image.png

4,總結(jié)

第一天總結(jié)

感受:閱讀源碼需要大膽假設(shè),并結(jié)合日志,配置文件分析源碼;當(dāng)然了一個(gè)好的項(xiàng)目,類名,方法名的命名對閱讀源碼有很大的幫助!在此不得不,感受貓大的強(qiáng)大!充實(shí)的一天,明天繼續(xù)...

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

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

  • 零、概述 用于工作、學(xué)習(xí)的需要開始學(xué)習(xí)soul,希望能堅(jiān)持下去,不像專欄的名字一樣 ------ soul從入門到...
    空杯成長筆記閱讀 1,847評論 0 0
  • 概述 從今天開始準(zhǔn)備用四周的時(shí)間學(xué)習(xí)soul網(wǎng)關(guān),并通過查看官方文檔、examples、分析其底層的源碼等方式對她...
    路人丁_3a2e閱讀 766評論 0 0
  • 了解自己閱讀源碼最后達(dá)成的目標(biāo) 1、學(xué)會使用Soul框架 2、學(xué)習(xí)Soul框架里面功能的實(shí)現(xiàn),應(yīng)用到以后的開發(fā)中 ...
    cutieagain閱讀 820評論 0 0
  • 前言 本篇文章主要通過解讀開源項(xiàng)目OneBlog的如何搭建、技術(shù)棧的介紹及優(yōu)點(diǎn)與不足,來加深對技術(shù)理解,后期為自己...
    笨笨程序猿閱讀 1,417評論 1 1
  • 久違的晴天,家長會。 家長大會開好到教室時(shí),離放學(xué)已經(jīng)沒多少時(shí)間了。班主任說已經(jīng)安排了三個(gè)家長分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,867評論 16 22

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