HTTP/3 با کمی کار و کمک Cloudflare سریعتر است
چگونه غول تحویل Uber-bound پشته شبکه تلفن همراه خود را برای کاهش تأخیر تنظیم کرد
هنگامی که از تلفن خود غذا سفارش می دهید، حتی زمانی که برای پیمایش برنامه صرف می شود، زمان تلف می شود. در کنفرانس مجازی P99 2026، الویس چیدرا، مهندس کارکنان سرویس تحویل جهانی Delivery Hero مستقر در آلمان، توضیح داد که چگونه این شرکت بیشتر پایگاه کاربران خود را به HTTP/3 منتقل کرد و در نتیجه کل زمان پاسخگویی سرتاسر صفحه اصلی برنامههایش را 17 درصد کاهش داد.
Chidera که پروژه را مدیریت کرد، توضیح داد که همانطور که در قلع وعده داده شده بود، HTTP/3 وب را سریعتر از HTTP/2 ارائه می دهد، اگرچه بیت های کندی دارد که باید تنظیم شوند تا به درستی کار کنند.
اوبر Delivery Hero را می خورد
Delivery Hero در ایالات متحده که تحت سلطه Uber Eats و DoorDash است کاملا ناشناخته است. اما این یک شرکت با دسترسی جهانی در خارج از ایالات متحده است، با پایگاه کاربر تخمینی 60 میلیون در سراسر اروپا، آمریکای لاتین، آفریقا، خاورمیانه و آسیا. اوبر در حال حاضر Delivery Hero را به مبلغ 14.8 میلیارد دلار خریداری کرده و قصد دارد این شرکت را با Uber Eats متحد کند.
با این خرید، اوبر تعداد بازارهایی را که هم خدمات حمل و نقل و هم خدمات تحویل را ارائه میدهد، افزایش میدهد، البته نه لزوما تحت عنوان Uber Eats. Delivery Hero به طور متمرکز برنامه های جداگانه ای را برای مناطق مختلف مدیریت می کند که همه آنها را ساخته یا به دست آورده است. آسیاییها میتوانند کاسههای پوک و چیزهای مختلف را از طریق Foodpanda سفارش دهند. ترک ها می توانند کباب را از طریق Yemeksepeti سفارش دهند. در سراسر اسپانیا، ایتالیا، لهستان، رومانی، اوکراین و بسیاری از آفریقا، برنامه Glovo جایی است که میتوانید تحویل اواخر شب را دریافت کنید.
و در آمریکای لاتین، کاربران به PedidosYa مراجعه میکنند تا آنچه را که نیاز دارند از داروخانهها، رستورانها و مرکادوهای اطراف دریافت کنند.
همه این مناطق دارای اتصال شبکه به طور گسترده ای متفاوت هستند، مشکلی که Delivery Hero می خواست آن را به حداقل برساند.
شبکهسازی آخرین مایل اغلب گلوگاه بود. برای مثال، برنامهها در پاکستان تقریبا یک ثانیه (در p90) طول میکشند تا یک دست دادن امن با سرور برقرار کنند. تیم مهندسی به HTTP/3 به عنوان راهی برای کاهش و حتی حذف این تأخیر نگاه کردند.
یک HTTP QUIC-er
گروه وظیفه مهندسی اینترنت (IETF) به طور رسمی سومین نسخه از پروتکل انتقال ابرمتن اینترنت را در سال 2022 معرفی کرد. HTTP پروتکل لایه کاربردی است که مرورگرها و سایر منابع متصل به سرورها را از طریق اینترنت متصل می کند.
نسخه های قبلی HTTP بر اساس پروتکل کنترل انتقال (TCP) ساخته شده بودند که تحویل تضمینی و کنترل جریان را ارائه می کرد. در ارتباط با پروتکل اینترنت (IP)، TCP/IP اینترنت مدرن را ساخت.
HTTP/3 جایگزین TCP با Quick UDP Internet Connection (QUIC) شد که توسط گوگل توسعه یافته بود تا برخی از کندی های TCP را به عنوان یک پروتکل انتقال برطرف کند.
UDP مخفف User Datagram Protocol است و برخلاف TCP، تحویل بسته یا کنترل جریان را تضمین نمی کند. UDP سریعتر است زیرا منتظر امضا نمی ماند (QUIC کنترل جریان خود را در بالای UDP اضافه می کند).
اما HTTP/3 مبتنی بر UDP، رفت و آمدهای مورد نیاز برای ایمن سازی اتصالات را کاهش می دهد و گاهی اوقات حذف می کند. این برنامه میتواند بلیت جلسه را ذخیره کند و در اتصال بعدی، از قابلیت 0-RTT QUIC برای شروع ارسال دادههای برنامه واجد شرایط در حالی که هنوز دست دادن هنوز در حال انجام است، استفاده کند، نه اینکه منتظر پایان آن بماند.
چیدرا گفت: «در اصل، میتوانید آن یک ثانیه تأخیر را که شبکههای کندتر را آزار میدهد، از بین ببرید. "شما نمی خواهید هزینه دو سفر رفت و برگشت را فقط برای تبادل داده بپردازید، اگر می توانید این کار را سریعتر انجام دهید."
و بر خلاف HTTP/2، HTTP/3 در صورت گم شدن یا تاخیر بسته ها قطع نمی شود. هیچ انسداد سر خطی وجود ندارد زیرا بسته ها در جریان های متعدد ارسال می شوند، نه تنها رشته ای که HTTP/2 ارائه می دهد.
چندوظیفه در حین مقداردهی اولیه
چیدرا دریافت که راهاندازی HTTP/3 به طرز شگفتآوری آسان بود. Delivery Hero از شبکه تحویل محتوای Cloudflare برای خدمت به پایگاه کاربر جهانی خود استفاده کرد، بنابراین انتقال به HTTP/3 مستلزم پیکربندی مجدد ساده بود.
افزودن پشتیبانی HTTP/3 به مشتریان، عمدتا تلفن همراه، تقریبا به همین سادگی ثابت شد. اپل از زمان iOS 15 از HTTP/3 پشتیبانی کرده است و اکثر مرورگرهای بومی از قبل از HTTP/3 پشتیبانی می کنند.
اندروید کمی پیچیده تر شد. مهندسان از کتابخانه Cronet گوگل برای پشته شبکه استفاده کردند، که در ابتدا به برنامههای اندرویدی خود با بستهبندی Cronet Transport for OkHttp متصل شدند تا بازنویسی کد موجود خود را که در ابتدا برای مشتری OkHttp HTTP نوشته شده بود، به حداقل برسانند.
خارج از جعبه، Cronet به پشتیبانی از عرضه HTTP/3 کمک کرد، که شکست درخواستهای سطح شبکه را کاهش داد. اما یک نکته قابل توجه نیز به همراه داشت: موتور تقریبا 800 میلی ثانیه طول کشید تا در P90 مقداردهی اولیه شود و برخی از مزایای سرعت 0-RTT HTTP/3 را کاهش داد. بنابراین تیم با استفاده از کتابخانه ای به نام OKCronet، کد را به پل خود تقسیم کردند. آنها همچنین کارهای مهندسی دیگری را انجام دادند که شامل تداخل اولیه Cronet با سایر وظایف پس زمینه بود.
به طور کلی، آنها زمان تأخیر P95 را از 1.2 ثانیه به 120 میلی ثانیه کاهش دادند و به بهبود 10 برابری در تأخیر خواندن دست یافتند.
الگوی کنترل تراکم خود را هوشمندانه انتخاب کنید
به طور کلی، تیم مهندسی 95 درصد از کاربران را به HTTP/3 منتقل کردند. دستگاههایی که نمیتوانستند از پروتکل استفاده کنند (عمدتا به دلیل شبکههایی که ترافیک UDP را مسدود میکنند) به طور خودکار به HTTP/2 بازگشتند. تأخیر دست دادن بین برنامه ها و سرور تا 51 درصد کاهش یافت. زمان پاسخ پاکستان به نصف کاهش یافت.
با این حال، یک مانع باقی ماند. صفحههای ثانویه در برخی از برنامهها (صفحات/صفحههایی که صفحه اصلی نیستند) با مشکلات تاخیر مواجه شدند. این مسائل فقط در بازارهای خاصی مانند پاکستان که مستعد از دست دادن بسته بودند، اتفاق افتاد.
مهندسان Delivery Hero این مشکل را به انتخاب الگوریتم کنترل ازدحام برای HTTP/3، Cubic توسط Cloudflare نسبت دادند، که از لحاظ تاریخی از دست دادن بستهها را به خوبی مدیریت نکرده است. تیم مهندسی برخی از ترافیک خود را با سرورهای Google HTTP/3-aware، که از پروتکل تراکم دیگری، پهنای باند تنگنا و زمان انتشار رفت و برگشت (BBR) استفاده میکنند، آزمایش کردند و از دست دادن بسته قطع نشدند.
Chidera گفت که Delivery Hero در حال حاضر با Cloudflare برای حل این مشکل الگوریتم تراکم خاص کار می کند.
گاهی اوقات آن lahmacun تازه و خوشمزه، با وجود تمام تلاشها، به همان سرعتی که ممکن است به خانه شما نمیرسد. ®
متن اصلی (انگلیسی)
HTTP/3 is faster with some work and help from Cloudflare
How the Uber-bound delivery giant tuned its mobile networking stack to cut latency