Ticketing
التوثيق

اللقطة (Snapshot)

تُرسَل الحالة الحالية كاملة إلى عقدة متأخرة جدًا عن اللحاق بالسجل (مثل فور إعادة التشغيل) عبر RPC من FullSnapshot. داخل snapshot_bytes توجد البنية التالية، مُسلسلة بـ postcard.

الحقلالمحتوى
last_appliedآخر موضع سجل تعكسه هذه اللقطة
last_membershipمعلومات العضوية (تشكيل العُقد)
token_seqعدّاد إصدار رمز Fencing — مُكرَّر، لذا يبقى تزايد الرمز المطّرد قائمًا حتى عبر تغيير القائد
locksقائمة (key, token, remain_ms) — كل قفل محجوز وإيجاره المتبقي
  • remain_ms هو الإيجار المتبقي بالمللي ثانية وقت أخذ اللقطة. تستعيد العقدة التي تثبّتها وقت الانتهاء كـ now + remain_ms بساعتها الخاصة — لا يُرسَل أي طابع زمني مطلق أبدًا، فلا يؤثر انحراف الساعات بين العُقد.
  • تُستخدم المللي ثانية هنا فقط لأجل الدقة (الوحدة الظاهرة للعميل هي الثانية).
  • سجل Raft في الذاكرة (متطاير). تقلع العقدة المُعاد تشغيلها بحالة فارغة، ثم تلحق عبر تكرار سجل قرين أو هذه اللقطة — تبقى الحالة المُثبَّتة محفوظة ما دامت الأغلبية حية.

التدفق

القائد
عقدة متأخرة
فور إعادة التشغيل — تقلع بحالة فارغة
AppendEntries
متأخرة جدًا عن اللحاق بالسجل
FullSnapshot — الحالة كاملة في إطار واحد
التثبيت: استعادة كل قفل كـ now + remain_ms
عودة إلى إدخالات سجل AppendEntries العادية
استدعاء إجماع (RPC) عبر Raft

المصطلحات

  • اللقطة (snapshot) — نسخة كاملة من الحالة عند لحظة معينة. تتيح لعقدة متأخرة تثبيت اللقطة ومتابعة إدخالات السجل التي بعدها فقط، بدلًا من إعادة تشغيل كل شيء من البداية.
  • العضوية (membership) — قائمة العُقد المكوِّنة للعنقود ومعلومات دورها.