Raft — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 5: Строка 5:
 
Также одна из целей Raft — быть понятным.
 
Также одна из целей Raft — быть понятным.
 
Можно прочитать [http://blog.egrik.ru/2015/10/raft.html беглое описание на русском], посмотреть [http://thesecretlivesofdata.com/raft/ интерактивную презентацию] для введения и посмотреть [https://raft.github.io/ официальный сайт] (с визуализацией и возможностью поиграться) и [https://raft.github.io/raft.pdf исходную статью] (там чётко выписано состояние процессов, все сообщения и правила).
 
Можно прочитать [http://blog.egrik.ru/2015/10/raft.html беглое описание на русском], посмотреть [http://thesecretlivesofdata.com/raft/ интерактивную презентацию] для введения и посмотреть [https://raft.github.io/ официальный сайт] (с визуализацией и возможностью поиграться) и [https://raft.github.io/raft.pdf исходную статью] (там чётко выписано состояние процессов, все сообщения и правила).
 +
 +
В визуализации точкой помечен <code>matchIndex[]</code> (лидер знает, что до этого места лог follower'а совпадает с логом лидера), а стрелочкой — <code>nextIndex[]</code> (что лидер попробует прислать follower'у).
  
 
== Алгоритм ==
 
== Алгоритм ==

Версия 11:04, 4 июня 2019

Raft — алгоритм для решения задачи Replicated State Machine. В отличие от Paxos он не опускает деталей: помимо решения задачи консенсуса подробно описывает и выбор лидера, и синхронизацию журнала операций между репликами.

Также одна из целей Raft — быть понятным. Можно прочитать беглое описание на русском, посмотреть интерактивную презентацию для введения и посмотреть официальный сайт (с визуализацией и возможностью поиграться) и исходную статью (там чётко выписано состояние процессов, все сообщения и правила).

В визуализации точкой помечен matchIndex[] (лидер знает, что до этого места лог follower'а совпадает с логом лидера), а стрелочкой — nextIndex[] (что лидер попробует прислать follower'у).

Алгоритм

Состояние узлов

Выбор лидера

Репликация логов