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

ফ্রেম স্ট্রাকচার

Raft RPC বহনকারী দৈর্ঘ্য-প্রিফিক্সড বাইনারি ফ্রেমিং। ক্লায়েন্ট প্রোটোকলের \n-সমাপ্ত ফ্রেমের থেকে ভিন্ন, এখানে আগে দৈর্ঘ্য পাঠানো হয় এবং তারপর ঠিক ততটা বাইট পড়া হয়। একটি সংযোগে অনুরোধ-সাড়া জোড়া ক্রমানুসারে আদান-প্রদান হয়, আর ডায়াল করা পক্ষই সবসময় অনুরোধকারী

অনুরোধ (ডায়ালার → গ্রহণকারী)

গঠনrefresh

সাড়া (গ্রহণকারী → ডায়ালার)

গঠনrefresh
ফিল্ডআকারবিষয়বস্তু
tagu8RPC-এর ধরন — দেখুন RPC ধরন (শুধু অনুরোধে থাকে)
lenu32, বিগ-এন্ডিয়ানপরবর্তী payload-এর বাইট-দৈর্ঘ্য
payloadlen বাইটpostcard ফরম্যাটে সিরিয়ালাইজড openraft টাইপ

সংযোগ-ব্যবস্থাপনার নিয়ম

  • len-এর সীমা ৬৪ MiB (গ্রহণের সময় যাচাই করা হয়)। সীমা পার হওয়া বা বিকৃত ফ্রেম, অজানা tag, বা Raft প্রক্রিয়াকরণে ত্রুটি — সবই সংযোগ বন্ধ করে সামলানো হয় — ডায়াল করা পক্ষ (openraft) পুনঃসংযোগ করে আবার চেষ্টা করে।
  • ডায়াল করা পক্ষ প্রতি লক্ষ্য নোডে একটি সংযোগ পুনর্ব্যবহার করে। I/O ত্রুটি হলে, বা রাউন্ড-ট্রিপ মাঝপথে বাতিল হলে, সেই সংযোগ বাতিল করে পরের কলে নতুন করে সংযোগ করা হয় — অর্ধেক-পড়া স্ট্রিম ভুলভাবে সাজানো অবস্থায় পুনর্ব্যবহার হয় না।

পরিভাষা

  • দৈর্ঘ্য-প্রিফিক্স (length-prefix) — প্রথমে বডির দৈর্ঘ্য পাঠিয়ে তারপর ঠিক ততটা বাইট পড়ার ফ্রেমিং। \n-এর মতো কোনো ডিলিমিটারের দরকার নেই, তাই যেকোনো বাইনারি ডেটা হুবহু বহন করা যায়।
  • সিরিয়ালাইজেশন (serialization) — মেমরির একটি স্ট্রাক্টকে ট্রান্সপোর্ট-উপযোগী বাইট ক্রমে রূপান্তর করা।
  • RPC (remote procedure call) — নেটওয়ার্কের ওপার থেকে অন্য সার্ভারের একটি ফাংশন যেন স্থানীয়ভাবেই কল করা হচ্ছে এমনভাবে ডাকা একটি অনুরোধ-সাড়া জোড়া।