برای علاقه مندان به سرعت: تکامل نهایی موتورهای زنگ زدگی HTTP – جامعه Dev

در پیگیری عملکرد نهایی در توسعه با پس زمینه زنگ زدگی ، زیرزمینی با طراحی سبک وزن خود ، اجرای زنگ زدگی خالص و توان بالایی از آن استفاده می کند. هایپرلاین یک است وابستگی صفربا زنگ زدگی کتابخانه خدمات HTTP ساخته شده در توکی زمان اجرا ناهمزمان ، ارائه یک تجربه یکپارچه API متقاطع یکپارچه. این نه تنها از درخواست ها و پاسخ های استاندارد HTTP پشتیبانی می کند بلکه شامل پشتیبانی داخلی نیز می شود صفحهبا رویدادهای سرور (SSE)، و یک انعطاف پذیر سیستم ظروف وسط -ساختن آن برای ساختن API های وب مدرن و با کنفرانس بالا و برنامه های کاربردی در زمان واقعی.
ویژگی های اصلی هایپرلا
- اعتماد به نفس خالص و وابستگی صفر: کاملاً در زنگ زدگی با استفاده از فقط با استفاده از کتابخانه استاندارد و زمان اجرا Tokio ساخته شده است. Hyperlane نیازی به اتصال سیستم اضافی ندارد و از رفتار مداوم در ویندوز ، لینوکس و MACOS اطمینان حاصل می کند.
- سازگاری متقابل و API متحد: یک بار بنویسید ، در هر کجا مستقر شوید-بدون تنظیمات خاص سیستم عامل لازم نیست.
- طراحی با کارایی بالا: با یک معماری مینیمالیستی و ساختار داده های کارآمد با حافظه ، Hyperlane پردازش سربار را کاهش می دهد. نتایج معیار عملکرد نزدیک به اجرای توکیو فلزی لخت را نشان می دهد.
- مولتیپلکس ناهمزمان (توکیو): برای استفاده کامل از CPU های چند هسته ای ، کارآمد با همزمانی بالا ، از زمان اجرا Async Tokio استفاده می کند.
- واسطه انعطاف پذیر: از هر دو درخواست و پاسخ واسطه پاسخ پشتیبانی می کند و به توسعه دهندگان این امکان را می دهد تا در مراحل مختلف منطق را وصل کنند (به عنوان مثال ، ورود به سیستم ، احراز هویت ، هدرهای سفارشی).
- پشتیبانی چند پروتکل: علاوه بر HTTP ، Hyperlane بطور بومی پشتیبانی می کند صفحه وت سس، ساده سازی توسعه سیستم های ارتباطی مبتنی بر فشار یا در زمان واقعی.
با تشکر از این ویژگی ها ، Hyperlane در مواردی از قبیل خدمات API ، میکروسرویس ، IoT و Backends بازی می درخشد – در حالی که یک تجربه توسعه دهنده تمیز و کارآمد را حفظ می کند ، کار همزمان عالی را ارائه می دهد.
شروع کار: فوق العاده ساده
Hyperlane برای یک تجربه روی تخته صاف طراحی شده است. می توانید آن را با یک دستور واحد به پروژه خود اضافه کنید:
cargo add hyperlane # Install Hyperlane
همانطور که مستندات رسمی بیان می کند:
“اضافه کردن هایپریلن به پروژه زنگ زدگی شما یک نسیم است. به سادگی اجرا کنید: cargo add hyperlane
.
پس از افزودن وابستگی ، شما آماده شروع ساختمان هستید. Hyperlane نمونه ها و مستندات جامع را ارائه می دهد (در زیر مرتبط است) ، به شما این امکان را می دهد تا به سرعت اولین سرور HTTP خود را بچرخانید.
در اینجا یک نمونه معمولی معمولی وجود دارد ، که نشان دهنده پیکربندی سرور ، وسط نرم افزار ، مسیریابی و استفاده از وب سایت است:
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();
}
در این مثال:
-
ظروف میانبر:
request_middleware
هدرهای سفارشی مانندServer
باDate
، و آدرس سوکت مشتری.response_middleware
هر دو درخواست و پاسخ را پس از ارسال ثبت کنید. -
مسیریابی: یک مسیر ریشه را تعریف می کند
/
این یک تبریک را برمی گرداند ، و/websocket
مسیری که ورودی مشتری را تکرار می کند. -
مسیریابی پویا: نشان می دهد
/test/:text
با پارامتر مسیر تجزیه از طریقctx.get_route_params().await
بشر - پیکربندی سرور: پیکربندی میزبان ، پورت ، ورود به سیستم ، اندازه بافر و موارد دیگر ، نمایش API تمیز و بیانی Hyperlane را نشان می دهد.
این نمونه به وضوح API بصری Hyperlane و ویژگی های قدرتمند را نشان می دهد. توسعه دهندگان می توانند بدون برخورد با جزئیات سطح پایین ، به راحتی کارهای مشترک را بدست آورند.
مقایسه معیار عملکرد
Hyperlane به دلیل عملکرد ستاره ای شناخته شده است. در معیارهای رسمی ، این کار فقط در اجرای Raw Tokio انجام می شود ، که به طور قابل توجهی از بسیاری از چارچوب های محبوب بیشتر عمل می کند. به عنوان مثال ، زیر 60 ثانیه wrk
تست بار با 360 اتصالات همزمان ، نتایج QPS (درخواست در ثانیه) عبارتند از:
-
تست WRK:
- Tokio: 340،130.92
- Hyperlane: 324،323.71
- موشک: 298،945.31
- Rust Std: 291،218.96
- جین: 242،570.16
- GO STD: 234،178.93
- node.js: 139،412.13
-
از آزمون:
- Tokio: 308،596.26
- Hyperlane: 307،568.90
- موشک: 267،931.52
- Rust Std: 260،514.56
- GO STD: 226،550.34
- جین: 224،296.16
- node.js: 85،357.18
این نتایج نشان دهنده عملکرد استثنایی Hyperlane تحت همزمانی سنگین ، بهتر از موشک ، جین و Node.js. با توان در صدها هزار درخواست در ثانیه ، به راحتی نیازهای عملکرد اکثر خدمات را برآورده می کند – همه در حالی که از ایمنی حافظه Rust و ایمنی نوع بهره مند می شوند.
خلاصه و منابع
هایپلاین ترکیب می شود زنگ زدگیبا همزمانی سطح توکیوبا پشتیبانی چند پروتکلبا API های سازگار با توسعه دهندهوت عملکرد سطح بالا -ساختن آن به عنوان یک انتخاب برتر برای ایجاد خدمات وب با کارایی بالا. برای مواردی که خواستار سرعت و قابلیت اطمینان شدید هستند ، Hyperlane جایگزین سریع تری برای موشک ، ACTIX و سایر چارچوب ها ارائه می دهد. آن را امتحان کنید و فراموش نکنید که ستاره را بازی کنید!
تمام داده ها و بینش ها از مستندات رسمی و معیارهای عملکرد تهیه می شوند. Hyperlane در Crates.io موجود است و از طریق می توان اضافه کرد cargo add hyperlane
بشر آن را امتحان کنید و امروز قدرت و سادگی هایپلاین را تجربه کنید!