The Raft Consensus Algorithm (2015)
Raft — алгоритм консенсуса, проще в понимании, чем Paxos, с той же отказоустойчивостью и производительностью. Он разбит на независимые подзадачи и покрывает все практические аспекты.
Консенсус — соглашение нескольких серверов о значении; решение становится окончательным. Кластер из 5 машин работает, пока живы ≥3. Используется в реплицированных конечных автоматах: каждый сервер имеет журнал команд, которые консенсус выстраивает в одинаковом порядке, чтобы все автоматы оставались синхронизированы.
Визуализации
- RaftScope — интерактивная пятисерверная модель в браузере.
- The Secret Lives of Data — более мягкое, пошаговое объяснение.
Публикации
- Основная статья: In Search of an Understandable Consensus Algorithm (USENIX ATC’14 Best Paper).
- Диссертация Диего Онгаро: расширенное описание, формальная спецификация TLA+, упрощённое изменение состава кластера.
- Дополнительные работы: верификация (Woos et al., 2016), фреймворк Verdi (Wilcox et al., 2015), автогенерация кода (Evrard & Lang, 2015), анализ Raft (Howard, 2014–2015).
Доклады
Комментарии (36)
- Участники обсудили, что Raft сделал консенсус доступным и понятным, в отличие от Paxos.
- Подчеркнули важность спецификации и анимированной демонстрации Диего Онгаро.
- Упомянули альтернативы и твики Raft из статьи Алекса Миллера.
- Поделились опытом применения Raft в играх и промышленных системах.
- Уточнили, что при сетевом разделении «зомби»-лидер не сможет закоммитить запись, и клиенту не нужно дополнительно ждать.