Ticketing
التوثيق

أنواع RPC

يحدد tag في الإطار نوع RPC. جميع الحمولات (payload) هي أنواع openraft مُسلسلة بـ postcard.

tagالاسمحمولة الطلبحمولة الاستجابةالدور
1VoteVoteRequestVoteResponseانتخاب القائد — يطلب مرشح تصويت العُقد الأخرى
2AppendEntriesAppendEntriesRequestAppendEntriesResponseتكرار السجل + النبضة — ينشر القائد الأوامر المكرَّرة إلى الأتباع
3FullSnapshotصف (Vote, SnapshotMeta, snapshot_bytes)SnapshotResponseإرسال اللقطة كاملة إلى عقدة متأخرة
  • Vote — عندما يموت القائد، تتحول العقدة التي توقفت نبضتها إلى مرشح وتطلب أصواتًا؛ والعقدة التي تفوز بالأغلبية تصبح القائد الجديد.
  • AppendEntries — يحمل القائد أوامر القفل المراد تثبيتها كإدخالات سجل. AppendEntries بلا إدخالات هو النبضة نفسها — لا توجد رسالة نبضة منفصلة.
  • FullSnapshot — يرسل الحالة الحالية كاملة إلى عقدة متأخرة جدًا عن اللحاق بالسجل (أو عقدة انضمت للتو). تُرسَل كاملة في إطار واحد دون بث تدريجي.

التدفق — عند موت القائد

العقدة A
العقدة B
العقدة C
اكتشاف انقطاع نبضة القائد ← التحول إلى مرشح
Vote · طلب تصويت
Vote · طلب تصويت
موافقة
أغلبية تشمله ← قائد جديد
AppendEntries (بلا إدخالات = نبضة)
AppendEntries (بلا إدخالات = نبضة)
استدعاء إجماع (RPC) عبر Raft

بمجرد وصول أول نبضة من القائد المُنتخب حديثًا، يعود العنقود إلى الخدمة الطبيعية — الفجوة الكلية عادة 0.5 إلى 1 ثانية. راجع الأوامر المكرَّرة لتدفق AppendEntries (تكرار السجل) أثناء التشغيل العادي.

المصطلحات

  • تكرار السجل (log replication) — يحوّل القائد أوامره المقررة إلى سجل مرتب ويجعل الأتباع يسجلونه حرفيًا. تطبيق نفس السجل بنفس الترتيب يوصل كل العُقد إلى نفس الحالة.
  • النبضة (heartbeat) — إشارة دورية تعني "أنا حي". عندما تتوقف، يستنتج الأتباع أن القائد مات ويبدؤون انتخابًا.