یکسری مسائل دنیای واقعی هستن که توی کامپیوترها هم پیش میان، مخصوصا توی شبکه و سیستمهای توزیعشده، این جور چیزها زیاد وجود داره.
یکی از سادهترین مشکلات که اینه که بفهمیم یک کامپیوتر دیگه توی شبکه زنده هست یا نه. یکی از کاربردهاش توی باز نگه داشتن سوکت tcpئه. سیستم ما لازم داره بدونه این کانکشن tcpای که باز کرده و الان دیتایی توش نمیاد آیا به خاطر اینه که دیتای خاصی نداریم به هم بفرستیم یا اصلا سمت مقابل سرور در دسترس نیست و الکی منابع سیستم رو مشغول نگه نداریم و کاربر رو امیدوار نکنیم.
راه اولی که به ذهن میاد اینه که به طرف مقابل بگیم هروقت داشتی خاموش میشدی خبر بده. اگرچه که این روش برای یکسری حالتها مثل خاموش شدن سیستم جواب میده (سیستم عامل طرف مقابل میتونه پیام خاتمه بفرسته گ) ولی خیلی حالتها هست که جواب نمیده مثلا قطع شدن ناگهانی شبکه یا رفتن برق یا کرش داخل سیستمعامل و ...
راه دومی که به نظر میاد اینه که هر از گاهی حال کامپیوتر دیگه رو بپرسیم. این روش رو بهش heartbeat میگن و به این شکل کار میکنه که در بازههای منظمی پیام بدون محتوا برای طرف میفرستیم هم برای این که بگیم ما زنده هستیم هم برای این که طرف مقابل زنده بودن خودشو اعلام کنه.
همونطور که گفتم معمولا دو نقش متفاوت توی این ماجرا داریم. کامپیوتر مبدا که مدام heartbeat اولیه رو میفرسته و کامپیوتر مقصد که به اونا پاسخ میده و اگر هم پاسخ نده مبدا متوجه میشه که مقصد از دست رفته و اگر مقصد چند تا heartbeat نگیره متوجه میشه مبدا از دست رفته. (البته خیلی بستگی به کاربرد و پیاده سازی داره)
https://en.wikipedia.org/wiki/Heartbeat_(computing)
Post #3251
2.11K
- ❤ 15
- 👍 2
- 👌 2
- 🔥 1