پالینگ در طراحی سیستم

پالینگ به کلاینت اجازه می‌دهد تا به‌روزرسانی‌ها را از سرور دریافت کند. می‌توانید این کار را با گارسونی که وضعیت غذای شما را بررسی می‌کند، مقایسه کنید.

سه روش اصلی وجود دارد.

پالینگ کوتاه (Short Polling)

کلاینت در فواصل زمانی مشخص درخواست به‌روزرسانی می‌کند. اگر داده‌ها آماده نباشند، سرور یک پاسخ خالی می‌فرستد. کلاینت این چرخه را تا رسیدن داده‌ها تکرار می‌کند. این روش باعث ایجاد درخواست‌های غیرضروری زیادی می‌شود.

پالینگ طولانی (Long Polling)

کلاینت درخواستی ارسال می‌کند و سرور آن را باز نگه می‌دارد. سرور تنها زمانی پاسخ می‌دهد که داده‌ها آماده باشند. به محض اینکه کلاینت پاسخ را دریافت کرد، بلافاصله درخواست جدیدی ارسال می‌کند. این کار حسی نزدیک به زمان واقعی (real-time) ایجاد می‌کند و در مقایسه با پالینگ کوتاه، پاسخ‌های خالی را کاهش می‌دهد.

جریان رویداد (Event Stream)

کلاینت و سرور یک اتصال واحد برقرار می‌کنند. این اتصال تا زمانی که یکی از طرفین آن را نبندد، باز می‌ماند. سرور هر زمان که رویدادی رخ دهد، داده‌ها را به کلاینت ارسال (push) می‌کند. این یک ارتباط واقعی در زمان واقعی (real-time) است.

نقطه ضعف آن، مصرف منابع است. این اتصال یک پورت مشخص را اشغال می‌کند. آن پورت تا زمانی که اتصال پایان نیابد، برای سایر وظایف در دسترس نخواهد بود.

انتخاب شما به نیازهای سیستم و موازنه‌ای (trade-offs) که می‌پذیرید، بستگی دارد.

منبع: https://dev.to/cibani_joe/polling-in-system-design-ph6