برنامه نویسی

برای علاقه مندان به سرعت: تکامل نهایی موتورهای زنگ زدگی 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بشر آن را امتحان کنید و امروز قدرت و سادگی هایپلاین را تجربه کنید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا