Связанная книга
Designing Data‑Intensive Applications
Глава о консенсусе и репликации — must‑read для понимания Paxos/Raft.
Консенсус — это способ договориться о единственном значении в распределённой системе, несмотря на сбои, задержки и сетевые разделения. Без консенсуса нельзя надёжно выбрать лидера, синхронизировать метаданные или обеспечить линейную запись в кворум‑кластер.
Фундамент
TCP протокол
Консенсус полагается на сетевые раунды и стабильный транспорт.
Где нужен консенсус
Выбор лидера
Координация кластера и назначение coordinator/primary.
Метаданные
Конфигурации, membership, схема данных и routing.
Согласованная запись
Линеаризуемые операции при репликации.
Paxos
Paxos — классический алгоритм Лампорта. Он гарантирует выбор единственного значения через двухфазный протокол и кворумы acceptors. В реальных системах часто используется Multi‑Paxos с выделенным лидером.
Интерактивная схема Paxos
Выберите шаг — подсветятся участники и сообщения.
Multi‑Paxos
Оптимизация Paxos для потока команд: лидер берёт на себя фазу Prepare один раз, а дальше выполняет только Accept‑раунд для каждой записи.
Что это даёт
- Меньше сетевых раундов на запись
- Выше пропускная способность
- Лидер упрощает прогресс при конфликтах
Multi‑Paxos: режимы работы
Нажмите на фазу, чтобы увидеть, как изменяется поток сообщений.
Для каждой новой записи выполняется только Accept‑раунд — меньше RTT.
Raft
Raft проектировался как «понятный консенсус». Он разделяет задачу на выбор лидера, репликацию лога и управление членством. Благодаря этому протокол проще объяснять и реализовывать.
Raft: состояния узла
Переключайте состояние — смотрите, как меняются сообщения и роль узла.
Принимает команды клиента и реплицирует их на follower‑ов.
Paxos vs Raft
Paxos
- Сложнее для понимания и реализации
- Более формальный и «академичный»
- Нередко скрыт за Multi‑Paxos
Raft
- Проще объяснить команде и поддерживать
- Явная лидер‑ориентированная модель
- Используется в etcd, Consul, CockroachDB
Ключевые выводы
- Консенсус нужен для согласованного выбора значения в условиях сбоев.
- Paxos — фундаментальный, но сложный; Raft — инженерно понятный.
- Оба протокола требуют кворума большинства и устойчивы к частичным сбоям.
Связанная книга
Distributed Systems: Principles and Paradigms
Классический труд по консенсусу и распределённым алгоритмам.
Дальше по теме
Jepsen и модели консистентности
Как тестируются гарантии консистентности и где в них место консенсуса.
Примеры в системах
etcd/Consul (Raft), ZooKeeper (Zab), Cassandra (Paxos для LWT).
Консенсус делает систему надёжнее, но повышает latency и сложность. Используйте его только там, где действительно нужна строгая согласованность.
