Raft پیرامیٹرز
| آئٹم | قدر |
|---|---|
| ہارٹ بیٹ وقفہ | 250ms |
| انتخابی ٹائم آؤٹ | 500-1000ms — قائد کی ناکامی کے بعد اس وقفے کے اندر نئے قائد کا انتخاب شروع ہوتا ہے |
| نوڈز کی تعداد | 3 یا 5 (کنفیگ لوڈ پر نافذ — کوئی اور تعداد بوٹ ہونے سے انکار کرتی ہے) |
| نوڈ ID | cluster_peers فہرست میں اپنی (cluster_self) پوزیشن — اسی لیے فہرست کی ترتیب ہر نوڈ پر یکساں ہونی چاہیے |
| Bootstrap | آغاز کے 500ms بعد، ہر نوڈ ایک ہی ممبرشپ کے ساتھ initialize ہوتا ہے — اگر پہلے سے initialized کلسٹر میں شامل ہو رہا ہو تو نظر انداز |
| لاگ اسٹوریج | میموری میں (volatile) — دوبارہ شروع ہونے والا نوڈ نقل/اسنیپ شاٹ سے بحال ہوتا ہے |
| lease میعاد ختم ہونے کی تشخیص | قائد ہر 100ms میں جانچتا ہے اور Expire کو اتفاقِ رائے سے کمٹ کرتا ہے |
wait ٹائم آؤٹ کی باریکی | انتظار کا ٹائم آؤٹ (T) بھی اسی 100ms ٹک پر طے ہوتا ہے — یہ 100ms تک دیر سے آ سکتا ہے |
نوڈز کی تعداد 3 یا 5 کیوں ہے
کمٹ کے لیے اکثریت درکار ہے۔ جفت تعداد کی ترتیب صرف لاگت بڑھاتی ہے بغیر خرابی برداشت کرنے کی صلاحیت بڑھائے، اس لیے سرور اسے مسترد کرتا ہے۔
| نوڈز کی تعداد | اکثریت | بیک وقت برداشت کی جانے والی ناکامیاں |
|---|---|---|
| 2 | 2 | 0 — ایک ناکامی سے کلسٹر رک جاتا ہے۔ سنگل موڈ سے بہتر نہیں |
| 3 | 2 | 1 |
| 4 | 3 | 1 — 3 نوڈز جیسا ہی، بس لاگت زیادہ |
| 5 | 3 | 2 |
ناکامی کے رویے کا خلاصہ
| صورتحال | رویہ |
|---|---|
| غیر-قائد نوڈ کو کلائنٹ کی درخواست | M (قائد کا پتہ)، یا اگر قائد معلوم نہ ہو تو E no_leader |
| قائد کی ناکامی | 500-1000ms میں نیا قائد منتخب۔ اس دوران درخواستیں E no_leader پاتی ہیں → کلائنٹ دوبارہ کوشش کرتا ہے |
| قائد کی تبدیلی کا لمحہ | زیر التوا حصول کی درخواستیں M/E no_leader سے صاف کی جاتی ہیں، اور کلائنٹ نئے قائد کے خلاف دوبارہ کوشش کرتا ہے |
| نوڈ کا دوبارہ آغاز | خالی حالت میں بوٹ → پیئر کی لاگ نقل/اسنیپ شاٹ سے پکڑتا ہے |
| اکثریت کا نقصان | کمٹ ناممکن → تحریر رک جاتی ہے (حفاظت پہلے)، اکثریت بحال ہوتے ہی خودکار طور پر دوبارہ شروع |
اصطلاحات
- quorum — کل نوڈز کے نصف سے زیادہ (3 میں سے 2، یا 5 میں سے 3)۔ چونکہ کسی بھی فیصلے کے لیے quorum کی رضامندی درکار ہے، دو الگ ہو جانے والے گروہ کبھی بیک وقت متضاد فیصلے کمٹ نہیں کر سکتے۔
- election timeout — وہ وقت جس تک ایک فالوور بغیر ہارٹ بیٹ کے انتظار کرتا ہے اس سے پہلے کہ یہ نتیجہ اخذ کرے کہ قائد مر چکا ہے اور انتخاب شروع کرے۔ ہر نوڈ کے لیے بے ترتیب (randomized) ہوتا ہے تاکہ بیک وقت امیدوار بننے کا امکان کم ہو۔