هل يجب علي الحفاظ على نبض القلب عند استخدام TCP؟

StackOverflow https://stackoverflow.com/questions/2055168

  •  20-09-2019
  •  | 
  •  

سؤال

يستخدم أحد تطبيقاتنا الموزعة نبضات القلب للكشف عن انقطاع الأقران (على سبيل المثال خط LAN مكسور ، إلخ). هل القلب ينبض ضروري؟

هل كانت مفيدة؟

المحلول

ربما ، ماذا ستفعل إذا لم تحصل على نبض القلب؟

إذا لم يكن لديك طريقة للتعافي ، فلا فائدة من وجود نبض في القلب.

إذا كنت تستخدم استدعاء الخلفية من الخادم إلى العميل ، فأنت بحاجة إلى طريقة يمكن للعميل أن يطلب من الخادم الاستياء من جميع عمليات المكالمات المفقودة ، فهذا ليس بالأمر السهل.

وأيضًا إذا لم تحصل على نبضات في القلب ، فهذا لا يعني أن رسالة لن تصل إلى هناك لاحقًا ، حيث يمكن أن يكون هناك كل نوع من تأخير الشبكة ، هل من الآمن استياء رسائلك فقط؟

ضربات القلب هي الشيء السهل ، والشيء الصعب هو ما يجب فعله عندما لا ينبض القلب!

نصائح أخرى

نعم. سوف يظهر TCP فقط أن الاتصال المادي لا يزال على قيد الحياة (أي. لم يتم هدم المقبس بواسطة أجهزة التوجيه أو OS). ولكن سوف يقول ولا شيء حول ال توافر التطبيق. إذا كانت العملية في الطرف الآخر من الأنبوب الخاص بك في while(1); حلقة ولا تقوم بمعالجة طلباتك ، فأنت غير متصل بها حقًا.

هذه طريقة جيدة تمامًا لمعرفة أنك لا تزال متصلاً بالطرف الآخر على "مستوى التطبيق" ويمكن للتطبيقات التحدث. وإلا ، فسيتعين عليك أن تضع افتراضات مفادها أن "الطرف الآخر" ليس لديه ما "يقوله" ، والذي سيكون من الصعب فصله عن "الطرف الآخر المفقود في الواقع على اتصال الشبكة منذ 35 ثانية".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top