System Design Space

    Глава 87

    Обновлено: 15 февраля 2026 г. в 16:40

    Консенсус: Paxos и Raft

    Прогресс части0/21

    Как системы договариваются о единственном значении: кворумы, двухфазный Paxos и лидер‑ориентированный Raft.

    Связанная книга

    Designing Data‑Intensive Applications

    Глава о консенсусе и репликации — must‑read для понимания Paxos/Raft.

    Читать обзор

    Консенсус — это способ договориться о единственном значении в распределённой системе, несмотря на сбои, задержки и сетевые разделения. Без консенсуса нельзя надёжно выбрать лидера, синхронизировать метаданные или обеспечить линейную запись в кворум‑кластер.

    Фундамент

    TCP протокол

    Консенсус полагается на сетевые раунды и стабильный транспорт.

    Читать обзор

    Где нужен консенсус

    Выбор лидера

    Координация кластера и назначение coordinator/primary.

    Метаданные

    Конфигурации, membership, схема данных и routing.

    Согласованная запись

    Линеаризуемые операции при репликации.

    Paxos

    Paxos — классический алгоритм Лампорта. Он гарантирует выбор единственного значения через двухфазный протокол и кворумы acceptors. В реальных системах часто используется Multi‑Paxos с выделенным лидером.

    Интерактивная схема Paxos

    Выберите шаг — подсветятся участники и сообщения.

    Proposer
    Acceptors
    Learners
    Prepare(n)кворум acceptor‑ов
    Promise(n, v?)ответ proposer‑у
    Accept(n, v)подтверждение значения
    Accepted(n, v)уведомление learner‑ов

    Multi‑Paxos

    Оптимизация Paxos для потока команд: лидер берёт на себя фазу Prepare один раз, а дальше выполняет только Accept‑раунд для каждой записи.

    Что это даёт

    • Меньше сетевых раундов на запись
    • Выше пропускная способность
    • Лидер упрощает прогресс при конфликтах

    Multi‑Paxos: режимы работы

    Нажмите на фазу, чтобы увидеть, как изменяется поток сообщений.

    Стабильный режим

    Для каждой новой записи выполняется только Accept‑раунд — меньше RTT.

    Accept(n, v) в кворум
    Ответы Accepted
    Высокая пропускная способность

    Raft

    Raft проектировался как «понятный консенсус». Он разделяет задачу на выбор лидера, репликацию лога и управление членством. Благодаря этому протокол проще объяснять и реализовывать.

    Raft: состояния узла

    Переключайте состояние — смотрите, как меняются сообщения и роль узла.

    Leader

    Принимает команды клиента и реплицирует их на follower‑ов.

    Client command
    AppendEntries
    Commit index

    Paxos vs Raft

    Paxos

    • Сложнее для понимания и реализации
    • Более формальный и «академичный»
    • Нередко скрыт за Multi‑Paxos

    Raft

    • Проще объяснить команде и поддерживать
    • Явная лидер‑ориентированная модель
    • Используется в etcd, Consul, CockroachDB

    Ключевые выводы

    • Консенсус нужен для согласованного выбора значения в условиях сбоев.
    • Paxos — фундаментальный, но сложный; Raft — инженерно понятный.
    • Оба протокола требуют кворума большинства и устойчивы к частичным сбоям.

    Связанная книга

    Distributed Systems: Principles and Paradigms

    Классический труд по консенсусу и распределённым алгоритмам.

    Читать обзор

    Дальше по теме

    Консенсус делает систему надёжнее, но повышает latency и сложность. Используйте его только там, где действительно нужна строгая согласованность.