الگوریتم اجماع RAFT چیست؟

الگوریتم اجماع RAFT برای بلاکچین های خصوصی و مجوزدار استفاده می شود.

مقدمه و تاریخچه ای از RAFT

Raft الگوریتمی برای اجماع توزیع شده است که توسط دیگو اونگارو (Diego Ongaro)و جان اوسترهوت (John Ousterhout)از دانشگاه استنفورد ایجاد شده است. عامل اصلی ایجاد Raft این واقعیت بود که Paxos ، اگرچه الگوریتم توافق توزیع شده استاندارد برای بیش از یک دهه بود ، اما درک آن بسیار سخت تلقی می شد. بنابراین هدف نویسندگان ارائه یک الگوریتم توافق توزیع شده با درک آسان بود.

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

به منظور درک آسان ، Raft عناصر اصلی اجماع ، مانند انتخاب رهبر(leader) ، تکثیر log ، و ایمنی را از هم جدا می کند ، و درجه انسجام بیشتری را برای کاهش تعداد وضعیت هایی که باید در نظر گرفته شود ، اعمال می کند. نتایج حاصل از مطالعات نشان می دهد که یادگیری Raft برای کاربران آسان تر از Paxos است.

نکته : لاگ یک ساختار برای ذخیره سازی داده که به صورت توالی کاملا مرتب شده بر اساس زمان است

اجماع و ماشین های حالت تکثیر (Replicated state machines) در سیستم های توزیع شده

به طور خلاصه ، اجماع به این معنی است که چندین گره توزیع شده در مورد وضعیت سیستم توافق دارند ، و حتی در صورت خرابی یک ماشین ، سیستم واحدی را به جهان خارج ارائه می دهند. چنین عملکردی بسیار ارزشمند است ، زیرا به ما امکان می دهد از یک ماشین نسبتاً غیر قابل اعتماد (مستعد خرابی و خرابی) استفاده کنیم ، چندین نسخه از آن را مستقر کنیم و یک سیستم نسبتاً قابل اعتماد بدست آوریم ، که می تواند با خرابی ماشین های مختلف کنار بیاید.

جایگاه اجماع در ماشین های حالت تکثیر
جایگاه اجماع در ماشین های حالت تکثیر


برای ارائه جزئیات بیشتر ، از مدلی به نام Replicated State Machines استفاده می شود. منظور از ماشین وضعیت نوعی برنامه است که به درخواست کلاینت خارجی پاسخ می دهد. ماشین های حالت replicated به این معنی است که با در دست گرفتن کنترل یکی از ماشین های حالت و اجرای چندین نسخه از آن بر روی سایر ماشین ها ، قابلیت اطمینان سیستم را افزایش می دهیم. هدف این است که هر یک از ماشین های تکثیر شده همان دستورات را به همان ترتیب اجرا کنند ، بنابراین وضعیت همه ماشینها همگام سازی می شوند. سیستم تا زمانی که اکثر ماشین ها روشن باشند و در مورد وضعیت فعلی توافق داشته باشند ، فعال است.

وضعیت های یک گره

هر گره در cluster می تواند در یکی از 3 حالت باشد: رهبر(leader) ، کاندید (candidate ) یا پیرو(follower)

  • Leader: یک گره فعال است که در حال حاضر cluster را هدایت می کند. درخواست های کلاینت را کنترل می کند و وضعیت را در گره های follower کپی یا تکثیر می کند.
  • کاندید(candidate ): گره فعالی است که تلاش می کند با ارسال درخواست رأی به سایر گره ها رهبر شود.
  • پیرو(follower): گره ای غیرفعال است که فقط به RPCc پاسخ می دهد و هیچ ارتباطی را آغاز نمی کند.

سیستم از وضعیت follower آغاز به کار می کند.بعد از مدتی اگر follower چیزی از سمت لیدر دریافت نکند. به وضعیت کاندید می رود.نودها برای انتخاب لیدر بعدی رای گیری می کنند.داوطلبی که بیشترین رای را بیاورد لیدر بعدی خواهد بود.در غیر این صورت به وضعیت follower بر میگردد.

بیشتر بخوانید : بلاک چین چگونه کار می کند؟
انتخاب لیدر در اجماع Raft
انتخاب لیدر در اجماع Raft


زمان به چند دوره (Term) تقسیم می شود. هر دوره با انتخاب رهبر آغاز می شود و یک رهبر در تمام دوره سلطنت می کند.هر دوره با اعداد صحیح مثبت نشان داده می شوند . اگر گره ای (حتی رهبر) پیامی حاوی دوره زمانی بالاتر از دوره خود دریافت کند ، بلافاصله به وضعیت follower برمی گردد و شماره دوره خود را به روز می کند. گره ها تعداد دوره های خود را بر روی دیسک ذخیره می کنند ، بنابراین در صورت خرابی یا راه اندازی مجدد می توان آن را بازیابی کرد.

الگوریتم اجماع RAFT معمولا در بلاکچین های خصوصی و نیازمند به مجور دسترسی به کار گرفته می‌‌شود.

مانند R3Corda و Quorum

منبع: factcoins.com