Ticketing
ডকুমেন্টেশন

RPC ধরন

ফ্রেমের tag RPC-এর ধরন নির্ধারণ করে। প্রতিটি payload-ই postcard দিয়ে সিরিয়ালাইজড একটি openraft টাইপ।

tagনামঅনুরোধ payloadসাড়া payloadভূমিকা
1VoteVoteRequestVoteResponseলিডার নির্বাচন — একজন প্রার্থী অন্য নোডের কাছে ভোট চায়
2AppendEntriesAppendEntriesRequestAppendEntriesResponseলগ রেপ্লিকেশন + হার্টবিট — লিডার প্রতিলিপিকৃত কমান্ড ফলোয়ারদের কাছে ছড়িয়ে দেয়
3FullSnapshotএকটি (Vote, SnapshotMeta, snapshot_bytes) টিউপলSnapshotResponseপিছিয়ে পড়া নোডে সম্পূর্ণ স্ন্যাপশট পাঠায়
  • Vote — লিডার মারা গেলে, যে নোডের হার্টবিট থেমে গেছে সে প্রার্থী হয়ে ভোট চায়; যে নোড সংখ্যাগরিষ্ঠ ভোট পায় সে নতুন লিডার হয়।
  • AppendEntries — লিডার কমিট করার লক কমান্ড লগ এন্ট্রি হিসেবে বহন করে। কোনো এন্ট্রি ছাড়া AppendEntries-ই হলো হার্টবিট — আলাদা কোনো হার্টবিট মেসেজ নেই।
  • FullSnapshot — লগের মাধ্যমে ধরতে না পারার মতো বেশি পিছিয়ে থাকা (বা সদ্য যোগ দেওয়া) নোডে সম্পূর্ণ বর্তমান স্টেট পাঠায়। কোনো স্ট্রিমিং ছাড়া, একটি ফ্রেমেই সম্পূর্ণ পাঠানো হয়।

প্রবাহ — লিডার মারা গেলে

নোড A
নোড B
নোড C
লিডারের হার্টবিট বিচ্ছিন্ন হওয়া শনাক্ত → প্রার্থীতে রূপান্তর
Vote · ভোটের অনুরোধ
Vote · ভোটের অনুরোধ
সম্মতি
নিজেসহ সংখ্যাগরিষ্ঠ ভোট → নতুন লিডার
AppendEntries (কোনো এন্ট্রি নেই = হার্টবিট)
AppendEntries (কোনো এন্ট্রি নেই = হার্টবিট)
কনসেনসাস RPC (Raft)

নতুন নির্বাচিত লিডারের প্রথম হার্টবিট পৌঁছানোর মুহূর্ত থেকেই ক্লাস্টার স্বাভাবিক সেবায় ফিরে আসে — মোট ফাঁক সাধারণত ০.৫-১ সেকেন্ড। স্বাভাবিক পরিচালনার সময়কার AppendEntries (লগ রেপ্লিকেশন) প্রবাহের জন্য দেখুন প্রতিলিপিকৃত কমান্ড

পরিভাষা

  • লগ রেপ্লিকেশন (log replication) — লিডার তার সিদ্ধান্তকৃত কমান্ডগুলোকে একটি ক্রমবদ্ধ লগে পরিণত করে ফলোয়ারদের হুবহু রেকর্ড করায়। একই লগ একই ক্রমে প্রয়োগ করলে সব নোড একই স্টেটে পৌঁছায়।
  • হার্টবিট (heartbeat) — "আমি বেঁচে আছি" জানানোর পর্যায়ক্রমিক সংকেত। এটি থেমে গেলে ফলোয়াররা লিডার মারা গেছে ধরে নিয়ে নির্বাচন শুরু করে।