📜

Алгоритм Консенсуса Raft

Jul 17, 2024

Лекция: Алгоритм Консенсуса Raft

Введение

  • Приветствие от Дениса на канале Литл Анна
  • Обсуждение бизнес-процессов и информационных систем
  • Тема лекции: Алгоритм консенсуса на примере Raft

Консенсус

  • Консенсус: группа участников принимает решение, учитывая мнения большинства
  • Важность в информационных системах:
    • Определение правильных данных
    • Хранение данных на нескольких серверах
    • Учет непостоянства IT технологий (например, сбои серверов)
  • Основная цель: создание надежной системы из ненадежных компонентов

Алгоритм Raft

  • Протокол консенсуса в сетях ненадежных вычислений
  • Пример: база данных с одной нодой (нет нужды в консенсусе)
  • Проблема консенсуса: множественные ноды и сервера баз данных

Состояния нод:

  1. Последователь Follower
  2. Кандидат Candidate
  3. Лидер Leader
  • Начальное состояние всех нод - последователь
  • Процедура выбора кандидата и лидера:
    • Ноды начинают с состояния последователя
    • При отсутствии лидера переходят к состоянию кандидата
    • Кандидаты рассылают запросы на голосование
    • Получив большинство голосов, кандидат становится лидером

Работа лидера

  • Изменения поступают через лидера
  • Лидер записывает изменения в лог и рассылает их остальным нодам
  • При подтверждении от большинства нод, изменение фиксируется
  • Процесс называется публикацией логов

Таймауты выбора лидера

  • Два таймаута:
    1. Таймаут выборов (150-300 секунд)
    2. Периодичность рассылки лидерских сообщений Heartbeat Timeout
  • При получении сердцебиения, ноды сбрасывают таймауты
  • При отключении лидера, происходит переголосование
  • Если две ноды одновременно становятся кандидатами, происходит распределение голосов, процесс перезапускается при отсутствии большинства

Репликация логов и обработка сетевых ошибок

  • Пример записи значений (5, затем +2)
  • Обработка сетевых ошибок:
    • Кластер разделяется, часть нод теряет связь
    • Каждая часть выбирает своего лидера
    • Клиенты шлют запросы различным нодам
    • Запись фиксируется только при большинстве голосов
    • При восстановлении связи, некорректные записи удаляются, обновляется состояние кластера

Заключение

  • Ссылка на научную работу по алгоритму Raft
  • Визуализация работы алгоритма
  • Призыв к подписке и оставлению комментариев