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

قد يخفي رسم بلا سهم تمرير مركزي سلطة تسجيل وخدمة اكتشاف ومرحّلًا، وكلها اعتماديات تشغيلية.

مسار مباشر، مستوى تحكم مشترك

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

ارسم كل مهمة على حدة حتى عندما ينفذها جميعًا مضيف واحد. وإلا فإن الرسم يُظهر مستوى بيانات لامركزيًا ويخفي الواقع التشغيلي القائل إن كل ند جديد يحتاج إلى الخدمتين نفسيهما.

الاكتشاف والثقة والمرحّل ثلاث مهام

تصميم Nebula مثال مفيد لأن وثائقه تُبقي هذه الأمور منفصلة. تحمل المضيفات شهادات للهوية، وتجيب المنارات عن سؤال أين وتساعد في اجتياز NAT، وتمرر المرحّلات حركة المرور عندما يتعذر إنشاء مسار مباشر. دور المرحّل منفصل عمدًا عن دور المنارة، لذلك لا تعد منارة يمكن الوصول إليها بأن زوجًا معينًا يستطيع التحدث. ترسم منتجات أخرى الحدود في مكان آخر، ولهذا هذا مثال وليس قالبًا.

بالنسبة لنشر مقترح، اكتب المسار الاحتياطي المدعوم لزوج لا يستطيع الاتصال مباشرة. ثقب الفتح الفاشل نقطة بيانات واحدة عن شبكة واحدة، وليس دليلًا على أن ندين خلف NAT لا يمكن أن يلتقيا أبدًا؛ والادعاء المعاكس، بأن الاتصال المباشر يعمل تحت أي سياسة، لا أساس له بالقدر نفسه.

فيم يفشل كل اعتماد

قيّم أربع حالات منفصلة بينما يكون الاعتماد موضوع الاختبار غير متاح: حركة المرور القائمة بين الندود، واتصال ند جديد تمامًا، وند تغيرت نقطة نهايته، ووصول أُلغي للتو. يعتمد كل منها على خدمات مختلفة ويفشل بشكل مختلف. قد تنجو الجلسات القائمة من انقطاع الاكتشاف بينما يظل المفتاح الملغى مرفوضًا، وقد يفشل ند جديد لأسباب لا علاقة لها بالتمرير. اختبر الحالات كلًا على حدة بدلًا من الاستنتاج من حالة واحدة.

الاتصال الذي ينجو من انقطاع واحد لا يثبت استقلالًا غير محدود. إنه يثبت أن الانقطاع الذي تسببت فيه لم يكن هو الذي يقطع ذلك المسار، وهو ما يظل معلومة مفيدة بشرط أن تكتب ما تسببت فيه.

اسأل أي انقطاع يمكنك النجاة منه

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

سجّل من يشغّل الاكتشاف والثقة والمرحّلات، وكيف يُستبدل كل منها. ذلك السجل هو ما يتيح للشخص التالي الإجابة عن سؤال حقيقي: أي إخفاقات تنجو منها هذه الشبكة، ومن يحافظ على الحالة التي تبقى مشتركة؟

كلمة لامركزي تستحق مكانها عندما تسمّي تلك الإخفاقات. بدون تلك القائمة، فهي تصف رسمًا لا نظامًا.

مقالات ذات صلة