soul原始碼閱讀(九)soul所有外掛程式介紹

2021-10-18 01:19:17 字數 2037 閱讀 3567

目錄

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外掛程式 總結 上篇已介紹...