.net core自定义高性能的Web API服务网关
網關對于服務起到一個統一控制處理的作用,也便于客戶端更好的調用;通過網關可以靈活地控制服務應用接口負載,故障遷移,安全控制,監控跟蹤和日志處理等。由于網關在性能和可靠性上都要求非常嚴格,所以針對業務需求來制定一個服務網關需要花費比較大的成本。以下介紹一下Bumblebee基礎Web API網關組件,通過它可以靈活擴展更適合業務需求的應用接口網關服務。
簡介
Bumblebee是基于BeetleX開發的HTTP網關服務組件,提供了高效的處理性能和基礎的網關代理功能;由于Bumblebee是一個基礎組件所以它并不像Nginx這些服務直接運行,使用者必須引用Bumblebee通過代碼的方式來制定符合自己需求的網關應用。雖然需要編寫代碼來制定網關,但組件提供簡單的方法和事件可以讓網關的制定變得非常簡單。接下來介紹一下如何通過Bumblebee來實現一個簡單的Web API負載網關。
構建控制臺程序
引用Bumblebee
可以通過Nuget的方式進行引用組件,搜索Beetlex選擇BeetleX.Bumblebee即可以,也可以通過Git下載項目代碼進行項目引用?https://github.com/IKende/Bumblebee
網關實現
以上代碼實現由http://192.168.2.25:9090和http://192.168.2.26:9090兩個服務器負載的網關服務,這樣一個網關服務就構建完成,運行程序可以看到相關日志情況:
程序運行后組件默認是監聽8080端口,這個時候可以通過瀏覽器訪問網關
你會看到請求返回的服務信息頭是Server: Bumblebee(BeetleX),通過輸出日志可以查看請求的情況
日志顯示請求被路由到不同的服務器上
HTTP配置
組件默認提供了一些HTTP服務配置信息,在默認的情況不作任何配置即可提供網關服務,如果想需要更換端口或啟用HTTPS服務可以通過HttpOptions方法進行設置,具體配置如下:
以上配置服務端口為80,并且開啟SSL來支持HTTPS訪問(開啟HTTPS需要指定證書和密碼)。
重權分配
以上示例是所有請求負載到這兩個服務中;由于兩者的權重都是0所以會進行平均負載。如果想192.168.2.26:9090的負載比重大些可以調整相關僅重值如:
以上配置是描述192.168.2.26:9090比192.168.2.25:9090多負載一倍的請求量;權重配置的最大值是10最小值是0,權重值為0的服務默認是不參與負載處理工作,當其他服務不可用的情況下0權重的服務才會生效。
Url配置
一般情況下使用*來匹配請求負載,但可以針對某些Url正則匹配的方式來制定負載策略,組件是優先匹配長正則,在沒有匹配的情況下才會使用*的負載策略.
以上配置/order.*請求的路由負載到192.168.2.27:9090和192.168.2.28:9090上,其他則路由到192.168.2.25:9090和192.168.2.26:9090上
基礎事件
組件提供了一些基礎事件用于記錄和控制一些請求處理
Requesting事件
網關接受請求的時候觸發這個事件,用戶可以通過這個事件取消轉發并返回自定義內容
Requested事件
網關接受請求并完成響應后觸發這個事件,通過這個事件可以記錄網關轉發完成的狀態情況。
ResponseError事件
網關接受請求,但處理錯誤觸發這個事件,通過這個事件可以自定義錯誤響應的內容
基礎性能指標
作為一個網關組件,必須有著可靠和高效的性能。以下針對Bumblebee組件的一個簡單測試,測試方式是開啟200個用戶進行1億次請求測試,在一臺E3-1230V2的服務器上測出的結果是7萬多RPS代理轉發處理,代理上下行帶寬達到7Gb
測試內容
試結果
Bumblebee項目地址
https://github.com/IKende/Bumblebee
原文地址:https://www.cnblogs.com/smark/p/10382650.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的.net core自定义高性能的Web API服务网关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决Azure DevOps部署到Azu
- 下一篇: 微软宣布 Visual Studio 2