নিরবচ্ছিন্ন পুনরায় চালু (রোলিং) পদ্ধতি
মূল নীতি একটাই: সংখ্যাগরিষ্ঠতা সবসময় চালু থাকতে হবে। ৩ নোডে একসাথে ১টি, ৫ নোডে সর্বোচ্চ ২টি নামানো যায়।
- ফলোয়ার (লিডার নয় এমন নোড) দিয়ে শুরু করুন, একে একে — লিডার পুরোটা সময় সেবা দিতেই থাকে। প্রতিটি পুনরায় চালু হওয়া নোড পিয়ারের লগ রেপ্লিকেশন/স্ন্যাপশট দিয়ে ধরে ফেলেছে তা নিশ্চিত করার পর পরেরটিতে যান।
- শেষে, লিডারকে নামান। বাকি নোডগুলো হারানো হার্টবিট শনাক্ত করে ০.৫-১ সেকেন্ডের মধ্যে নতুন লিডার নির্বাচন করে। এই সময়টুকুতে ক্লায়েন্ট অনুরোধে
E no_leaderআসতে পারে, কিন্তু অফিসিয়াল ক্লায়েন্ট এটি স্বচ্ছভাবে আবার চেষ্টা করে, তাই অ্যাপ্লিকেশনের কাছে এটি শুধু সংক্ষিপ্ত বিলম্ব হিসেবে দেখা যায়। - পুরনো লিডারকে আবার চালু করুন — এটি ফলোয়ার হিসেবে যোগ দিয়ে ধরে ফেলে (এটি স্বয়ংক্রিয়ভাবে লিডারত্ব ফিরে পায় না)।
সংখ্যাগরিষ্ঠতা চালু থাকা পর্যন্ত লক-স্টেট পুরোটা সময় সংরক্ষিত থাকে — পুনরায় চালুর সময় প্রদত্ত বা মুক্তিপ্রাপ্ত লকও কমিটের মধ্য দিয়ে যায়, তাই কিছুই হারায় না।
প্রবাহ (৩ নোড ভিত্তিক)
লিডার
ফলোয়ার ১
ফলোয়ার ২
① ফলোয়ার ১ পুনরায় চালু — লিডার সেবা দিতেই থাকে
লগ রেপ্লিকেশন/স্ন্যাপশট দিয়ে ধরে ফেলা
② ধরে ফেলা নিশ্চিতের পর ফলোয়ার ২ পুনরায় চালু
লগ রেপ্লিকেশন দিয়ে ধরে ফেলা
③ শেষে লিডার পুনরায় চালু
Vote → ০.৫-১ সেকেন্ডে নতুন লিডার নির্বাচিত
পুরনো লিডার ফলোয়ার হিসেবে যোগ দিয়ে ধরে ফেলে
কনসেনসাস RPC (Raft)
লিডার বন্ধ থাকার সংক্ষিপ্ত সময়টুকুতে ক্লায়েন্ট E no_leader পেতে পারে, কিন্তু অফিসিয়াল ক্লায়েন্ট স্বচ্ছভাবে আবার চেষ্টা করে, তাই অ্যাপ্লিকেশনের কাছে এটি শুধু একটি সংক্ষিপ্ত বিলম্ব হিসেবে দেখা যায়।