প্রকল্প সম্পর্কে

হ্যাশিকর্প/রাফ্ট হল একটি Go লাইব্রেরি যা রাফ্ট কনসেনসাস অ্যালগরিদম প্রয়োগ করে, যা ডিস্ট্রিবিউটেড সিস্টেমে রেপ্লিকেটেড স্টেট মেশিন তৈরির ভিত্তি প্রদান করে। লাইব্রেরিটি একটি রেপ্লিকেটেড লগ পরিচালনা করে এবং একাধিক নোডে সামঞ্জস্যপূর্ণ স্টেট বজায় রাখার জন্য একটি ফাইনাইট স্টেট মেশিন (FSM) অ্যাবস্ট্রাকশনের সাথে একীভূত হয়। মূল ক্ষমতাগুলির মধ্যে রয়েছে: - **লিডার নির্বাচন**: নোডগুলি ফলোয়ার, প্রার্থী এবং লিডার অবস্থার মধ্যে পরিবর্তিত হয়। ফলোয়াররা যদি একটি টাইমআউট সময়ের জন্য কোনও এন্ট্রি না পায় তবে তারা স্বয়ংক্রিয়ভাবে প্রার্থী হয়ে ওঠে, তারপরে পিয়ারদের কাছ থেকে ভোট চায়। কোরাম ভোট প্রাপ্ত একজন প্রার্থী লিডার হয়ে ওঠে। - **লগ প্রতিলিপি**: লিডার নতুন লগ এন্ট্রি (অস্পষ্ট বাইনারি ব্লব) টেকসই স্টোরেজে যুক্ত করে এবং সেগুলিকে কোরাম ফলোয়ারদের কাছে প্রতিলিপি করে। একবার কমিট হয়ে গেলে, এন্ট্রিগুলি FSM-এ প্রয়োগ করা হয়। - **স্বয়ংক্রিয় স্ন্যাপশটিং**: সীমাহীন লগ বৃদ্ধি রোধ করার জন্য, রাফ্ট স্বয়ংক্রিয়ভাবে বর্তমান FSM স্টেট স্ন্যাপশট করে এবং লগ কম্প্যাক্ট করে, ইতিমধ্যে প্রয়োগ করা এন্ট্রিগুলি সরিয়ে দেয়। - **ডাইনামিক পিয়ার ম্যানেজমেন্ট**: লাইব্রেরিটি একটি কোরাম উপলব্ধ থাকা পর্যন্ত ক্লাস্টারে নোড যুক্ত এবং অপসারণ সমর্থন করে। - **স্টোরেজ ব্যাকএন্ড**: প্রাথমিক ব্যাকএন্ড MDBStore একটি পৃথক রিপোজিটরিতে (raft-mdb) রয়েছে এবং BoltDB ব্যবহার করে একটি পিওর Go ব্যাকএন্ড উপলব্ধ (raft-boltdb)। উভয়ই LogStore এবং StableStore বাস্তবায়ন হিসাবে কাজ করতে পারে। - **মেট্রিক্স নির্গমন**: armon/go-metrics (ডিফল্ট) বা hashicorp/go-metrics (বিল্ড ট্যাগ এর মাধ্যমে) এর মাধ্যমে মেট্রিক্স সমর্থন করে, যা অবচিত armon লাইব্রেরি থেকে একটি মাইগ্রেশন পথ প্রদান করে। লাইব্রেরির জন্য Go 1.16+ প্রয়োজন এবং এটি MPL 2.0 লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত। এটি 'ইন সার্চ অফ অ্যান আন্ডারস্ট্যান্ডেবল কনসেনসাস অ্যালগরিদম' রাফ্ট পেপারের উপর ভিত্তি করে তৈরি এবং প্যাক্সোসের সাথে পারফরম্যান্সে তুলনীয়, যেখানে লগ কমিট লেটেন্সি ডিস্ক I/O এবং নেটওয়ার্ক রাউন্ড ট্রিপের অর্ধেক ক্লাস্টারের মধ্যে সীমাবদ্ধ। প্রস্তাবিত ক্লাস্টার আকার হল 3 বা 5টি নোড, যা যথাক্রমে 1 বা 2টি নোড ব্যর্থতা সহ্য করতে পারে এবং একই সাথে প্রাপ্যতা সর্বাধিক করে। লাইব্রেরিটি ডিস্ট্রিবিউটেড সমন্বয়ের জন্য কনসাল এবং নোমাদের মতো হ্যাশিকর্প পণ্যগুলি দ্বারা ব্যবহৃত হয়।