रोलिंग रीस्टार्ट प्रक्रिया
इसका एक ही मूल सिद्धांत है: बहुमत हमेशा जीवित रहना चाहिए। 3 नोड के साथ, आप एक बार में केवल 1 को नीचे ला सकते हैं; 5 नोड के साथ, 2 तक।
- पहले फॉलोवर्स (गैर-लीडर नोड) को एक-एक करके रीस्टार्ट करें — लीडर पूरे समय सेवा देना जारी रखता है। अगले नोड पर जाने से पहले पुष्टि करें कि रीस्टार्ट किया गया नोड पीयर लॉग प्रतिकृति/ स्नैपशॉट के ज़रिए पकड़ चुका है।
- अंत में, लीडर को नीचे लाएँ। शेष नोड खोई हुई हार्टबीट का पता लगाते हैं और 0.5-1 सेकंड के भीतर एक नया लीडर चुनते हैं। उस दौरान क्लाइंट अनुरोधों को
E no_leaderमिलता है, लेकिन आधिकारिक क्लाइंट इसे पारदर्शी रूप से पुनः प्रयास करते हैं, इसलिए एप्लिकेशन को केवल एक संक्षिप्त देरी दिखती है। - पुराने लीडर को फिर से ऊपर लाएँ — यह एक फॉलोवर के रूप में फिर से जुड़ता है और पकड़ता है (यह स्वचालित रूप से नेतृत्व वापस नहीं लेता)।
जब तक बहुमत जीवित रहता है, लॉक स्थिति पूरे समय संरक्षित रहती है — रीस्टार्ट के दौरान दिए या रिलीज़ किए गए लॉक भी कमिट से गुज़रते हैं, इसलिए कुछ भी खोता नहीं है।
प्रवाह (3 नोड के आधार पर)
लीडर
फॉलोवर 1
फॉलोवर 2
① फॉलोवर 1 को रीस्टार्ट करें — लीडर सेवा देना जारी रखता है
लॉग प्रतिकृति/स्नैपशॉट के ज़रिए पकड़ता है
② पकड़ने के बाद, फॉलोवर 2 को रीस्टार्ट करें
लॉग प्रतिकृति के ज़रिए पकड़ता है
③ अंत में लीडर को रीस्टार्ट करें
Vote → 0.5-1 सेकंड में नया लीडर चुना जाता है
पुराना लीडर फॉलोवर के रूप में फिर से जुड़ता है और पकड़ता है
सर्वसम्मति RPC (Raft)
लीडर के नीचे रहने के संक्षिप्त अंतराल के दौरान, क्लाइंट को E no_leader मिल सकता है, लेकिन आधिकारिक क्लाइंट पारदर्शी रूप से पुनः प्रयास करते हैं, इसलिए एप्लिकेशन को यह केवल एक छोटी देरी के रूप में दिखता है।