.net core中使用Bumblebee架設微服務網關
- 2019 年 10 月 6 日
- 筆記
Bumblebee是款基於.net core開發開源的http服務網關,經過最近版本的完善在功能足以滿足作為微服務網關的需要。在微服務網關功能中它提供了應用服務負載,故障遷移,安全控制,監控跟蹤和日誌處理等;不僅如此它強大的插件擴展功能,可以針對實業務情況進行不同的相關插件應用開發滿足實際情況的需要。
項目地址:https://github.com/IKende/Bumblebee
主要功能
- 服務管理,可以針對業務需要可以添加管理相應的服務應用
- 動態路由管理,可以針對不同請求路徑制定不同的負載方案;負載的方案調整都具備熱更能力,並不需要重啟即可完成相關調整。
- 負載策略多樣性,可以針對不同的路徑和服務制定不同的負載方式,包括有:動太一致性,權重負載和請求限制等.
- 自動的負載故障和恢復遷移,組件對服務的可用性會進行一個可靠的管理,根據服務的可用性進行動態負載策略調整.
- 完善的插件擴展機制,可以制定如管理,監控,日誌和安全訪問等等功能。
- 支持
https
可以制定更安全的通訊服務應用 - 支持
windows
,linux
等多平台
部署使用
新建一個控制台程序後引用組件
BeetleX.Bumblebee
然後編寫以下代碼
private static Gateway g; static void Main(string[] args) { g = new Gateway(); g.HttpOptions(h => { h.Port = 80; }); g.SetServer("http://192.168.2.25:9090").AddUrl("*", 0, 0); g.SetServer("http://192.168.2.26:9090").AddUrl("*", 0, 0); g.Open(); Console.Read(); }
以上代碼是在本機80
端口部署一個網關服務,並把請求負載到http://192.168.2.25:9090
和http://192.168.2.26:9090
這樣使用比較麻煩,如果你想自己制定一些特別的需求才需要這樣做。
引用管理插件
組件很多功能可以通過插件擴展的方式引入,以下是引入一個管理插件,通過這個插件對網關進行一個可視化操作。
BeetleX.Bumblebee.Configuration
這是一個可視化網關管理的插件,只要引用上即可通過插件提供的管理界面來進行網關配置
class Program { static Gateway gateway; static void Main(string[] args) { gateway = new Gateway(); gateway.HttpOptions(o => { o.Port = 80; o.LogToConsole = true; o.LogLevel = BeetleX.EventArgs.LogType.Error; }); gateway.Open(); gateway.LoadPlugin(typeof(Bumblebee.Configuration.Management).Assembly); Console.Read(); } }
或直接下載編譯好的版本https://github.com/IKende/Bumblebee/blob/master/bin/Bumblebee1.0.2.zip執行dotnet GatewayServer.dll
運行後即可通過以下地址訪問管理界面http://localhost/__system/bumblebee/
默認登陸用戶名和密碼是admin
和123456
,建議登陸後在配置頁面上修改登陸密碼。登陸後就進入網關的基礎監控頁面
當服務和路由配置好後,就可能通過這個頁面查看網關的運行情況;主要包括網關的基礎資源信息,服務應用狀況和不同Url
的請求情況。由於這個插件還在完善中所以提供的功能並不夠,只是一般的配置和監控。
服務配置簡介
服務配置比較簡單,只需要把服務地址添加進來即可;Max
是指網關連接到服務的最大連接數,可以根據應用的並發情況進行配置最大連接數;在並發中即使最大連接數被佔用完也不會引起服務異常,組件還針對每個服務分配一個隊列,只有當連接數被分配完後並且隊列也滿的情況才會拒絕請求。
路由配置簡介
可以根據不同的Url
制定不同的負載策略,策略調整保存後會馬上生效並不需要重啟服務程序。
插件管理
插件是組件的核心,相關功能都可以通過插件二次擴展完成,包括現有的這個管理界面也是通過插件的方式加載進來(基礎組件並不具備可視化管理功能 )。
主要用於管理網關的插件,用於啟用,停用或配置插件相關信息
日誌查看
這個主要是查看網關處理的日誌,請求轉發日誌由於量比較大這個管理插件暫沒有實現接管,使用者可以寫插件來記錄相關API轉發的詳細日誌。
性能測試對比(Bumblebee vs Ocelot)
測試服務配置 E3 1230v2 16G windows 2008 Network:10Gb
測試工具 ab和bombardier
測試代碼 https://github.com/IKende/Bumblebee/tree/master/BumblebeeVSOcelot
測試內容 分別啟用500,1000和2000個連接進行請求並發測試
ab測試結果
bombardier測試結果