Bumblebee之負載 限流和故障處理實踐

2022-01-13 12:02:37 字數 3439 閱讀 7732

bumblebee作為標準http 1.1應用協議的閘道器,它能作為任何基於http 1.1構建webapi服務的前置閘道器。以下通過示例講述如何用bumblebee來製作乙個asp.net core webapi的前置閘道器,並演示閘道器的一些基礎功能如:負載,限流和故障遷移等相關基礎功能。

bumblebee定義閘道器非常簡便,只需要nuget引用beetlex.bumblebee.然後定義gateway類執行即可,大概**如下:

//添中管理的服務,閘道器會對應用服務的可用狀況進行監控

mgateway.setserver("

");mgateway.setserver(

"");

mgateway.setserver(

"");

//default的是'*',匹配優先順序最低

mgateway.routes.default

.addserver(

"", 0, 0

) .addserver(

"", 0, 0

) .addserver(

"", 0, 0

);

//以上是手動**的方式來構建閘道器,實際上可以通過配置'gateway.json'來描述即可,具本檢視https:

mgateway.open();

以上通過**定義乙個閘道器,閘道器主要有三颱服務,並進行乙個平均負載略。如果不想硬**的情況可以通過編寫'gateway.json'配置檔案來達到同樣的效果:

,

,], "

urls

": [,,

]}]}

以上是元件預設的配置檔案,通過**擴充套件的好處是可以根據自己的需要來制定儲存方式。

接下需要編寫三個asp.net core web api專案,分別部署配置到以上三個配置的位址中;為了方便測試服務,對應的方法是返回相應的服務位址ip埠

編寫服務執行後會收到閘道器的狀態請求資訊,這個資訊主要是閘道器用於檢測服務的有效性,請求頻率大概在1秒左右。

為了方便測試示例閘道器整合了乙個測試頁面,通過頁面請求閘道器可以看到響應情況;由於配置是三颱服務平均負載請求,所以測試請求的情況會看到具體請求會被平均化到不同服務上。

元件在新增服務的時候可以設定對應的重權值,以下把8001的權重設定10,其它兩個設定成5看一下情況

元件支援零權重設定,當設定為零的情況下一般情況下是不參與負載的,為什麼說一般情況下呢?其實即使是零的情況當其他服務不可用情況是會把負載落地它身上,以下簡單的演示一下,把8003配置成零權重執行一段時間後把8001和8002關閉,後再執行8001看一下執行結果

//

default的是'*',匹配優先順序最低

為了保障服務執行的穩定性,對請求限制是一種比較普遍的做法,元件支援針對不同url不同服務進行乙個rps限制,用於確保服務可以可靠地執行。以下把三個服務的rps都即製在100內

以上用工具壓測了3秒,正常處理的請求是1000多個,其他幾十萬的請求都被閘道器攔載了。所以對於大量併發湧入的時候,rps的限制就能體現其作用。

這個功能暫由元件內部管理,元件會每秒探測服務的可訪問情況;當有服務狀態不可或恢復後元件都會重新構建負載策略確保服務的可用性。不過當服務不可用的情況存在短暫時間裡訪問到這服務的請求會返回5xx訪問錯誤資訊。

到這裡bumblebee使用和相關基礎功能就介紹完了,但bumblebee所提供的功能並不遠止這些,它提供不同的事件介面用於擴充套件服務處理可以制很完善的業務處理功能,後面會一步步深入講解。

示例**:https:/tree/master/samples/aspcorewebapi

負載策略 Bumblebee微服務閘道器之負載策略

作為乙個微服務閘道器,提供不同負載策略配置是一項非常重要的主要功能 在這方向bumblebee提供了非常好的支援。bumblebee可以針對不同路徑制定各自的負載策略,更重要的是這些調整都可以在閘道器執行過程動態調整!動態策略調整可以更好的應對不同的特發狀況,並可以更好的調配負載資源來應對當前的特發...

限流和限流演算法

目錄 一 什麼是限流 二 為什麼需要限流 三 那些場景需要用到限流 3.1 對外服務 3.2 對內服務 四 限流演算法 4.1 計數器演算法 4.2 漏桶演算法 4.3 令牌桶演算法 限流其實是指當系統資源不夠,不足以應對大量請求,即系統資源與訪問量出現矛盾的時候,我們為了保證有限的資源能夠正常服務...

nginx的限流和閘道器gatway限流

1.場景描述 例如 首頁採取二級快取操作,減少對資料庫和redis的壓力,但是遇到惡意請求還是不能有效的緩解壓力,限流就能起到保護措施的作用了 nginx提供了兩種限流方案 3.控制速率 nginx常用控制速率的方式之一就是採用漏桶演算法 3.1漏桶演算法實現控制速率限流 概述 漏桶演算法思想就是水...