نقل شدہ کمانڈز
ہر لاک-حالت کی تبدیلی نیچے دیے گئے کمانڈز میں سے ایک کے طور پر نقل کی جاتی ہے، AppendEntries میں ایک لاگ اندراج کے طور پر لے جائی جاتی ہے، اور اکثریت کی کمٹ کے بعد ہر نوڈ اسے ایک ہی ترتیب میں لاگو کرتا ہے۔
کمانڈز (قائد کی جانب سے تجویز کردہ)
| کمانڈ | فیلڈز | معنی |
|---|---|---|
Grant | key, lease_ms | کلید کا حصول۔ ٹوکن کمانڈ میں نہیں ہوتا — ہر نوڈ کا اسٹیٹ مشین اسے لاگو ہونے کے لمحے متعین طور پر تفویض کرتا ہے، اس لیے ہر نوڈ ایک ہی ٹوکن شمار کرتا ہے |
Release | key | کلید کا اجراء |
Expire | key, token | قائد کی جانب سے چلائی گئی lease کی میعاد ختم ہونا۔ صرف اس صورت میں ہٹایا جاتا ہے جب token میل کھائے — دیر سے آنے والا یا دہرایا گیا میعاد ختم ہونا اس دوران تازہ جاری کیے گئے لاک کو حذف نہیں کر سکتا (idempotent) |
لاگو ہونے کے نتائج (اسٹیٹ مشین → قائد)
| نتیجہ | معنی |
|---|---|
Granted { token } | حصول کامیاب — جاری کیا گیا فینسنگ ٹوکن |
GrantRejected | ایک Grant پہلے سے مصروف کلید کے لیے آیا (دفاعی — معمول کے بہاؤ میں کبھی نہیں ہوتا) |
Released | جاری کر دیا گیا |
NotFound | جاری کرنے کے لیے کلید موجود نہیں تھی |
Expired { existed } | میعاد ختم ہونا پروسیس ہو گیا — existed بتاتا ہے کہ آیا واقعی ہٹایا گیا |
Noop | کچھ نہیں ہوا |
ہر نوڈ lease کے بقیہ وقت کو اپنی مقامی گھڑی سے ٹریک کرتا ہے، لیکن اصل ہٹانا ہمیشہ صرف ایک کمٹ شدہ Expire کمانڈ کے ذریعے ہوتا ہے — یہی وجہ ہے کہ نوڈز کے درمیان گھڑی کا فرق کبھی لاک کی حالت کو تقسیم نہیں کر سکتا۔ اگر کوئی کلائنٹ اپنا جواب ملنے سے پہلے منقطع ہو جائے، تو قائد جاری کرنے کے فوراً بعد خود ایک Release تجویز کرتا ہے تاکہ بھوت لاک کو فوراً صاف کیا جا سکے۔
بہاؤ — Expire کی نقل
میعاد ختم ہونا بھی محض ایک اور کمانڈ ہے جو قائد کی تجویز → اکثریت کی کمٹ سے گزرتا ہے۔ token جانچ کی بدولت، اگر کمٹ میں تاخیر کے دوران وہی کلید دوبارہ جاری کر دی گئی ہو، تو دیر سے لاگو ہونے والا Expire نئے لاک کو حذف نہیں کر سکتا۔
اصطلاحات
- state machine — وہ حصہ جو کمٹ شدہ کمانڈز کو ترتیب سے لاگو کر کے موجودہ حالت (یہاں، لاک ٹیبل) بناتا ہے۔ چونکہ ہر نوڈ ایک ہی کمانڈز کو ایک ہی ترتیب میں لاگو کرتا ہے، وہ ہمیشہ ایک ہی حالت پر پہنچتے ہیں۔
- commit — وہ "حتمی" حیثیت جو ایک حالت اکثریت نوڈز کے اسے ریکارڈ کرنے کے بعد حاصل کرتی ہے۔ صرف کمٹ شدہ کمانڈز ہی اسٹیٹ مشین پر لاگو ہوتی ہیں۔
- idempotent — وہ خاصیت جس میں ایک ہی کمانڈ کا غلطی سے دو بار لاگو ہونا نتیجہ نہیں بدلتا۔