Saeid Noormohammadi
Saeid Noormohammadi
خواندن ۳ دقیقه·۱ ماه پیش

Distributed Consensus in Distributed Systems

یکی از کلیدی ترین مفاهیم در سیستم های توزیع شده Distributed Consensus می باشد.این مفهوم به مجموعه ای از الگوریتم ها و پروتکل ها برای کمک به نودهای مختلف برای به توافق رسیدن درمورد یک تصمیم یا مقدار واحد اشاره دارد. این اجماع در زمان های بروز مشکل یا مواقعی که نودها به صورت موازی کار می کنند اهمیت زیادی در اطمینان از ثبات و درستی عملیات های در سیستم دارد.

همانطور که می دانیم در این سیستم ها, نودهای مختلف معمولا اطلاعات را به اشتراک می گذارند و عملیات هایی را به صورت موازی انجام می دهند. در این شرایط چگونه باید مطمئن شد که همه نودها بر سر یک تصمیم یا مقدار واحد مثل ثبت تراکنش توافق دارند؟ اگر این اجماع به درستی وجود نداشته باشد سیستم می تواند دچار مشکلاتی مانند inconsistency و... شود. این مورد در شبکه های بلاکچین, سیستم های مالی و دیتابیس ها توزیع شده بسیار مهم می باشد.

الگوریتم ها
ًRaft:
یکی از ساده ترین و قابل درک ترین الگوریتم ها می باشد که در آن همیشه یک نود به عنوان لیدر انتخاب می شود که وظیفه دریافت درخواست ها(مثل ذخیره یا تغییرات), پخش کردن درخواست ها بین نودهای دیگر(Follower ها) و در آخر اطمینان حاصل کردن از انجام درست درخواست توسط نودها را دارد. در صورت بروز مشکل برای لیدر، Candidate ها برای جایگزینی آن وارد رقابت می‌شوند.
Paxos: بر خلاف Raft این یکی از پیچیده ترین و مشهورترین الگوریتم ها است. برای محیط هایی طراحی شده که احتمال خرابی نودها یا مشکلات شبکه زیاد است. این الگوریتم سه بخش کلی دارد: Proposer نودی است که یک مقدار را پیشنهاد می کند - Acceptor نودی است که تصمیم میگیرد مقدار پیشنهاد شده را بپذیرد یا خیر و در آخر هم Learner به نودهایی اشاره می کند که مقدار توافق شده را یاد گرفته و از نتیجه آن با خبر می شوند.
Byzantine Fault Tolerance (BFT): این مورد گروهی از Consensus algorithms ها می باشد, آن ها برای محیط هایی طراحی شده اند که نودها علاوه بر خرابی ممکن است به صورت عمدی اطلاعات نادرست ارسال کنند. برای مثال این مورد در شبکه های بلاکچین زیاد می باشد.
Two-Phase Commit (2PC): یک پروتکل هماهنگ کننده برای تضمین اتمیک بودن تراکنش ها توزیع شده می باشد که از دو فاز و یک هماهنگ کننده تشکیل شده می باشد. اطلاعات بیشتر: https ://lnkd.in/dktKzf_B

دو الگوریتم زیر هم برای دوستانی هست که به بلاکچین علاقه دارن:
Proof of Work (PoW):
یکی از پرکاربردترین الگوریتم Consensus algorithms در شبکه های بلاکچین مانند بیت کوین هستش که در آن نودها(ماینرها) برای حل یک مسئله پیچیده ریاضی باهم رقابت می کنند و اولین نودی که مسئله را حل کند اجازه دارد یک بلاک جدید به بلاکچین اضافه کرده و مقداری ارز دیجیتال به عنوان پاداش دریافت کند.
Proof of Stake (PoS): یک الگوریتم جدید جایگزین برای PoW است که به جای مصرف انرژی نودها را با استفاده از مقدار ارز دیجیتالی که در شبکه دارند وادار به توافق می کند. با توجه به آن مصرف انرژی کمتر و عملکرد سریع تری دارد. در این الگوریتم نودها(ولیدیتور) به نسبت دارایی که در شبکه دارند برای اضافه کردن بلاک جدید انتخاب می شوند. نودی که انتخاب شود پاداش می گیرد.
ولیدیتور: آن ها مسئول بررسی و تایید صحت تراکنش های جدید در شبکه هستند.
اطلاعات بیشتر در مورد این دو الگوریتم: https ://lnkd.in/dEdi3g6i

distributed consensusDistributed Systems
شاید از این پست‌ها خوشتان بیاید