Ticketing
التوثيق

معاملات Raft

العنصرالقيمة
فاصل النبضة250 مللي ثانية
مهلة الانتخاب500-1000 مللي ثانية — يبدأ انتخاب قائد جديد خلال هذه النافذة بعد عطل القائد
عدد العُقد3 أو 5 (يُفرض عند تحميل الإعداد — أي عدد آخر يرفض الإقلاع)
معرّف العقدةموضعها (cluster_self) في قائمة cluster_peers — لذا يجب أن يكون ترتيب القائمة متطابقًا في كل عقدة
الإقلاع (Bootstrap)بعد 500 مللي ثانية من البدء، تُهيَّأ كل عقدة بنفس تشكيل العضوية — يُتجاهل عند الانضمام إلى عنقود مُهيَّأ بالفعل
تخزين السجلفي الذاكرة (متطاير) — تستعيد العقدة المُعاد تشغيلها حالتها عبر التكرار أو اللقطة
اكتشاف انتهاء leaseيفحص القائد كل 100 مللي ثانية ويثبّت Expire عبر الإجماع
دقة مهلة waitتُحسم مهلة الانتظار (T) أيضًا عند نفس النبضة كل 100 مللي ثانية — قد تصل متأخرة حتى 100 مللي ثانية

لماذا 3 أو 5 عُقد

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

عدد العُقدالأغلبيةالأعطال المتزامنة المحتملة
220 — عطل واحد يوقف العنقود. لا أفضل من الوضع المفرد
321
431 — كـ 3 عُقد تمامًا، بتكلفة أعلى فقط
532

ملخص سلوك الأعطال

الحالةالسلوك
طلب عميل إلى عقدة غير قائدةM (عنوان القائد)، أو E no_leader إذا كان القائد غير معروف
عطل القائديُنتخب قائد جديد خلال 500-1000 مللي ثانية. الطلبات خلال تلك الفترة تُرجع E no_leader ← يعيد العميل المحاولة
أثناء تغيير القائدتُلغى طلبات الحصول المعلَّقة بـ M/E no_leader، ويعيد العميل المحاولة مع القائد الجديد
إعادة تشغيل عقدةتقلع بحالة فارغة ← تلحق عبر تكرار سجل قرين أو اللقطة
فقدان الأغلبيةيستحيل التثبيت ← تتوقف الكتابة (الأمان أولًا)، وتُستأنف تلقائيًا عند استعادة الأغلبية

المصطلحات

  • الأغلبية (quorum) — أكثر من نصف كل العُقد (2 من 3، أو 3 من 5). بما أن أي قرار يتطلب موافقة الأغلبية، لا يمكن لمجموعتين منقسمتين أبدًا تثبيت قرارين متعارضين في آن واحد.
  • مهلة الانتخاب (election timeout) — المدة التي ينتظرها التابع دون نبضة قبل أن يستنتج أن القائد قد مات ويبدأ انتخابًا. عشوائية لكل عقدة لتقليل الترشح المتزامن.