C# 高性能 http 内网反代中间件:CYarp

202 阅读4分钟

前言

以前开发过HttpMouse的http内网反代中间件,但由于当时的知识点与设计水平受限,所以把它下马了。随着自身又遇到http内网反代的需求,在frp不能满足我需求情况下,我又启动了一个叫CYarp的http内网反代项目,这次它的设计完成度是相当高的。

开源仓库地址: github.com/xljiulang/C…

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

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 secondPercentage of the requests
CYarp446.48P95=3 P99=3
frp_0.56.0444.18P95=3 P99=3

10用户(50,000次)

产品Requests per secondPercentage of the requests
CYarp6001.57P95=2 P99=3
frp_0.56.05473.53P95=3 P99=4

20用户(100,000次)

产品Requests per secondPercentage of the requests
CYarp8640.89P95=3 P99=4
frp_0.56.05897.58P95=5 P99=7

50用户(200,000次)

产品Requests per secondPercentage of the requests
CYarp11864.86P95=6 P99=8
frp_0.56.05222.04P95=17 P99=29

100用户(500,000次)

产品Requests per secondPercentage of the requests
CYarp12500.28P95=11 P99=15
frp_0.56.05134.38P95=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协议为应用协议的一种物联网服务平台。

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

优秀是一种习惯,欢迎大家留言学习!

转自:jiulang 链接:cnblogs.com/kewei/p/18095638