马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
🚀 超轻高性能的 Rust HTTP 服务器 —— Hyperlane 💻🔥
Hyperlane 是一个专为 Rust 生态打造的轻量级、高性能 HTTP 服务器库,它能资助你快速构建高并发、及时通讯的网络服务。无论你是构建 API、WebSocket 服务,还是须要及时的服务器推送(SSE),Hyperlane 都能轻松应对,带给你超乎预期的速率与稳固性。🎯✨
📦 快速安装与上手
只须要在项目中运行下面一行下令,即可轻松引入 Hyperlane:
同时,完备的 GitHub 堆栈地点:GITHUB 地点
具体 API 文档:API 文档
别的,你还可以参考 hyperlane-quick-start 提供的快速上手项目,带你一步步认识 Hyperlane 的使用方式。🚀📝
📖 使用示例
下面给出了一段范例的使用示例代码,展示了怎样设置哀求和相应中央件、路由以及 WebSocket 处置处罚。代码完全接纳真实有效的示例,符合官方文档规范:
- use hyperlane::*;
- /// HTTP 请求中间件
- /// - `ctx`: 当前请求上下文
- async fn request_middleware(ctx: Context) {
- // 获取客户端 Socket 地址
- let socket_addr: String = ctx.get_socket_addr_or_default_string().await;
- ctx.set_response_header(SERVER, HYPERLANE)
- .await
- .set_response_header(CONNECTION, CONNECTION_KEEP_ALIVE)
- .await
- .set_response_header(CONTENT_TYPE, content_type_charset(TEXT_PLAIN, UTF8))
- .await
- .set_response_header(DATE, current_date_gmt())
- .await
- .set_response_header("SocketAddr", socket_addr)
- .await;
- }
- /// HTTP 响应中间件
- /// - `ctx`: 当前响应上下文
- async fn response_middleware(ctx: Context) {
- // 发送响应数据
- let _ = ctx.send().await;
- // 获取请求和响应的字符串信息
- let request: String = ctx.get_request_string().await;
- let response: String = ctx.get_response_string().await;
- // 将请求和响应日志
输出 - ctx.log_info(&request, log_handler)
- .await
- .log_info(&response, log_handler)
- .await;
- }
- /// 根路由处理函数
- /// - `ctx`: 当前路由上下文
- async fn root_route(ctx: Context) {
- ctx.set_response_status_code(200)
- .await
- .set_response_body("Hello hyperlane => /")
- .await;
- }
- /// WebSocket 路由处理函数
- /// - `ctx`: 当前请求上下文
- async fn websocket_route(ctx: Context) {
- let request_body: Vec<u8> = ctx.get_request_body().await;
- let _ = ctx.send_response_body(request_body).await;
- }
- #[tokio::main]
- async fn main() {
- // 初始化服务器
- let server: Server = Server::new();
- server.host("0.0.0.0").await;
- server.port(60000).await;
- server.enable_nodelay().await;
- server.log_dir("./logs").await;
- server.enable_inner_log().await;
- server.enable_inner_print().await;
- server.log_size(100_024_000).await;
- server.http_line_buffer_size(4096).await;
- server.websocket_buffer_size(4096).await;
- // 配置中间件
- server.request_middleware(request_middleware).await;
- server.response_middleware(response_middleware).await;
- // 设置路由
- server.route("/", root_route).await;
- server.route("/websocket", websocket_route).await;
- let test_string: String = "Hello hyperlane".to_owned();
- server
- .route(
- "/test/:text",
- async_func!(test_string, |ctx| {
- let param: RouteParams = ctx.get_route_params().await;
- print_success!(format!("{:?}", param));
- println_success!(test_string);
- panic!("Test panic\n\ndata: test");
- }),
- )
- .await;
- // 启动服务器
- server.listen().await.unwrap();
- }
复制代码 每行代码都经心筹划,展示了怎样在哀求处置处罚、相应处置处罚以及非常环境时输出日志 。📄👨💻
🔥 性能对比:闭环 vs 开启 Keep-Alive
Hyperlane 在性能测试中表现优秀,无论是关闭 Keep-Alive 还是开启 Keep-Alive 都远超很多其他主流框架。通过 wrk 和 ab 的压测结果,我们可以看到:
🚀 关闭 Keep-Alive 测试(wrk):
- Hyperlane: 51031.27 QPS
- Tokio: 49555.87 QPS
- Rocket: 49345.76 QPS
- Gin: 40149.75 QPS
- Go 标准库: 38364.06 QPS
- Rust 标准库: 30142.55 QPS
- Node 标准库: 28286.96 QPS
💡 在 ab 测试下,Hyperlane 以 51554.47 QPS 的结果依然稳固领先。每一项测试数据均真实反映了框架在高并发场景下的良好性能。💪📊
🚀 开启 Keep-Alive 测试(wrk):
- Hyperlane: 324323.71 QPS
- Tokio: 340130.92 QPS
- Rocket: 298945.31 QPS
- Rust 标准库: 291218.96 QPS
- Gin: 242570.16 QPS
- Go 标准库: 234178.93 QPS
- Node 标准库: 139412.13 QPS
在开启 Keep-Alive 的压测环境中,Hyperlane 同样显现了极高的性能稳固性,无论是 TCP 毗连的创建、哀求分发还是数据传输,都到达了业界领先程度。📈🌟
⏱ 相应时间测试
测试数据同样表现了 Hyperlane 的高效相应本领,对于 1w 次哀求的测试结果如下:
场景http-request 均匀耗时hyperlane 均匀耗时TCP 失败39us78ushyperlane100us150us阿帕奇300us2500us真实测试数据证实,在极限场景下,Hyperlane 能提供毫秒级以致微秒级的相应速率,极大提升了用户体验。⏱✨
📚 开放源代码与贡献
Hyperlane 项目基于 MIT 允许证 开源,接待各路开辟者到场贡献,共同打造一个更加精良的 HTTP 服务器库。若你有任何标题或发起,接待通过邮箱 ltpp-universe [email protected] 接洽作者。💡🤝
🎉 总结
Hyperlane 联合了 Rust 强盛的性能和当代网络服务的便捷性,是真正面向将来的轻量级、高并发、及时通讯办理方案。
- 高性能:在各种压测场景下均表现优秀
- 易用性:简便的 API 和成熟的文档支持
- 机动性:支持中央件、WebSocket 以及 SSE
无论你是构建大型分布式体系还是个人项目,Hyperlane 都将成为你不二的选择!赶快体验,让你的服务飞起来吧!🚀🔥😎
立即参加我们的开源社区,共同探索 Hyperlane 的无穷大概吧!🎉🎊
以上内容均源自项目真实数据和官方文档,包管真实可靠,接待实测体验!😊👍
保举几款学习编程的免费平台
免费在线开辟平台(https://docs.ltpp.vip/LTPP/)
探索编程天下的新天地,为门生和开辟者经心打造的编程平台,现已隆重开启!这个平台搜集了近4000道经心筹划的编程标题,覆盖了C、C++、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#等浩繁编程语言,为您的编程学习之旅提供了一个全面而丰富的实践环境。
在这里,您不但可以查察自己的代码记载,还能轻松地在云端生存和运行代码,让编程变得更加便捷。平台还提供了私聊和群聊功能,让您可以与偕行们无停滞交换,分享文件,共同进步。不但云云,您还可以通过阅读文章、到场问答板块和在线市肆,进一步拓展您的知识界限。
为了提升您的编程技能,平台还设有逐日一题、精选题单以及激动民气的编程比赛,这些都是备考编程测验的绝佳资源。更令人高兴的是,您还可以自界说体系UI,选择视频或图片作为配景,打造一个完全个性化的编码环境,让您的编程之旅既风趣又布满挑衅。
免费公益服务器(https://docs.ltpp.vip/LTPP-SHARE/linux.html)
作为开辟者或门生,您是否常常由于搭建和维护编程环境而感到头疼?如今,您不必再为此烦恼,由于一款全新的免费公共服务器已经为您办理了全部标题。这款服务器内置了多种编程语言的编程环境,而且配备了功能强盛的在线版VS Code,让您可以随时随地在线编写代码,无需举行任何复杂的设置。
随时随地,云端编码
无论您身在那里,只要有网络毗连,就可以通过欣赏器访问这款公共服务器,开始您的编程之旅。这种云端编码的便利性,让您的学习或开辟工作不再受限于特定的装备或环境。
丰富的编程语言支持
服务器支持包罗C、C++、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#等在内的多种主流编程语言,满意差别开辟者和门生的需求。无论您是初学者还是资深开辟者,都能找到得当自己的编程环境。
在线版VS Code,高效开辟
内置的在线版VS Code提供了与本地VS Code相似的编辑体验,包罗代码高亮、智能提示、代码调试等功能,让您纵然在云端也能享受到高效的开辟体验。
数据隐私和安全提示
固然服务器是免费的,但为了掩护您的数据隐私和安全,我们发起您不要上传任何敏感或紧张的数据。这款服务器更得当用于学习和实行,而非存储紧张信息。
免费公益MYSQL(https://docs.ltpp.vip/LTPP-SHARE/mysql.html)
作为一名开辟者或门生,数据库环境的搭建和维护通常是一个复杂且耗时的过程。但不消担心,如今有一款免费的MySQL服务器,专为办理您的烦恼而筹划,让数据库的使用变得简朴而高效。
性能精良,满意需求
固然它是免费的,但性能绝不打折。服务器提供了稳固且高效的数据库服务,可以大概满意大多数开辟和学习场景的需求。
在线phpMyAdmin,管理更便捷
内置的在线phpMyAdmin管理面板,提供了一个直观且功能强盛的用户界面,让您可以轻松地查察、编辑和管理数据库。
数据隐私提示,安全第一
正如您所知,这是一项公共资源,因此我们猛烈发起不要上传任何敏感或紧张的数据。请将此服务器仅用于学习和实行目的,以确保您的数据安全。
免费在线WEB代码编辑器(https://docs.ltpp.vip/LTPP-WEB-IDE/)
无论你是开辟者还是门生,编程环境的搭建和管理大概会占用你名贵的时间和精力。如今,有一款强盛的免费在线代码编辑器,支持多种编程语言,让您可以随时随地编写和运行代码,提升编程服从,专注于创意和开辟。
多语言支持,无缝切换
这款在线代码编辑器支持包罗C、C++、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#在内的多种编程语言,无论您的项目须要哪种语言,都能在这里找到支持。
在线运行,快速定位标题
您可以在编写代码的同时,即时运行并查察结果,快速定位并办理标题,进步开辟服从。
代码高亮与智能提示
编辑器提供代码高亮和智能提示功能,资助您更快地编写代码,淘汰错误,提升编码质量。
企业宣传
运动推广
个人信息分享
电子商务
商家使用二维码举行商品追踪、促销运动、在线付出等。
教诲
交通出行
二维码用于公共交通的票务体系,搭客扫描二维码即可收支站或付出车费。 功能强盛的二维码天生器通常具备用户界面友好,利用简朴,纵然是初学者也能快速上手和天生的二维码可以在各种装备和利用体系上扫描辨认的特点。
|