عندما يحاول العميل الحصول على مفتاح (A)، يرد الخادم بأحد الخيارات الثلاثة التالية.
| حالة المفتاح | إجراء الخادم | الرد |
|---|---|---|
| غير مسجل | تسجيل فوري (الانتهاء = الآن + المدة)، إصدار رمز | A + token + key |
| مسجل + انتهت الصلاحية | تحديث (الآن + المدة)، إصدار رمز جديد | A + token + key |
| مسجل + صحيح (قيد الاستخدام) | تسجيل في قائمة الانتظار، تأجيل الرد | A عند الإطلاق، T عند تجاوز الانتظار |
R)، يُمرر مباشرة إلى مقدمة قائمة الانتظار — دون منافسة جديدة، يُنقل فوراً برمز جديد.lease هو شبكة أمان. إذا توقف العميل أو نسي الإطلاق، فبعد انقضاء وقت lease، يمكن للخادم استعادة المفتاح تلقائياً وتمريره إلى المنتظر التالي. لذا من الجيد تعيين lease بكرم، لكن ليس طويلاً جداً بحيث يُعطل المفتاح إذا توقف العميل.wait هو الحد الأقصى لانتظار الحصول. إذا كان 0، فانتظار لا نهائي؛ وإلا، إذا لم يتمكن من الحصول خلال تلك الثواني، يستسلم الخادم ويرد T (timeout) — بدون منح، لذا لا يوجد تسرب قفل.token في رد A هو u64 متزايد رتيب لكل منحة. في كل مرة يتم الحصول عليه، يكون أكبر من أي رمز سابق. حتى إذا حدث failover، تبدأ العقدة الجديدة النشطة من قيمة أكبر من الحد الأقصى للرمز المستقبل (الخلافة) — لذا عبر الكتلة بأكملها، يستمر الرمز في الزيادة.
إذا كان المورد المحمي (حساب، ملف، طلب، إلخ) يتحقق فقط من "هل الرمز الحالي أكبر من آخر رمز رأيته"، يمكنه رفض وصول العميل الذي يستيقظ بتأخير بعد انتهاء lease برمز منخفض بالفعل. بفضل هذا، حتى لو لم يكن خادم القفل متسقاً بشكل مثالي في كل لحظة، لا يزال آمناً.
تتصرف العملاء الرسميون بشكل مشترك كما يلي (انظر المكتبات للتفاصيل المحددة لكل لغة).
lease سيستعيده، لكن الهدف هو تمرير المفتاح للمنتظر التالي بسرعة).peers هو أولوية الترقية (الأمام له الأولوية الأعلى). من بين العقد الحية، العقدة ذات الأولوية الأعلى هي النشطة، والباقي هي احتياطيات تستقبل الحالة بشكل فعلي.M) إلى عنوان النشطة ويتحولون إلى هناك.Ctrl+C) يرسل النشطة الترقية للخليفة أولاً (handoff)، ثم يعيد توجيه العملاء، مما يقلل المدة دون نشطة.هذا أسلوب الترقية ليس قائماً على quorum (التصويت بالأغلبية). لذا العدد الفردي/الزوجي لا يُهم، وحتى إذا عاشت عقدة واحدة فقط، تستمر الخدمة.
| عدد الخوادم | بدون توقف | تحمل الأعطال المتزامنة | ملاحظة |
|---|---|---|---|
| 1 | ✗ | — | الأسرع. توقف قصير عند إعادة التشغيل |
| 2 | ✓ | 1 | الحد الأدنى للتكوين بدون توقف. كافٍ لمعظم الحالات |
| 3 | ✓ | 2 | الحفاظ على التكرار حتى أثناء صيانة عقدة واحدة |
| 4+ | ✓ | N−1 | زيادة تكلفة النشر فقط — غير موصى به |
لأن الترقية القائمة على الأولويات ليست إجماعاً، في لحظة network partition قد تصبح كلا الطرفين نشطيْن مؤقتاً، وبسبب طبيعة النسخ غير المتزامن، قد تضيع بعض المنح عند failover. أي في فترات failover/partition، الاستبعاد المتبادل ليس مضموناً بنسبة 100%. إذا كان تحتاج ضمانات قوية، طبّق التحقق من رمز الحماية الذي وصفناه سابقاً على مستوى المورد المحمي — برفض الرموز القديمة (الصغيرة)، حتى لو لم يكن خادم القفل متسقاً بشكل مثالي، يبقى آمناً.