在当今高并发、低延时的 Web 服务开发中,高性能、轻量级的 HTTP 服务器成为关键竞争力。Hyperlane 框架 基于 Rust 开发,充分利用 Rust 的内存安全和高效运行时,提供了灵活、易扩展且性能卓越的 HTTP 服务器解决方案。无论是构建 API 网关、实时通信服务还是 WebSocket 应用,Hyperlane 都能轻松满足您的需求。
框架优势
- 极致性能:在各项压测中,无论是 TCP 连接失败、keep-alive 模式下还是关闭 keep-alive 状态下,Hyperlane 框架都表现出优异的响应速度与高 QPS,足以支撑千万级请求的场景。
- 简洁易用:框架设计理念聚焦于简化开发流程,从请求解析、响应构建到中间件扩展,均采用面向对象和函数式编程风格,代码简洁且易于维护。
- 丰富功能:不仅支持 HTTP 请求解析与响应构建,还内置了 WebSocket 与 SSE 的支持,为实时通信提供全方位解决方案。
- 开源共建:项目在 GitHub 上开源,拥有详尽的 API 文档和示例代码,鼓励开发者参与贡献,共同打造更优秀的 HTTP 服务生态。
高质量代码示例
下面是一个使用 Hyperlane 框架构建简单 HTTP 服务器的示例代码,代码中展示了中间件处理、路由设置以及错误调试等常见功能。请注意,代码内容保持原样,禁止随意修改。
rust">use hyperlane::*;// request_middleware: 请求中间件,用于在请求处理前设置响应头
async fn request_middleware(controller_data: ControllerData) {// 获取客户端的 socket 地址(或默认字符串)let socket_addr: String = controller_data.get_socket_addr_or_default_string().await;controller_data// 设置响应头 SERVER,值为 HYPERLANE.set_response_header(SERVER, HYPERLANE).await// 设置响应头 CONNECTION,值为 CONNECTION_KEEP_ALIVE.set_response_header(CONNECTION, CONNECTION_KEEP_ALIVE).await// 设置响应头 CONTENT_TYPE,值为 text/plain 编码 UTF8.set_response_header(CONTENT_TYPE, content_type_charset(TEXT_PLAIN, UTF8)).await// 设置响应头 DATE,值为当前 GMT 日期.set_response_header(DATE, current_date_gmt()).await// 设置自定义响应头 "SocketAddr",值为获取到的 socket 地址.set_response_header("SocketAddr", socket_addr).await;
}// response_middleware: 响应中间件,用于在响应发送后记录日志
async fn response_middleware(controller_data: ControllerData) {// 发送响应let _ = controller_data.send().await;// 获取请求和响应的字符串信息let request: String = controller_data.get_request_string().await;let response: String = controller_data.get_response_string().await;controller_data// 记录请求日志.log_info(&request, log_handler).await// 记录响应日志.log_info(&response, log_handler).await;
}// root_route: 根路由,返回简单的欢迎信息
async fn root_route(controller_data: ControllerData) {controller_data// 设置 HTTP 状态码为 200.set_response_status_code(200).await// 设置响应体为 "Hello hyperlane => /".set_response_body("Hello hyperlane => /").await;
}// websocket_route: WebSocket 路由,将请求体原样返回
async fn websocket_route(controller_data: ControllerData) {// 获取请求体字节数组let request_body: Vec<u8> = controller_data.get_request_body().await;// 将请求体作为响应体发送回去let _ = controller_data.send_response_body(request_body).await;
}#[tokio::main]
async fn main() {// 创建一个新的 Server 实例let server: Server = Server::new();// 设置服务器监听地址server.host("0.0.0.0").await;// 设置服务器端口为 60000server.port(60000).await;// 设置日志存放目录server.log_dir("./logs").await;// 启用内部日志记录功能server.enable_inner_log().await;// 启用内部打印功能server.enable_inner_print().await;// 设置日志文件大小上限server.log_size(100_024_000).await;// 设置 HTTP 行缓冲区大小server.http_line_buffer_size(4096).await;// 设置 WebSocket 缓冲区大小server.websocket_buffer_size(4096).await;// 注册请求中间件server.request_middleware(request_middleware).await;// 注册响应中间件server.response_middleware(response_middleware).await;// 注册根路由server.route("/", root_route).await;// 注册 WebSocket 路由server.route("/websocket", websocket_route).await;// 定义一个测试字符串用于 panic 场景let test_string: String = "Hello hyperlane".to_owned();server.route("/test/panic",async_func!(test_string, |controller_data| {// 打印测试字符串(成功提示)println_success!(test_string);// 打印请求内容println_success!(controller_data.get_request().await.get_string());// 故意触发 panic 用于测试错误捕获panic!("Test panic\ndata: test");}),).await;// 启动服务器监听server.listen().await;
}
逐行代码解释
-
use hyperlane:😗;
引入 Hyperlane 框架所有公共接口,方便后续使用。
-
request_middleware 函数
该异步函数在每次请求到达时调用,用于在响应返回前设置多个 HTTP 头信息,如服务器名称、连接方式、内容类型、日期和客户端地址。
controller_data.get_socket_addr_or_default_string().await
:异步获取客户端的 socket 地址或默认字符串。- 连续调用
set_response_header
方法依次设置各个响应头,并在每次调用后等待操作完成。
-
response_middleware 函数
在响应发送后,该中间件负责将请求与响应信息记录到日志中。
- 首先调用
send()
方法发送响应,然后分别获取请求和响应字符串,通过log_info
方法记录日志信息。
- 首先调用
-
root_route 函数
定义根路由(“/”)的处理逻辑,设置 HTTP 状态码为 200 并返回固定字符串作为响应体。
-
websocket_route 函数
用于处理 WebSocket 请求,将收到的请求体字节数组原样返回给客户端,展示 WebSocket 通信的基本处理流程。
-
main 函数
主函数中创建服务器实例并进行一系列配置:
- 设置监听地址、端口以及日志目录;
- 启用内部日志与打印,配置缓冲区大小;
- 注册请求和响应中间件、设置多个路由(包括根路由、WebSocket 路由以及一个用于测试 panic 的路由);
- 最后调用
listen()
启动服务器进入监听状态。
性能与环境优势
在多种压测场景下,Hyperlane 框架均展现出极高的 QPS 与低延迟,远超传统的 Rust 标准库和其他流行框架。尤其在启用 keep-alive 的场景中,其 QPS 达到 30w+,在高并发请求下依旧稳定可靠。同时,框架运行于 Ubuntu20.04 LTS 系统,配合高端硬件(如 i9-14900KF CPU、192GB 内存和高性能固态硬盘),展现了优异的吞吐量和系统调优能力。
开始使用
安装 Hyperlane 非常简单,只需使用 Cargo 添加依赖即可:
cargo add hyperlane
更多使用示例和快速上手指南,请参见以下资源:
- GitHub 仓库
- API 文档
- 快速开始示例
Hyperlane 框架将为您提供一个稳定、高效、易扩展的 HTTP 服务平台,是构建高性能 Web 服务的理想选择。赶快加入开源社区,共同探索更广阔的开发未来!
如有任何疑问或建议,欢迎通过邮件联系作者:ltpp-universe root@ltpp.vip 或在 GitHub 上提交 issue。