關(guān)于 Soul API 網(wǎng)關(guān)項目
Soul 網(wǎng)關(guān)項目是由一群優(yōu)秀的國內(nèi)開發(fā)者發(fā)起的一個異步的盏筐、高性能的、響應(yīng)式的開源網(wǎng)關(guān)項目姥饰。除了性能高之外爷绘,我認(rèn)為插件話的設(shè)計思想是 Soul
最重要的特點,這讓 Soul
變得更靈活老充。
Soul 核心架構(gòu)圖如下:
本節(jié)關(guān)注的內(nèi)容是 soul 的源碼編譯和入門使用葡盗,所以這里只是簡單展示 soul 的核心架構(gòu)圖,希望讀者能有個直觀的感受啡浊,暫不對其進(jìn)行深入討論觅够。
編譯 soul 源碼并啟動一個單機(jī)網(wǎng)關(guān)
1胶背、獲取源碼
git clone https://github.com/yiwenlong/soul.git
因為要對 Soul 項目做貢獻(xiàn),所以我已經(jīng)把 Soul 項目源碼 fork 到我自己的 Github喘先,這里我是從我的個人 Github 檢出的代碼钳吟。
2、編譯打包
./mvnw clean package -Dmaven.javadoc.skip=true
我這里的默認(rèn)打包命令只是選擇跳過了 javadoc 的生成窘拯,如果想要更快速的執(zhí)行打包命令红且,可以在參數(shù)后面添加
-Dmaven.test.skip=true
參數(shù)。
這一步完成后涤姊,在 soul-admin/target
和 soul-bootstrap/target
下會分別生成 soul-admin.jar
和 soul-bootstrap.jar
兩個可執(zhí)行的 jar 包暇番。這兩個可執(zhí)行 jar 包分別對應(yīng)架構(gòu)圖中的管理控制臺和 API 網(wǎng)關(guān)部分。
3思喊、啟動 soul-admin
啟動 soul-admin 前需要確認(rèn) Mysql 數(shù)據(jù)庫是否已經(jīng)安裝啟動壁酬,并使用自己本地環(huán)境的 Mysql 數(shù)據(jù)庫的用戶明和密碼替換到下面命令中。
java -jar ./soul-admin/target/soul-admin.jar \
--spring.datasource.password='root' \
--spring.datasource.password='12345'
這里的配置同樣可以在源碼 soul-admin 模塊的 application.yaml 中設(shè)置搔涝。
啟動成功后厨喂,我們可以訪問 http://localhost:9095
,使用用戶名密碼 admin/123456
登陸到剛剛啟動的管理控制臺服務(wù)庄呈。
4蜕煌、啟動 API 網(wǎng)關(guān)
java -jar ./soul-bootstrap/target/soul-bootstrap.jar
API 網(wǎng)關(guān)啟動成功后,我們在網(wǎng)關(guān)的日志中可以看到如下一條日志诬留,說明網(wǎng)關(guān)和管理控制臺已經(jīng)建立了 websocket 長鏈接斜纪。
2021-01-15 00:29:11.434 INFO 16453 --- [ocket-connect-1] o.d.s.p.s.d.w.WebsocketSyncDataService : websocket reconnect is successful.....
我們同樣可以在管理控制臺的日志中看到如下成功的日志:
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....
簡單使用下 soul 網(wǎng)關(guān)
1、轉(zhuǎn)發(fā)需求
在使用之前文兑,我在本地簡單啟動了一個 Nginx
服務(wù)盒刚,我希望能通過 Soul
網(wǎng)關(guān)訪問到我的 Nginx
服務(wù)(http://localhost:8080)。
2绿贞、配置 Selector 和 Rule
登陸到管理控制臺因块,選擇 PluginList
下的 divide
,點擊 Selector
后的 Add
添加如下配置:
點擊
RulesList
后的 Add
添加如下配置:Selector 和 Rule 是 Soul 網(wǎng)關(guān)中的兩個核心的概念籍铁,后面我們會重點討論并搞清楚它們涡上。
3、訪問一下
Soul
API 網(wǎng)關(guān)的默認(rèn)端口是 9195拒名,所以這里我們應(yīng)該訪問 http://localhost:9195/baidu 會看到 nginx 的默認(rèn)界面吩愧。
參考連接
- Soul 項目 Github 主頁:https://github.com/dromara/soul
- Soul 項目中文官方文檔:https://dromara.org/zh-cn/docs/soul/soul.html