الأوامر المكرَّرة
يُكرَّر كل تغيير في حالة القفل كأحد الأوامر أدناه، محمولًا كإدخال سجل في AppendEntries، ويُطبَّق من كل عقدة بنفس الترتيب بعد تثبيت الأغلبية.
الأوامر (يقترحها القائد)
| الأمر | الحقول | المعنى |
|---|---|---|
Grant | key, lease_ms | حصول على مفتاح. الرمز غير موجود في الأمر — تمنحه آلة الحالة في كل عقدة بشكل حتمي وقت التطبيق، فتحسب كل العُقد نفس الرمز |
Release | key | تحرير مفتاح |
Expire | key, token | انتهاء إيجار بقيادة القائد. يُزال فقط عند تطابق token — فلا يستطيع انتهاء متأخر أو مكرر حذف قفل صدر حديثًا في الأثناء (مُمانِع/idempotent) |
النتائج المُطبَّقة (آلة الحالة ← القائد)
| النتيجة | المعنى |
|---|---|
Granted { token } | نجاح الحصول — رمز Fencing المُصدر |
GrantRejected | وصل Grant لمفتاح محجوز بالفعل (دفاعي — لا يحدث أبدًا في التدفق الطبيعي) |
Released | تم التحرير |
NotFound | المفتاح المراد تحريره لم يكن موجودًا |
Expired { existed } | عولج الانتهاء — يشير existed إلى ما إذا أُزيل فعليًا |
Noop | لم يحدث شيء |
تتتبع كل عقدة الوقت المتبقي للإيجار بساعتها المحلية الخاصة، لكن الإزالة الفعلية لا تحدث إلا عبر أمر Expire مُثبَّت — وهذا سبب عدم قدرة انحراف الساعات بين العُقد أبدًا على تفريق حالة القفل. إذا انقطع اتصال العميل قبل استلام استجابته، يقترح القائد Release لنفسه فور المنح لتنظيف القفل الشبح فورًا.
التدفق — تكرار Expire
القائد
التابع 1
التابع 2
اكتشاف انتهاء lease بالساعة المحلية
AppendEntries · Expire (key, token)
AppendEntries · Expire (key, token)
OK
تثبيت الأغلبية ← يطبقه كل عقدة بنفس الترتيب
عدم تطابق token ← يُتجاهل — يحمي قفلًا مُصدرًا حديثًا
استدعاء إجماع (RPC) عبر Raft
حتى الانتهاء مجرد أمر آخر يمر عبر اقتراح القائد ← تثبيت الأغلبية. بفضل فحص token، حتى لو أُعيد منح نفس المفتاح أثناء تأخر التثبيت، لا يستطيع Expire مُطبَّق متأخرًا حذف القفل الجديد.
المصطلحات
- آلة الحالة (state machine) — الجزء الذي يطبّق الأوامر المُثبَّتة بالترتيب لإنتاج الحالة الحالية (هنا، جدول الأقفال). بما أن كل عقدة تطبّق نفس الأوامر بنفس الترتيب، تصل جميعها دائمًا إلى نفس الحالة.
- التثبيت (commit) — الحالة "النهائية" التي تصل إليها الحالة بمجرد أن تسجلها أغلبية العُقد. لا تُطبَّق على آلة الحالة إلا الأوامر المُثبَّتة.
- مُمانِع (idempotent) — خاصية لا يغيّر فيها تطبيق نفس الأمر مرتين بالخطأ النتيجةَ.