پروتکل Raft چیست‌ و‌ چگونه کار‌می‌کند؟


ماهان سرجوقیان 20 شهریور 1401 10 دقیقه مطالعه
پروتکل Raft چیست‌ و‌ چگونه کار‌می‌کند؟

فهرست محتوا

پروتکل Raft توسط Diego Ongaro و John Ousterhout (دانشگاه استنفورد) ایجاد شد که باعث شد دیگو در سال 2014 دکترای خود را دریافت کند.

‏Raft برای درک بهتر نحوه دستیابی به الگوریتم اجماع طراحی شده است، با توجه به اینکه سلف آن، الگوریتم Paxos است که توسط Lesli Lamport توسعه داده شده است.

برای درک Raft، ابتدا باید به مشکلی که پروتکل Raft سعی در حل آن دارد و آن دستیابی به اجماع است، نگاهی بیندازیم.

اجماع به معنای توافق سرورهای متعدد بر روی اطلاعات یکسان است وچیزی که برای طراحی سیستم های توزیع شده مقاوم در برابر خطا ضروری است و به صورت زیر است:

فرآیند: مشتری پیامی را به سرور ارسال می کند و سرور با یک پاسخ عمل می کند.

 

یک پروتکل توافقی که خطاها را تحمل می کند باید دارای ویژگی های زیر باشد:
اعتبار:

اگر یک فرآیند یک مقدار را (خواندن/نوشتن) تصمیم بگیرد، باید توسط یک فرآیند صحیح دیگر پیشنهاد شده باشد.
توافق:

هر فرآیند صحیح باید روی یک مقدار توافق داشته باشد.
خاتمه:

هر فرآیند صحیح باید پس از تعداد محدودی از مراحل خاتمه یابد.
یکپارچگی:

اگر همه فرآیندهای صحیح روی یک مقدار تصمیم بگیرند، باید‌همان فرآیند اجرا شود.

در حال حاضر، دو نوع سیستم می تواند وجود داشته باشد که فقط یک مشتری را فرض می کنند

سیستم سرور تک:

مشتری با سیستمی که تنها یک سرور بدون نسخه پشتیبان دارد، تعامل دارد. در چنین سیستمی مشکلی برای دستیابی به اجماع وجود ندارد.

سیستم سرور چندگانه:

مشتری با سیستمی که چندین سرور دارد تعامل دارد.

چنین سیستم هایی می توانند دو نوع باشند:

متقارن: هر یک از چندین سرور می تواند به مشتری پاسخ دهد و همه سرورهای دیگر قرار است با سروری که به درخواست مشتری پاسخ داده است همگام شوند.

نامتقارن:

فقط سرور رهبر انتخاب شده می تواند به مشتری پاسخ دهد. سپس همه سرورهای دیگر با سرور رهبر همگام می شوند.

چنین سیستمی که در آن همه سرورها در طول زمان داده های مشابه (وضعیت مشترک) را تکرار می کنند (یا حفظ می کنند) را می توان در حال حاضر به عنوان ماشین حالت تکراری نامید.

برخی از اصطلاحات مورد استفاده برای ارجاع سرورهای منفرد در یک سیستم توزیع شده به صورت زیر است :
‏Leader(رهبر):

ادامه مطلب
تأثیرات رمز ارز ها و تسهیل‌ در جهانی شدن‌ کسب‌وکارهای داخل و بهبود‌ صادرات غیر نفتی

فقط سروری که به عنوان رهبر انتخاب شده است می تواند با مشتری تعامل داشته باشد.

همه سرورهای دیگر خود را با رهبر همگام می کنند. در هر نقطه از زمان، حداکثر می تواند یک رهبر وجود داشته باشد.

دنبال کننده:

سرورهای فالوور پس از هر بازه زمانی منظم، کپی داده های خود را با داده های رهبر همگام می کنند.

هنگامی که سرور رهبر به هردلیلی از کار می افتد٫
یکی از پیروان می تواند در انتخابات شرکت کند و رهبر شود.

نامزد:

در زمان رقابت در انتخابات برای انتخاب سرور رهبر، سرورها می توانند از سرورهای دیگر رای بخواهند. از این رو، زمانی که درخواست رأی کرده باشند، نامزد خوانده می شوند. در ابتدا، همه سرورها در حالت Candidate هستند.

قضیه CAP چیست؟

قضیه CAP مفهومی است که یک سیستم دیتا بیس توزیع شده فقط می تواند 2 مورد از 3 مورد زیر را داشته باشد:

سازگاری:

داده ها در تمام گره های سرور (رهبر یا دنبال کننده) یکسان است، به این معنی که سیستم تقریباً دارای قابلیت همگام سازی آنی است.
در دسترس بودن:

هر درخواست یک پاسخ (موفقیت / شکست) دریافت می کند. برای ارائه درخواست ها به سیستم نیاز دارد که 100% عملیاتی باشد
تحمل پارتیشن:

سیستم حتی پس از از کار افتادن برخی از گره های سرور به پاسخگویی ادامه می دهد. این بدان معناست که سیستم تمام عملکرد درخواست ها/پاسخ ها را به نحوی حفظ می کند.

پروتکل Raft چیست؟

‏Raft یک الگوریتم اجماع است که برای درک آسان طراحی شده است. از نظر تحمل خطا و عملکرد معادلی برای Paxos است.

تفاوت آن در این است که به مسائل فرعی نسبتاً مستقل تجزیه می شود و به طور کامل به تمام قطعات اصلی مورد نیاز برای سیستم های عملی می پردازد.

در آینده امکان دارد که Raft اجماع را در دسترس مخاطبان گسترده‌تری قرار دهد و این مخاطبان گسترده‌تر بتوانند انواع سیستم‌های مبتنی بر اجماع با کیفیت بالاتر را نسبت به آنچه امروز در دسترس هستند توسعه دهند.

در Raft هر گره در یک ماشین حالت تکراری (خوشه سرور) می‌تواند در هر یک از سه حالت، یعنی رهبر، نامزد، دنبال‌کننده بماند.

در شرایط عادی، یک گره می تواند در هر یک از سه حالت فوق باقی بماند. فقط یک رهبر می تواند با مشتری تعامل داشته باشد. هر درخواستی به گره فالوور به گره رهبر هدایت می شود.

ادامه مطلب
مزایا ارز دیجیتال بیت‌ کوین چیست‌ ؟

یک نامزد می تواند برای رهبری شدن درخواست رای کند. یک پیرو فقط به نامزدها یا رهبر پاسخ می دهد.

برای حفظ این وضعیت سرور، الگوریتم Raft زمان را به عبارات کوچک با طول دلخواه تقسیم می کند.

هر عبارت با یک عدد یکنواخت در حال افزایش
مشخص می شود که به آن عدد اصطلاح می گویند.

شماره ترم در پروتکل Raft توسط هر گره حفظ می شود و در هنگام ارتباط بین گره ها ارسال می شود.

هر دوره با یک انتخابات برای تعیین رهبر جدید شروع می شود.

نامزدها برای جمع آوری اکثریت از سایر گره های سرور رای می خواهند.

اگر اکثریت آراء جمع شود، نامزد برای دوره فعلی رهبر می شود.

اگر اکثریت آراء ایجاد نشود، وضعیت رای تقسیمی نامیده می شود و دوره بدون رهبر به پایان می رسد.

از این رو، یک اصطلاح حداکثر می تواند یک رهبر داشته باشد.

زمان‌بندی سرور پروتکل Raft چگونه است؟

‏Raft از وقفه های زمانی انتخاباتی تصادفی استفاده می کند تا اطمینان حاصل کند که آرای تقسیم شده نادر است و به سرعت حل می شود.

برای جلوگیری از تقسیم آرا در وهله اول، وقفه های زمانی انتخابات به طور تصادفی از یک فاصله زمانی ثابت (مثلاً 150 تا 300 میلی ثانیه) انتخاب می شوند.

این کار سرورها را پخش می کند.
از همین مکانیسم برای رسیدگی به آرای تقسیم شده استفاده می شود.

هر کاندیدا در شروع یک انتخابات، زمان انتخابی تصادفی خود را مجدداً شروع می‌کند و قبل از شروع انتخابات بعدی منتظر می‌ماند تا آن زمان سپری شود.

این امر احتمال تقسیم آرای دیگر در انتخابات جدید را کاهش می دهد.

تکرار گزارش در‌پروتکل Raft چگونه است؟

هر درخواست ارسال شده توسط مشتری در Logs of Leader ذخیره می شود.

این لاگ سپس به گره های دیگر (فالوور) کپی می شود. به طور معمول، یک ورودی گزارش شامل سه اطلاعات زیر است:

دستوری که مشتری برای اجرا مشخص کرده است، برای شناسایی موقعیت ورودی در لاگ گره به صورت یک گره Leader RPC در AppendEntries به همه سرورهای دیگر (فالوورها) شلیک می کند تا گزارش های آنها را با Leader فعلی همگام سازی کند.

رهبر به ارسال RPC ها ادامه می دهد تا زمانی که همه دنبال کنندگان با خیال راحت ورودی جدید را در گزارش های خود تکرار کنند.
در الگوریتم مفهوم commit ورود وجود دارد.

ادامه مطلب
معاملات مارجین

هنگامی که اکثر سرورهایی که چند‌گره دارند با موفقیت ورودی های جدید را در گزارش های خود کپی می کنند، متعهد در نظر گرفته می شود.

در این مرحله، رهبر همچنین ورودی را در گزارش خود انجام می دهد تا نشان دهد که با موفقیت تکرار شده است.

تمامی ورودی های قبلی در لاگ نیز به دلایل واضح انجام شده در نظر گرفته می شوند. پس از اینکه ورودی متعهد شد، رهبر ورودی را اجرا می کند و با نتیجه به مشتری پاسخ می دهد.

لازم به ذکر است که این ورودی ها به ترتیب دریافت اجرا می شوند.

اگر دو ورودی در گزارش‌های مختلف (Leader’s و Followers’) دارای فهرست و عبارت یکسان باشند، تضمین می‌شود که یک فرمان را ذخیره می‌کنند و گزارش‌ها تا آن نقطه یکسان هستند.

با این حال، در صورت خراب شدن Leader، گزارش‌ها ممکن است ناسازگار شوند.

نمونه ای از پروتکل Raft

ارزدیجیتال پکسوس (pax-dollar) از پروتکل Raft استفاده می کند.

برای خرید ارزدیجیتال پکسوس هم به وسیله خرید تتر و هم از طریق خرید به صورت ریالی می توانید از طریق سایت و اپلیکیشن صرافی ارزدیجیتال اقدام‌کنید.

Share this...
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
برچسب‌ها :

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

Rating*