Ticketing
دستاویزات

RPC اقسام

فریم کا tag RPC کی قسم طے کرتا ہے۔ ہر payload ایک openraft قسم ہے جو postcard سے سیریلائز کی گئی ہے۔

tagنامدرخواست payloadجواب payloadکردار
1VoteVoteRequestVoteResponseقائد کا انتخاب — ایک امیدوار دوسرے نوڈز سے ووٹ مانگتا ہے
2AppendEntriesAppendEntriesRequestAppendEntriesResponseلاگ کی نقل + ہارٹ بیٹ — قائد نقل شدہ کمانڈز کو فالوورز تک پھیلاتا ہے
3FullSnapshotایک (Vote, SnapshotMeta, snapshot_bytes) tupleSnapshotResponseپیچھے رہ جانے والے نوڈ کو پورا اسنیپ شاٹ بھیجتا ہے
  • Vote — جب قائد ختم ہو جائے، تو وہ نوڈ جس کی ہارٹ بیٹ رک گئی ہو امیدوار بن جاتا ہے اور ووٹ مانگتا ہے؛ جو نوڈ اکثریت جیت جائے وہ نیا قائد بن جاتا ہے۔
  • AppendEntries — قائد کمٹ کرنے والے لاک کمانڈز کو لاگ اندراجات کے طور پر لے جاتا ہے۔ کوئی اندراج نہ رکھنے والا AppendEntries ہی ہارٹ بیٹ ہے — کوئی الگ ہارٹ بیٹ پیغام نہیں ہے۔
  • FullSnapshot — لاگ کے ذریعے پکڑنے کے لیے بہت پیچھے رہ جانے والے (یا نئے شامل ہونے والے) نوڈ کو موجودہ حالت پوری بھیجتا ہے۔ بغیر streaming کے، ایک ہی فریم میں مکمل بھیجا جاتا ہے۔

بہاؤ — جب قائد ختم ہو جائے

نوڈ A
نوڈ B
نوڈ C
قائد کی ہارٹ بیٹ کا نہ ملنا محسوس کرتا ہے → امیدوار بن جاتا ہے
Vote · ووٹ کی درخواست
Vote · ووٹ کی درخواست
ہاں
خود سمیت اکثریت ووٹ → نیا قائد
AppendEntries (کوئی اندراج نہیں = ہارٹ بیٹ)
AppendEntries (کوئی اندراج نہیں = ہارٹ بیٹ)
اتفاق رائے RPC (Raft)

نئے منتخب قائد کی پہلی ہارٹ بیٹ پہنچتے ہی کلسٹر معمول کی سروس پر واپس آ جاتا ہے — کل خلا عام طور پر 0.5 سے 1 سیکنڈ ہوتا ہے۔ معمول کے آپریشن کے دوران AppendEntries (لاگ نقل) کے بہاؤ کے لیے نقل شدہ کمانڈز دیکھیں۔

اصطلاحات

  • log replication — قائد اپنے طے شدہ کمانڈز کو ایک ترتیب شدہ لاگ میں بدلتا ہے اور فالوورز سے اسے جوں کا توں ریکارڈ کرواتا ہے۔ ایک ہی لاگ کو ایک ہی ترتیب میں لاگو کرنے سے ہر نوڈ ایک ہی حالت میں پہنچتا ہے۔
  • heartbeat — "میں زندہ ہوں" کا اعلان کرنے والا وقفے وقفے سے سگنل۔ جب یہ رک جائے، تو فالوورز یہ نتیجہ اخذ کرتے ہیں کہ قائد مر چکا ہے اور انتخاب شروع کر دیتے ہیں۔