Raft - это алгоритм консенсуса, разработанный для управления реплицированным журналом команд в распределенных системах. Он был создан Диего Онгаро и Джоном Оустерхаутом в 2013 году в рамках их исследований в Стэнфорде. Raft предназначен для замены алгоритма Paxos, который сложен для понимания и реализации.
Raft алгоритм был разработан с акцентом на понятность и простоту, что делает его относительно легким для изучения и реализации. Он обеспечивает безопасность (принятие решений только при достижении консенсуса между узлами), живучесть (восстановление работы после сбоев) и активное управление конфигурацией (динамическое добавление и удаление узлов).
Алгоритм Raft основан на концепции "лидерства" и состоит из нескольких основных элементов:
1. Выборы лидера: Узлы в системе голосуют за лидера, который будет отвечать за обработку и репликацию команд в журнале. Лидер выбирается на основе случайных таймаутов, чтобы избежать конфликтов и одновременного выбора нескольких лидеров.
2. Лог реп