了解自己閱讀源碼最后達成的目標
1、學會使用Soul框架
2、學習Soul框架里面功能的實現,應用到以后的開發中
3、之后Soul開發其他的時候能夠著手進行開發
Soul的背景
異步的,高性能的,跨語言的,響應式的API網關【參考了Kong,Spring-Cloud-Gateway等優秀的網關后的實現】
Soul的特性【以下內容的使用以及如何實現都可以進行查看】
- 支持各種語言(Http協議),支持 Dubbo,SpringCloud協議。【支持多種協議是如何實現的?】
- 插件化設計思想,插件熱插拔,易擴展
- 靈活的流量篩選,能滿足各種流量控制。
- 內置豐富的插件支持,鑒權,限流,熔斷,防火墻等等。
- 流量配置動態化,性能極高,網關消耗在 1~2ms。
- 支持集群部署,支持 A/B Test,藍綠發布。
上面A/B Test和藍綠發布是沒有接觸過的,下面的鏈接掃下盲
藍綠部署、紅黑部署、AB測試、灰度發布、金絲雀發布、滾動發布的概念與區別
Soul的架構設計
SoulAdmin
- Plugin-in configuration
- Selector configuration
- Rule configuration
- User managerment
- Event Bus (write data)
- SPI
- Http
- Zookeeper
- Websocket
SoulCluster
- SPI
- Cache Data & Local Cache
Git & Automated deployment
- DCS(Distributed control system) Automated build & Docker
Plugins
- Monitor
- Sign
- Limiting
- Divide
- Dubbo
- SpringCloud
Monitor-Dashboard
Soul代碼結構
編譯安裝代碼(大概1~2分鐘編譯完畢)
mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true
我們先觀察下上面的代碼結構
從上到下分別是
soul-admin
負責維護網關的元數據、配置等等,插件和其他信息配置的管理后臺,并提供給 Soul Bootstrap 網關服務配置讀取
soul-bootstrap
用于啟動項目,用戶可以參考
soul-client
用戶可以使用 Spring MVC,Dubbo,Spring Cloud 快速訪問
soul-common
框架的通用類
soul-dashboard
控制面板
soul-dist
構建項目
soul-example
RPC 示例項目
soul-metric
prometheus(普羅米修斯)實現的 metrics,指標,暫時不知道是做什么用的
soul-plugin
Soul 支持的插件集合
soul-register-center
注冊中心
soul-spi
提供spi支持
soul-springboot-starter
支持 spring boot starter
soul-sync-data-center
提供 ZooKeeper,HTTP,WebSocket,Nacos 的方式同步數據
soul-web
包括插件、請求路由和轉發等的核心處理包
運行soul-admin
1、需要安裝mysql,使用5.X版本,8.X版本據說報錯
2、修改配置文件下的數據庫密碼
標注紅色的三個需要進行修改,連接mysql
spring:
#profiles:
# active: h2
thymeleaf:
cache: true
encoding: utf-8
enabled: true
prefix: classpath:/static/
suffix: .html
datasource:
url: jdbc:mysql://localhost:3306/soul?useUnicode=true&characterEncoding=utf-8
username: root
password:
driver-class-name: com.mysql.jdbc.Driver
3、啟動soul-admin
運行 SoulAdminBootstrap
4、首次運行,會在mysql數據庫中創建soul庫,并創建soul需要使用的數據庫表
5、服務運行成功,查看本地運行的控制臺 http://localhost:9095/ ,用戶名 admin,密碼 123456
菜單一覽
運行 soul-bootstrap
1、修改application下面的配置,默認不需要修改
該url為admin啟動的地址,作用為同步獲取配置信息用
2、運行 SoulBootstrapApplication
3、啟動完成,服務運行在9195端口,訪問 http://127.0.0.1:9195/
訪問返回下圖,說明啟動成功
{
"code": -107,
"message": "Can not find selector, please check your configuration!",
"data": null
}
運行起來了,查看下Soul首頁的
存儲插件,選擇器,規則配置數據,以及對應關系
同步更新配置文件
Zookeeper同步,WebSocket同步,Http長輪詢同步
針對Dubbo每個接口會有一條元數據
大致了解下數據的接口以及配置文件這塊是怎么流轉的