الگوريتم توافق Raft

آموزش جامع بلاك چين و ارزهاي ديجيتال

الگوريتم اجماع 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

 

 

 

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

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

مانند R3Corda  و Quorum

 

منبعfactcoins.com