Ticketing
دستاویزات

اسنیپ شاٹ

جو نوڈ لاگ کے ذریعے پکڑنے کے لیے بہت پیچھے رہ گیا ہو (مثلاً دوبارہ آغاز کے فوراً بعد)، اسے FullSnapshot RPC کے ذریعے موجودہ حالت پوری بھیجی جاتی ہے۔ snapshot_bytes کے اندر درج ذیل ڈھانچہ ہوتا ہے، جو postcard سے سیریلائز کیا گیا ہے۔

فیلڈمواد
last_appliedیہ اسنیپ شاٹ جو آخری لاگ پوزیشن ظاہر کرتا ہے
last_membershipممبرشپ (نوڈ کی ترکیب) کی معلومات
token_seqفینسنگ ٹوکن جاری کرنے کا کاؤنٹر — نقل شدہ ہے، اس لیے قائد کی تبدیلی کے باوجود بھی ٹوکن کا یکسر بڑھاؤ برقرار رہتا ہے
locks(key, token, remain_ms) کی فہرست — ہر مصروف لاک اور اس کا بقیہ lease
  • remain_ms اسنیپ شاٹ لیے جانے کے لمحے کا بقیہ lease، ملی سیکنڈز میں ہے۔ اسے انسٹال کرنے والا نوڈ اپنی گھڑی کے مطابق میعاد ختم ہونے کا وقت now + remain_ms کے طور پر بحال کرتا ہے — کوئی مطلق ٹائم اسٹیمپ کبھی نہیں بھیجا جاتا، اس لیے نوڈز کے درمیان گھڑی کے فرق کا کوئی اثر نہیں ہوتا۔
  • درستگی کے لیے ملی سیکنڈز صرف یہاں استعمال ہوتے ہیں (کلائنٹ کے سامنے کی اکائی سیکنڈز ہے)۔
  • Raft لاگ میموری میں (volatile) ہے۔ دوبارہ شروع ہونے والا نوڈ خالی حالت میں بوٹ ہوتا ہے، پھر کسی پیئر کی لاگ نقل یا اس اسنیپ شاٹ کے ذریعے پکڑتا ہے — کمٹ شدہ حالت اس وقت تک محفوظ رہتی ہے جب تک اکثریت زندہ ہے۔

بہاؤ

قائد
پیچھے رہ جانے والا نوڈ
دوبارہ آغاز کے فوراً بعد — خالی حالت میں بوٹ
AppendEntries
لاگ کے ذریعے پکڑنے کے لیے بہت پیچھے
FullSnapshot — پوری حالت ایک فریم میں
انسٹال: ہر لاک کو now + remain_ms کے طور پر بحال کرتا ہے
اس کے بعد دوبارہ عام AppendEntries لاگ اندراجات
اتفاق رائے RPC (Raft)

اصطلاحات

  • snapshot — کسی مخصوص لمحے کی پوری حالت کی مکمل کاپی۔ یہ پیچھے رہ جانے والے نوڈ کو شروع سے سب کچھ دوبارہ چلانے کے بجائے، اسنیپ شاٹ انسٹال کر کے صرف اس کے بعد کے لاگ اندراجات کی پیروی کرنے دیتا ہے۔
  • membership — کلسٹر بنانے والے نوڈز کی فہرست اور ان کے کردار کی معلومات۔