ایجاد سرویس های وب با کارایی بالا با هایپرلن

در دوران دیجیتال امروز ، ایجاد خدمات وب با کارایی بالا و قابل اعتماد هدف هر توسعه دهنده است. امروز ، ما صمیمانه توصیه می کنیم زیرزمینی، یک چارچوب سرور HTTP با کارایی بالا و با کارایی بالا که برای ساده سازی توسعه خدمات شبکه شما طراحی شده است.
بررسی اجمالی پروژه
Hyperlane کاملاً در زنگ زدگی خالص با استفاده از کتابخانه استاندارد ساخته شده است و سازگاری واقعی متقابل پلت فرم را در سراسر ویندوز ، لینوکس و MACOS ارائه می دهد-با یک تجربه API سازگار در تمام سیستم عامل ها. این کار از زمان اجرا ناهمزمان Tokio برای ارتباطات شبکه یکپارچه بدون نیاز به وابستگی های خاص پلتفرم استفاده می کند.
ویژگی های کلیدی:
- از درخواست HTTP تجزیه و تحلیل ، ایجاد پاسخ و ارتباطات TCP پشتیبانی می کند.
- شامل پشتیبانی میان افزار برای هر دو درخواست و پاسخ ، و همچنین رویدادهای WebSocket و Server-Sent (SSE) برای ارتباطات انعطاف پذیر و کارآمد در زمان واقعی است.
- یک طراحی API ساده و کاربر پسند ، توسعه دهندگان را قادر می سازد تا به سرعت شروع به کار و ساخت خدمات وب مدرن کنند.
شروع سریع
برای شروع استفاده از Hyperlane ، به سادگی آن را با دستور زیر به پروژه خود اضافه کنید:
cargo add hyperlane
ما همچنین یک پروژه شروع سریع ، Hyperlane-Quick-Start را ارائه می دهیم تا به شما کمک کند تا به سرعت اولین برنامه هایپرلاین خود را تنظیم و اجرا کنید.
کلون پروژه:
git clone https://github.com/eastspire/hyperlane-quick-start.git
به فهرست پروژه بروید:
cd hyperlane-quick-start
پروژه را اجرا کنید:
cargo run
همچنین می توانید سرویس را در پس زمینه اجرا کنید ، متوقف کنید یا مجدداً راه اندازی کنید:
# Run in the background
cargo run -d
# Stop the service
cargo run stop
# Restart the service
cargo run restart
# Restart in the background
cargo run restart -d
مثال استفاده
مثال زیر نحوه راه اندازی میان افزار ، مسیریابی و پشتیبانی WebSocket را در یک برنامه سادهپرستانه نشان می دهد:
use hyperlane::*;
async fn request_middleware(ctx: Context) {
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, TEXT_PLAIN)
.await
.set_response_header("SocketAddr", socket_addr)
.await;
}
async fn response_middleware(ctx: Context) {
let _ = ctx.send().await;
}
async fn root_route(ctx: Context) {
ctx.set_response_status_code(200)
.await
.set_response_body("Hello hyperlane => /")
.await;
}
async fn websocket_route(ctx: Context) {
let request_body: Vec<u8> = ctx.get_request_body().await;
let _ = ctx.send_response_body(request_body).await;
}
fn error_handle(error: String) {
eprintln!("{}", error);
let _ = std::io::Write::flush(&mut std::io::stderr());
}
#[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.disable_linger().await;
server.http_line_buffer_size(4096).await;
server.websocket_buffer_size(4096).await;
server.error_handle(error_handle).await;
server.request_middleware(request_middleware).await;
server.response_middleware(response_middleware).await;
server.route("https://dev.to/", root_route).await;
server.route("/websocket", websocket_route).await;
server
.route("/test/:text", move |ctx: Context| async move {
let param: RouteParams = ctx.get_route_params().await;
panic!("Test panic {:?}", param);
})
.await;
server.run().await.unwrap();
}
معیار عملکرد
ما معیارهای عملکردی را در هایپرلاین انجام دادیم تا عملکرد عالی آن را نشان دهیم. نتایج زیر با استفاده از wrk
وت ab
ابزارها
معیار WRK
دستور:
wrk -c360 -d60s http://127.0.0.1:60000/
نتایج:
درجه | چارچوب | SWC |
---|---|---|
1 | توکی | 340130.92 |
2 | زیرزمینی | 324323.71 |
3 | موشک | 298945.31 |
4 | stdlib stdlib | 291218.96 |
5 | جین (برو) | 242570.16 |
6 | برو stdlib | 234178.93 |
7 | node.js stdlib | 139412.13 |
معیار AB
دستور:
ab -n 1000000 -c 1000 -r -k http://127.0.0.1:60000/
نتایج:
درجه | چارچوب | SWC |
---|---|---|
1 | توکی | 308596.26 |
2 | زیرزمینی | 307568.90 |
3 | موشک | 267931.52 |
4 | stdlib stdlib | 260514.56 |
5 | برو stdlib | 226550.34 |
6 | جین (برو) | 224296.16 |
7 | node.js stdlib | 85357.18 |
مجوز و مشارکت
Hyperlane تحت مجوز MIT مجوز دارد. برای جزئیات بیشتر ، لطفاً به پرونده مجوز مراجعه کنید. مشارکتهای جامعه خوش آمدید! می توانید با ارسال مشکلات یا ایجاد درخواست های کشش شرکت کنید.
اگر سؤال دارید یا به کمک بیشتری نیاز دارید ، با نویسنده تماس بگیرید: root@ltpp.vip.
Hyperlane را انتخاب کنید – آینده عملکرد بالا و توسعه ساده را انتخاب کنید. سفر خود را از امروز شروع کنید و سرعت و راحتی هایپلاین را تجربه کنید!