Soul網關簡述


1. 簡述:

         soul網關是作者根據現有的kong、gateway等網關,再結合公司的定制化需求開發出的一款異步的、高性能的、跨語言的、響應式的api網關。soul網關結合kong的插件話思想和gateway的webflux響應式編程設計,其內置的插件支持不同語言之間的轉換,支持請求轉發合並,負載均衡,協議轉換,限流熔斷等諸多功能。而這些功能都是通過可插拔的插件話進行管理的,即在可視化界面進行動態的配置,改變插件的配置和開啟關閉。soul網關經過了高並發的生產測試,並擁有高度的可擴展性,是一款十分優秀的工具。

 

2. 流程介紹

soul網關的啟動以及配置流程在官網或這dorama組織的公眾號上都有詳盡的內容介紹。在此不作贅述。 

 

廢話不多說,先來一張soul網關的架構流程圖:

該圖介紹的是程序猿對於網關的配置操作,程序猿登錄網關ui管理界面,進行插件和規則的配置,配置好的插件和規則會保存到數據庫當中並會使用http、websocket、nacos、zookeeper等(可選)將規則數據同步到bootstrap(gateway)服務中,在bootstrap服務器中,使用concurrentMap存儲在服務器內存當中。以對后續的網關進行規則匹配。

 

該圖是客戶端進行網關訪問時的具體請求走向過程。(websocket同步方式)

客戶機請求經過nginx轉發到達網關之后,經過soul網關,sou網關在啟動時候,已經收到從soul-admin發送的配置包了。此時網關服務會將請求進行規則的匹配,部分插件會設置請求頭的 按照定義好的插件順序,進行每個插件的工作,最后將請求發送到具體的機器當中。

 

3. 項目結構

 soul-admin:  默認9095端口,soul的可視化配置管理后台

soul-bootstrap: 默認9195端口,soul的網關服務啟動器,作為插件的集成處

soul-client: 客戶端啟動之后,進行網關接口配置數據的拼裝

soul-common: 公共服務,工具類,公有配置等

soul-disruptor:  soul網關基於disruptor高性能異步隊列框架的業務封裝,微服務啟動注冊到soul網關時,使用隊列發布以及訂閱消息,進行微服務配置數據的更新。

soul-dist: docker鏡像

soul-examples:  soul網關的測試例子

soul-metrics: 普羅米修斯監控系統

soul-plugin: 插件塊代碼

soul-register-center:  soul-client拼裝好的數據,在此模塊進行推送至soul-admin

soul-spi:  soul對於spi的封裝

soul-spring-boot-starter: soul所有啟動器,包括客戶端推送數據,網關、插件啟動器,soul-bootstrap同步接收數據啟動器等

soul-sync-data-center:  同步數據主要邏輯代碼

soul-web:  soul網關對於請求的攔截代碼

 

4. 使用技術棧

Springboot:springboot項目

SPI:設置選取數據同步機制、匹配規則等

Disrutpor:服務注冊數據推送,異步隊列進行數據更新入庫

webflux:響應式編程

其他使用在插件當中:例如:websocket,nacos,dubbo,ratelimit,lua,redis,sofa,grpc,tars等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM