當前位置: 妍妍網 > 碼農

C# 高效能 http 內網反代中介軟體:CYarp

2024-03-26碼農

前言

以前開發過HttpMouse的http內網反代中介軟體,但由於當時的知識點與設計水平受限,所以把它下馬了。

隨著自身又遇到http內網反代的需求,在frp不能滿足我需求情況下,我又啟動了一個叫CYarp的http內網反代計畫,這次它的設計完成度是相當高的。

開源倉庫地址: https://github.com/xljiulang/CYarp

Nuget包地址: https://www.nuget.org/packages?q=cyarp

CYarp.Server做為ASP.NET Core 8.0 平台一個http中介軟體,它設計目的是讓開發者能基於ASP.NET Core平台來開發一個高效能、傳輸安全、身份認證和授權驗證完備一個http內網反代伺服器。

CYarp.Server支持tcp或http/2.0作為http/1.1的傳輸層,使用http/2.0的多路復用能在單個tcp連線分開傳輸多路http請求響應。

特性

1、使用高效能的kestrel做伺服器

2、使用高效能的YARP做http轉發

3、設計為ASP.NET Core的中介軟體,整合簡單

4、開放的伺服端與客戶端互動協定

5、提供了.NET、C/C++客戶端庫

CYarp沒有從頭開發http伺服器,也沒有從頭開發http轉發器,而是使用了使用了ASP.NET Core平台的kestrel伺服器和YARP轉發器兩個高效能元件,同時根據http/1.1的upgrade機制和http/2.0的Extended CONNECT Method機制,制定了客戶端與伺服端的CYarp互動協定,只有十幾MB記憶體的Linux裝置,開發程師根據這個協定也很容易開發出其客戶端。

效能

CYarp和frp在一台Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz的CentOS Linux 7 (Core)系統機器上同時部署,壓測時ab在區域網路另一台機器上,壓測順序為表格上到下的參數順序。

1個使用者(10,000次)

產品 Requests per second Percentage of the requests
CYarp 446.48 P95=3 P99=3
frp_0.56.0 444.18 P95=3 P99=3

10使用者(50,000次)

產品 Requests per second Percentage of the requests
CYarp 6001.57 P95=2 P99=3
frp_0.56.0 5473.53 P95=3 P99=4

20使用者(100,000次)

產品 Requests per second Percentage of the requests
CYarp 8640.89 P95=3 P99=4
frp_0.56.0 5897.58 P95=5 P99=7

50使用者(200,000次)

產品 Requests per second Percentage of the requests
CYarp 11864.86 P95=6 P99=8
frp_0.56.0 5222.04 P95=17 P99=29

100使用者(500,000次)

產品 Requests per second Percentage of the requests
CYarp 12500.28 P95=11 P99=15
frp_0.56.0 5134.38 P95=35 P99=52

當並行使用者數20或以上時,frp的RPS不再提升(反而略有下降),但CYarp的RPS還是持續上升,且P95和P99表現優異。

安全

傳輸安全

當CYarp.Server方使用https時,以下部份為tls安全傳輸

1、長連線建立過程和長連線的後續Stream

2、HttpTunnel的建立過程和其後續Stream

如果目標服務httpServer的TargetUri也是https,則HttpTunnel裏面的流量表現為tls in tls。

業務安全

CYarp.Server不涉及到任何業務協定,它只是一個Asp.net core中介軟體,Client的身份認證依賴於asp.net core平台的身份認證中介軟體,而http轉發部份的邏輯是由開發者自行開發來決定是否要轉發,涉及的授權驗證邏輯由開發者自行驗證。

使用場景

CYarp是http反向代理,所以Server端只需要監聽一個埠,就能讓千千萬萬個Client端連線過來。

根據反代規則將移動端(使用者端)的http請求轉發到對應的Client端上,形成以http協定為套用協定的一種物聯網服務平台。

轉自:jiulang

連結:cnblogs.com/kewei/p/18095638

- EOF -

推薦閱讀 點選標題可跳轉

看完本文有收獲?請轉發分享給更多人

推薦關註「DotNet」,提升.Net技能

點贊和在看就是最大的支持❤️