منصوبے کے بارے میں

hashicorp/raft ایک Go لائبریری ہے جو Raft اتفاق رائے الگورتھم کو نافذ کرتی ہے، جو تقسیم شدہ نظاموں میں نقل شدہ حالت مشینوں کی تعمیر کے لیے بنیاد فراہم کرتی ہے۔ یہ لائبریری ایک نقل شدہ لاگ کا انتظام کرتی ہے اور متعدد نوڈز میں مستقل حالت برقرار رکھنے کے لیے محدود حالت مشین (FSM) تجرید کے ساتھ مربوط ہوتی ہے۔ اہم صلاحیتیں شامل ہیں: - **لیڈر الیکشن**: نوڈز پیروکار، امیدوار، اور لیڈر حالتوں کے درمیان منتقل ہوتے ہیں۔ اگر ٹائم آؤٹ مدت کے لیے کوئی اندراج موصول نہ ہو تو پیروکار خود کو امیدوار میں ترقی دیتے ہیں، پھر ساتھیوں سے ووٹ کی درخواست کرتے ہیں۔ اکثریت کے ووٹ حاصل کرنے والا امیدوار لیڈر بن جاتا ہے۔ - **لاگ نقل**: لیڈر نئے لاگ اندراجات (غیر شفاف بائنری بلابز) کو پائیدار ذخیرے میں شامل کرتا ہے اور انہیں پیروکاروں کی اکثریت تک نقل کرتا ہے۔ ایک بار عہد ہونے کے بعد، اندراجات FSM پر لاگو ہوتے ہیں۔ - **خودکار اسنیپ شاٹنگ**: لاگ کی غیر محدود ترقی کو روکنے کے لیے، Raft خودکار طور پر موجودہ FSM حالت کا اسنیپ شاٹ لیتی ہے اور لاگ کو کمپیکٹ کرتی ہے، ان اندراجات کو ہٹا دیتی ہے جو پہلے ہی لاگو ہو چکے ہیں۔ - **متحرک ساتھی انتظام**: یہ لائبریری کلسٹر سے نوڈز کو شامل اور ہٹانے کی حمایت کرتی ہے جب تک اکثریت دستیاب ہو۔ - **ذخیرہ بیک اینڈز**: بنیادی بیک اینڈ MDBStore ایک الگ ذخیرے میں ہے (raft-mdb)، اور BoltDB استعمال کرنے والا خالص Go بیک اینڈ دستیاب ہے (raft-boltdb)۔ دونوں LogStore اور StableStore نفاذ کے طور پر کام کر سکتے ہیں۔ - **میٹرکس اخراج**: armon/go-metrics (ڈیفالٹ) یا hashicorp/go-metrics (بلڈ ٹیگ کے ذریعے) کے ذریعے میٹرکس کی حمایت کرتی ہے، متروک armon لائبریری سے منتقلی کے راستے کے ساتھ۔ یہ لائبریری Go 1.16+ کی ضرورت ہے اور MPL 2.0 کے تحت لائسنس یافتہ ہے۔ یہ Raft مقالے 'In Search of an Understandable Consensus Algorithm' پر مبنی ہے اور کارکردگی میں Paxos کے مقابلے میں ہے، لاگ عہد کی تاخیر ڈسک I/O اور نصف کلسٹر تک نیٹ ورک راؤنڈ ٹرپس سے محدود ہے۔ تجویز کردہ کلسٹر سائز 3 یا 5 نوڈز ہیں، جو بالترتیب 1 یا 2 نوڈ کی ناکامی کو برداشت کرتے ہیں جبکہ دستیابی کو زیادہ سے زیادہ کرتے ہیں۔ یہ لائبریری HashiCorp مصنوعات جیسے Consul اور Nomad میں تقسیم شدہ کوآرڈینیشن کے لیے استعمال ہوتی ہے۔