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

প্রতিলিপিকৃত কমান্ড

প্রতিটি লক-স্টেট পরিবর্তন নিচের কমান্ডগুলোর একটি হিসেবে AppendEntries-এর লগ এন্ট্রিতে বহন করে প্রতিলিপিকৃত হয়, এবং সংখ্যাগরিষ্ঠ কমিটের পর সব নোড একই ক্রমে প্রয়োগ করে

কমান্ড (লিডার প্রস্তাব করে)

কমান্ডফিল্ডঅর্থ
Grantkey, lease_msকী অর্জন। টোকেন কমান্ডে থাকে না — প্রয়োগের মুহূর্তে প্রতিটি নোডের স্টেট মেশিন নির্ধারণমূলকভাবে বরাদ্দ করে — তাই সব নোড একই টোকেন গণনা করে
Releasekeyকী মুক্তি
Expirekey, tokenলিডার-চালিত lease মেয়াদ শেষ। token মিললেই সরানো হয় — দেরিতে আসা বা দ্বৈত মেয়াদ-শেষ এর মাঝে নতুন প্রদত্ত লক মুছতে পারে না (আইডেমপোটেন্ট)

প্রয়োগ ফলাফল (স্টেট মেশিন → লিডার)

ফলাফলঅর্থ
Granted { token }অর্জন সফল — ইস্যু করা ফেন্সিং টোকেন
GrantRejectedইতিমধ্যে দখলে থাকা কী-তে Grant পৌঁছেছে (প্রতিরক্ষামূলক — স্বাভাবিক প্রবাহে ঘটে না)
Releasedমুক্তিপ্রাপ্ত
NotFoundমুক্তি দিতে চাওয়া কী ছিল না
Expired { existed }মেয়াদ-শেষ প্রক্রিয়াজাত — existed বলে দেয় সত্যিই সরানো হয়েছিল কিনা
Noopকিছুই ঘটেনি

প্রতিটি নোড lease-এর বাকি সময় নিজস্ব স্থানীয় ঘড়ি দিয়ে ট্র্যাক করে, তবে প্রকৃত অপসারণ সবসময় শুধু একটি কমিট করা Expire কমান্ডের মাধ্যমেই ঘটে — এই কারণেই নোডগুলোর মধ্যে ঘড়ির পার্থক্য লক-স্টেটকে কখনো বিভক্ত করতে পারে না। কোনো ক্লায়েন্ট সাড়া পাওয়ার আগেই সংযোগ বিচ্ছিন্ন হলে, লিডার প্রদানের ঠিক পরপরই নিজে একটি Release প্রস্তাব করে ভূতুড়ে লক তাৎক্ষণিক পরিষ্কার করে দেয়।

প্রবাহ — Expire প্রতিলিপিকরণ

লিডার
ফলোয়ার ১
ফলোয়ার ২
নিজস্ব ঘড়ি দিয়ে lease মেয়াদ শেষ শনাক্ত
AppendEntries · Expire (key, token)
AppendEntries · Expire (key, token)
OK
সংখ্যাগরিষ্ঠ কমিট → সব নোড একই ক্রমে প্রয়োগ করে
token অমিল হলে উপেক্ষিত — নতুন প্রদত্ত লক সুরক্ষিত
কনসেনসাস RPC (Raft)

মেয়াদ-শেষও লিডারের প্রস্তাব → সংখ্যাগরিষ্ঠ কমিট দিয়ে যাওয়া আরেকটি সাধারণ কমান্ড মাত্র। token যাচাইয়ের কল্যাণে, কমিট বিলম্বিত হওয়ার সময় একই কী পুনরায় প্রদত্ত হলেও, দেরিতে প্রয়োগ হওয়া Expire নতুন লক মুছতে পারে না।

পরিভাষা

  • স্টেট মেশিন (state machine) — কমিট করা কমান্ড ক্রমানুসারে প্রয়োগ করে বর্তমান স্টেট (এখানে, লক টেবিল) তৈরি করে এমন অংশ। সব নোড একই কমান্ড একই ক্রমে প্রয়োগ করে বলে তারা সবসময় একই স্টেটে মিলিত হয়।
  • কমিট (commit) — সংখ্যাগরিষ্ঠ নোড রেকর্ড করার পর একটি স্টেট যে "চূড়ান্ত" মর্যাদা পায়। শুধু কমিট করা কমান্ডই স্টেট মেশিনে প্রয়োগ হয়।
  • আইডেমপোটেন্ট (idempotent) — একই কমান্ড ভুলবশত দুইবার প্রয়োগ হলেও ফলাফল পরিবর্তিত না হওয়ার বৈশিষ্ট্য।