Raft पैरामीटर
| आइटम | मान |
|---|---|
| हार्टबीट अंतराल | 250ms |
| चुनाव टाइमआउट | 500-1000ms — लीडर विफलता के बाद इस विंडो के भीतर एक नया लीडर चुनाव शुरू होता है |
| नोड संख्या | 3 या 5 (कॉन्फ़िग लोड के समय लागू — इसके अलावा कुछ भी बूट होने से इनकार करता है) |
| नोड ID | cluster_peers सूची में इसकी (cluster_self) स्थिति — यही कारण है कि सूची का क्रम हर नोड पर समान होना चाहिए |
| बूटस्ट्रैप | स्टार्टअप के 500ms बाद, हर नोड एक ही सदस्यता के साथ इनिशियलाइज़ होता है — पहले से इनिशियलाइज़ किए गए क्लस्टर में शामिल होने पर अनदेखा किया जाता है |
| लॉग स्टोरेज | इन-मेमोरी (अस्थायी) — एक रीस्टार्ट किया गया नोड प्रतिकृति/स्नैपशॉट के ज़रिए ठीक होता है |
| Lease-समाप्ति पहचान | लीडर हर 100ms में जाँचता है और सर्वसम्मति से Expire कमिट करता है |
wait टाइमआउट सूक्ष्मता | प्रतीक्षा टाइमआउट (T) भी उसी 100ms टिक पर तय होता है — यह 100ms तक देर से आ सकता है |
नोड संख्या 3 या 5 ही क्यों
एक कमिट के लिए बहुमत चाहिए। एक सम (even) संख्या वाला कॉन्फ़िगरेशन केवल लागत बढ़ाता है बिना फ़ॉल्ट टॉलरेंस बढ़ाए, इसलिए सर्वर इसे अस्वीकार करता है।
| नोड संख्या | बहुमत | सहनीय समवर्ती विफलताएँ |
|---|---|---|
| 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)। चूँकि किसी भी निर्णय के लिए कोरम की सहमति चाहिए, विभाजित दो समूह कभी भी एक साथ परस्पर विरोधी निर्णय कमिट नहीं कर सकते।
- चुनाव टाइमआउट (election timeout) — एक फॉलोवर बिना हार्टबीट के कितनी देर प्रतीक्षा करता है इससे पहले कि वह यह निष्कर्ष निकाले कि लीडर मर चुका है और एक चुनाव शुरू करे। एक साथ कई उम्मीदवार बनने से रोकने के लिए यह प्रति नोड यादृच्छिक (randomized) है।