soul從入門到放棄1--項目搭建

零、概述

用于工作、學(xué)習(xí)的需要開始學(xué)習(xí)soul,希望能堅持下去,不像專欄的名字一樣 ------ soul從入門到放棄

本篇導(dǎo)讀:網(wǎng)關(guān)的基本概念、soul主要架構(gòu)、環(huán)境的基本搭建

一、基本概念

什么是api網(wǎng)關(guān)(服務(wù)網(wǎng)關(guān))?

服務(wù)網(wǎng)關(guān) = 路由轉(zhuǎn)發(fā) + 過濾器

  • 路由轉(zhuǎn)發(fā):接收所有外界請求,根據(jù)路由配置,轉(zhuǎn)發(fā)到微服務(wù)上
  • 過濾器:可以完成一系列的橫切功能,如:限流、監(jiān)控、權(quán)限校驗等

以上這些功能本質(zhì)上都是通過過濾器實現(xiàn)的

什么是soul?

一個基于WeuFlux實現(xiàn)的響應(yīng)式API網(wǎng)關(guān),具有異步的,高性能的,跨語言的等特點。

soul的主要功能

  • 支持各種語言(http協(xié)議),支持 dubbo,springcloud協(xié)議。
  • 插件化設(shè)計思想,插件熱插拔,易擴展。

插件的熱插拔,規(guī)則的動態(tài)配置。
舉個列子,比如一個接口你限流是1秒50次,但是你想調(diào)小點,像Springcloud-gateway 或者zuul 是不是還得改動配置 然后重啟。 soul則不需要,直接在soul-admin找到對應(yīng)的接口修改即可.</pre>

  • 靈活的流量篩選,能滿足各種流量控制。
  • 內(nèi)置豐富的插件支持,鑒權(quán),限流,熔斷,防火墻等等。
  • 流量配置動態(tài)化,性能極高,網(wǎng)關(guān)消耗在 1~2ms。
  • 支持集群部署,支持 A/B Test, 藍(lán)綠發(fā)布。

架構(gòu)圖

image
image

此圖綠色部分為客戶端,按照網(wǎng)關(guān)要求的數(shù)據(jù)格式來請求網(wǎng)關(guān)服務(wù)。

soul的底層是webflux,如果soul是集群部署的話,可以開啟nginx,來反向代理網(wǎng)關(guān)服務(wù)。

Soul-admin

是soul的控制臺,負(fù)責(zé)管理插件插拔,選擇器的配置,規(guī)則的配置。將數(shù)據(jù)寫入mysql中,同時基于SPI(HTTP、Zookeeper、Websocket三種之一),實現(xiàn)數(shù)據(jù)同步機制(后續(xù)篇章會詳解)。

Soul Cluster

soul啟動后,會根據(jù)數(shù)據(jù)同步機制,拉去遠(yuǎn)端相關(guān)配置信息至本地,寫入本地JVM,然后開啟監(jiān)聽,來動態(tài)更新JVM中的數(shù)據(jù),

Plugins--Handler

基于插件責(zé)任鏈模式的執(zhí)行流程,每個插件各司其職。插件是根據(jù)用戶在soul-admin配置網(wǎng)關(guān)請求數(shù)據(jù),規(guī)則,來執(zhí)行具體邏輯。

二、環(huán)境搭建

依賴工具:樸實無華的工具,降低網(wǎng)關(guān)引入門檻

JDK 1.8+

Maven 3.2.x

Git

mysql 5.x :溫馨提醒,輕易不要嘗試mysql 8

克隆代碼

giee:git clone https://gitee.com/shuaiqiyu/soul.git --depth=1

github:git clone https://gitee.com/shuaiqiyu/soul.git --depth=1

關(guān)于: depth

  • 用 git clone --depth=1 的好處是限制 clone 的深度,不會下載 Git 協(xié)作的歷史記錄,這樣可以大大加快克隆的速度
  • depth用于指定克隆深度,為1即表示只克隆最近一次commit
  • 適合用 git clone --depth=1 的場景:你只是想clone最新版本來使用或?qū)W習(xí),而不是參與整個項目的開發(fā)工作

maven編譯

可以skip一些,提升運行效率

mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true

修改配置及啟動

soul-admin

soul-admin/src/main/resources/application.yml

image

修改mysql的配置項目,之后 啟動項目即可。

項目啟動會類LocalDataSourceLoader,會執(zhí)行schema.sql腳本,自動創(chuàng)建庫、表、相關(guān)初始化數(shù)據(jù)。

訪問地址:http://localhost:9095/

用戶名:admin 密碼:123456


image.png

各種插件

soul-bootstrap

基本不需要修改,只要注意與后臺連接地址一致即可

image

訪問地址:http://localhost:9195/

三、心得總結(jié)

環(huán)境搭建的過程,復(fù)習(xí)很多maven與git上的使用小技巧

本篇幅講了soul的大致架構(gòu),對分布式系統(tǒng)的交互有了新的理解,下一篇將擼起胳膊開始最簡單的http接口測試

靡不有初,鮮克有終。希望自己能堅持寫完這個系列

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

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

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