目錄
soul所有外掛程式列表
介紹每個外掛程式
context_path外掛程式
divide外掛程式
dubbo外掛程式
springcloud外掛程式
sofa外掛程式
ratelimiter外掛程式
什麼是context_path,就是使用者每次用乙個url訪問soul閘道器的時候,會根據context_path來進行匹配,然後擷取真正後端的url來進行請求。如前面文章中我們的springcloud示例,設定的context-path: /springcloud,那麼請求/springcloud/order/findbyid的時候,其實真正訪問到後端服務的url是/order/findbyid,解析後跟我們直接請求後端服務的url完全一樣。
soul閘道器在對目標服務呼叫的時候,容許使用者使用context_path
外掛程式來重寫請求路徑的contextpath,使用如下:
divide外掛程式是進行http正向**的外掛程式,所有http型別的請求,都是由該外掛程式進行負載均衡的呼叫。如spring-boot http示例請求,spring mvc請求,都是通過該外掛程式**後交給webclient外掛程式請求**到後端服務。使用如下:
dubbo外掛程式是將http協議
轉換成dubbo協議
的外掛程式,也是閘道器實現dubbo泛化呼叫的關鍵。
該外掛程式是用來將http協議
轉成springcloud協議
的核心。
使用參考:soul原始碼閱讀(五)spring cloud應用示例執行,soul原始碼閱讀(六)spring cloud應用示例執行續,soul原始碼閱讀(七)spring cloud應用示例執行續2
sofa外掛程式是將http協議
轉換成sofa協議
的外掛程式,也是閘道器實現sofa泛化呼叫的關鍵。
限流外掛程式,是閘道器對流量管控限制核心的實現,不僅可以控制到介面級別,也可以控制到引數級別。該拆件採用redis令牌桶演算法進行限流。
使用介紹:
(1)安裝redis,目前支援redis的單機,哨兵,以及集群模式,如果是哨兵,集群等多節點的,在url中的配置,請對每個實列使用;
分割. 如 192.168.1.1:6379;192.168.1.2:6379,redis安裝鏈結參考:
(2)在soul-admin
--> 外掛程式管理-->rate_limiter
將其設定為開啟,頁面引數配置如下:
配置選擇器以及規則,頁面引數如下:
令牌桶實現簡單,可靠性高,只需要按照恆定的速率往令牌桶裡面新增令牌,請求過來之後去令牌桶裡面獲取令牌,如果令牌為空則拒絕訪問。
capacity:令牌桶可以儲存的最大令牌數,這裡配置為2,意味著在沒人請求情況下,令牌數最大可以為2,如果請求數過大,導致桶中無令牌,那麼請求就會被拒絕。
rate:令牌桶的填充速率,這裡配置為1,意味著每秒只放入乙個令牌到桶中。
(3)在閘道器的 pom.xml 檔案中新增soul-spring-boot-starter-plugin-ratelimiter的支援,啟動閘道器。
(4)http發請求看結果,請求工具瀏覽器直接請求,postman,restclient工具均可。
不被限制情況下,正常訪問,如下結果:
被限制情況下,則提示已經被限流,如下結果:
Soul原始碼閱讀 1 初識 Soul
無論我們學習什麼東西之前,都要先搞清楚我們要學習的是什麼,就像一些哲學思考先要給出清晰的定義,否則後面的一切都無從談起。從今天開始,我來和大家一起,學習一款非常優秀的開源閘道器專案 soul。soul 是什麼呢?先來看下官網作者的定義 這是乙個非同步的,高效能的,跨語言的,響應式的api閘道器。我希...
Soul原始碼閱讀 2 單機部署 Soul
在學習一項新技術時,我們先按照官網上的 demo 把環境搭建起來。今天先搭建乙個單機版測試環境。這裡有2個選擇 如果學習原始碼後,希望參與到 soul 開源專案中,fork 到自己賬號下,再 clone 自己賬號下的 soul 專案。這裡,我建議大家採用第2種方式,也以第2種方式演示。git clo...
soul原始碼閱讀(十)soul所有外掛程式介紹續
目錄 hystrix外掛程式 sentinel外掛程式 resilience4j外掛程式 monitor外掛程式 waf外掛程式 sign外掛程式 rewrite外掛程式 global外掛程式 webclient外掛程式 webclientresponse外掛程式 tars外掛程式 總結 上篇已介紹...