mahdi farahani
mahdi farahani
خواندن ۲ دقیقه·۲ سال پیش

HTTP Connection Management

Persistent ,Pipelining, Multiplexing

اول رفتم سراغ Pipelining فکر نمیکردم اینقدر مطالب مختلف رو همراه خودش بیاره ولی واقعا جالب شد و باعث درک بهتری نسبت به HTTP Protocol شد.

تا جایی تونستم مطلب ساده و روان کردم امیدوارم خوب یاد بگیرید :)




برای درک بهتر Pipelined Connection ابتدا باید Persistent Connection رو یاد بگیریم:

  • Persistent Connection ~> HTTP 1.1

که با اسم HTTP keep alive معروف است.

با استفاده از آن میتوان در HTTP از یک اتصال در بستر TCP برای ارسال و دریافت چندین HTTP Req/Res به جای اینکه به ازای هر Request/Response یک اتصال جدید به وجود بیاید.

مزایای Persistent Connection:

  • استفاده کمتر از CPU و memory بخاطر اتصال های کمتر
  • امکان استفاده از Pipeline
  • جلوگیری از کاهش ازدحام شبکه
  • کاهش تاخیر شبکه
  • گزارش خطا بدون بستن اتصال TCP

معایب :

  • اگر کلاینت زمانی که دیتاهای مورد نیاز بگیرد و اتصال رو نبندد یکسری منابع برای باز نگه داشتن اتصال در سرور اشغال میشود.(اینکه این منابع تا چه زمانی اشغال میشود و چه مقدار تاثیر دارد روی عملکرد سرور به کانفیگ سرور بستگی دارد.)



HTTP Pipelining:

یکی از ویژگی های HTTP 1.1 امکان ارسال چندین Request بر بستر یک اتصال TCP بدون صبر کردن برای Response مربوطه.

در HTTP 1.1 برای اینکه سرور Response درستی برای Pipelined Request داشته باشد باید شناسایی دقیقی داشته باشد.

اگر سرور از HTTP Pipelining پشتیبانی نمیکند response معتبر ولی non-pipelined برمیگرداند.

مشکل اصلی Pipelining در HTTP Intermediate Node است اگر تنها یکی از intermediate node در زنجیره HTTP به درستی Pipelined Request مدیریت نکند همه کارها دچار اختلال میشود.

در HTTP 2 یک تغییر بزرگ به وجود اومد Multiplexing جایگزین Pipelining شد.


Multiplexing(Muxing):

در HTTP 2 درخواست ها(request) امکان استفاده از یک اتصال واحد رو برای کلاینت امکان پذیر میکند.

به این معنی که می توان از یک اتصال واحد بین کلاینت و وب سرور برای ارائه همه درخواست ها به صورت

غیرهمزمان استفاده کرد، و سرور وب را قادر می سازد از از منابع کمتری استفاده کند، بنابراین کاربران بیشتری را

به طور همزمان پشتیبانی می کند.

مثال برای درک بهتر Multiplexing:

فرض کنیم میخواهیم 10تا کالا برای تحویل درب منزل سفارش بدهیم:

+میتوانید کالاهای خود را با ترتیب خاصی سفارش دهیم بدون هیچ تاخیری

-فروشگاه در صورت آماده بودن ارسال میکند، بنابراین ممکن است با ترتیب متفاوتی از خواسته ایم فرستاده شوند، حتی ممکن است سفارش اصلی به چند سفارش تقسیم شود تا برخی از کالاها در اولین قسمت سفارش ارسال بشود.

منابع:

HTTP Non-Persistent & Persistent Connection

HTTP persistent connection

What does multiplexing mean in HTTP/2

httpConnection ManagementPersistentmultiplexingPipelining
junior bug hunter
شاید از این پست‌ها خوشتان بیاید