Soul 網(wǎng)關(guān)使用 - 源碼編譯和簡(jiǎn)單使用

關(guān)于 Soul API 網(wǎng)關(guān)項(xiàng)目

Soul 網(wǎng)關(guān)項(xiàng)目是由一群優(yōu)秀的國(guó)內(nèi)開(kāi)發(fā)者發(fā)起的一個(gè)異步的、高性能的、響應(yīng)式的開(kāi)源網(wǎng)關(guān)項(xiàng)目。除了性能高之外,我認(rèn)為插件話的設(shè)計(jì)思想是 Soul 最重要的特點(diǎn),這讓 Soul 變得更靈活。
Soul 核心架構(gòu)圖如下:

Soul 核心架構(gòu)圖

本節(jié)關(guān)注的內(nèi)容是 soul 的源碼編譯和入門(mén)使用,所以這里只是簡(jiǎn)單展示 soul 的核心架構(gòu)圖,希望讀者能有個(gè)直觀的感受,暫不對(duì)其進(jìn)行深入討論。

編譯 soul 源碼并啟動(dòng)一個(gè)單機(jī)網(wǎng)關(guān)

1、獲取源碼

git clone https://github.com/yiwenlong/soul.git

因?yàn)橐獙?duì) Soul 項(xiàng)目做貢獻(xiàn),所以我已經(jīng)把 Soul 項(xiàng)目源碼 fork 到我自己的 Github,這里我是從我的個(gè)人 Github 檢出的代碼。

2、編譯打包

./mvnw clean package -Dmaven.javadoc.skip=true

我這里的默認(rèn)打包命令只是選擇跳過(guò)了 javadoc 的生成,如果想要更快速的執(zhí)行打包命令,可以在參數(shù)后面添加 -Dmaven.test.skip=true 參數(shù)。

這一步完成后,在 soul-admin/targetsoul-bootstrap/target 下會(huì)分別生成 soul-admin.jarsoul-bootstrap.jar 兩個(gè)可執(zhí)行的 jar 包。這兩個(gè)可執(zhí)行 jar 包分別對(duì)應(yīng)架構(gòu)圖中的管理控制臺(tái)和 API 網(wǎng)關(guān)部分。

3、啟動(dòng) soul-admin

啟動(dòng) soul-admin 前需要確認(rèn) Mysql 數(shù)據(jù)庫(kù)是否已經(jīng)安裝啟動(dòng),并使用自己本地環(huán)境的 Mysql 數(shù)據(jù)庫(kù)的用戶明和密碼替換到下面命令中。

java -jar ./soul-admin/target/soul-admin.jar \
  --spring.datasource.password='root' \
  --spring.datasource.password='12345' 

這里的配置同樣可以在源碼 soul-admin 模塊的 application.yaml 中設(shè)置。

啟動(dòng)成功后,我們可以訪問(wèn) http://localhost:9095,使用用戶名密碼 admin/123456 登陸到剛剛啟動(dòng)的管理控制臺(tái)服務(wù)。

Soul 管理控制臺(tái)界面

4、啟動(dòng) API 網(wǎng)關(guān)

java -jar ./soul-bootstrap/target/soul-bootstrap.jar

API 網(wǎng)關(guān)啟動(dòng)成功后,我們?cè)诰W(wǎng)關(guān)的日志中可以看到如下一條日志,說(shuō)明網(wǎng)關(guān)和管理控制臺(tái)已經(jīng)建立了 websocket 長(zhǎng)鏈接。

2021-01-15 00:29:11.434  INFO 16453 --- [ocket-connect-1] o.d.s.p.s.d.w.WebsocketSyncDataService   : websocket reconnect is successful.....

我們同樣可以在管理控制臺(tái)的日志中看到如下成功的日志:

2021-01-15 02:43:11.365  INFO 17565 --- [0.0-9095-exec-1] o.d.s.a.l.websocket.WebsocketCollector   : websocket on open successful....

簡(jiǎn)單使用下 soul 網(wǎng)關(guān)

1、轉(zhuǎn)發(fā)需求

在使用之前,我在本地簡(jiǎn)單啟動(dòng)了一個(gè) Nginx 服務(wù),我希望能通過(guò) Soul 網(wǎng)關(guān)訪問(wèn)到我的 Nginx 服務(wù)(http://localhost:8080)。

2、配置 Selector 和 Rule

登陸到管理控制臺(tái),選擇 PluginList 下的 divide,點(diǎn)擊 Selector 后的 Add 添加如下配置:

Selector 配置

點(diǎn)擊 RulesList 后的 Add 添加如下配置:
RuleList 配置

Selector 和 Rule 是 Soul 網(wǎng)關(guān)中的兩個(gè)核心的概念,后面我們會(huì)重點(diǎn)討論并搞清楚它們。

3、訪問(wèn)一下

Soul API 網(wǎng)關(guān)的默認(rèn)端口是 9195,所以這里我們應(yīng)該訪問(wèn) http://localhost:9195/baidu 會(huì)看到 nginx 的默認(rèn)界面。

通過(guò) Soul 網(wǎng)關(guān)訪問(wèn) Nginx

參考連接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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