TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.83K subscribers
Post #3240 1.86K
Как работает Single-Leader Replication (Репликация с одним лидером)
(продолжение предыдущего поста)

По мере роста нагрузки на приложение на первый лан выходят такие характеристики как отказоустойчивость и надежность. И одним из способов повышения отказоустойчивости и надежности является "Репликация с одним лидером" или Single-Leader Replication. Рассмотрим, как она работает.

1. Назначение ролей узлов

В системе Single-Leader Replication:
* Один узел назначается лидером (leader) — он отвечает за обработку всех операций записи (DML-запросов: INSERT, UPDATE, DELETE).
* Остальные узлы называются последователями (followers) — они реплицируют изменения, сделанные лидером, и могут отвечать на запросы чтения.

2. Обработка операций записи (write operations)

* Все операции записи направляются исключительно на лидер.
* Лидер записывает изменения в своё локальное хранилище.
* Затем лидер распространяет изменения на все последователи — это может происходить асинхронно или синхронно:
* Асинхронная репликация: лидер сразу подтверждает успешную запись, а затем отправляет изменения последователям. Быстрее, но есть риск потери данных, если лидер выйдет из строя до отправки изменений.
* Синхронная репликация: лидер ждёт подтверждения от всех последователей, что они записали изменения, прежде чем подтвердить успешную запись. Надежнее, но медленнее.
* Также существует полусинхронная репликация, когда лидер ждёт подтверждения от заданного количества последователей.

3. Обработка операций чтения (read operations)

* Запросы на чтение могут направляться как к лидеру, так и к последователям:
* Чтение с лидера: обеспечивает строгую согласованность (strong consistency) — клиент всегда получает самые актуальные данные.
* Чтение с последователей: может привести к окончательной согласованности (eventual consistency) — данные могут быть немного устаревшими, пока последователи не обновятся. Задержка репликации может составлять от нескольких секунд до нескольких минут.

4. Отказоустойчивость (failover)

* Если лидер выходит из строя, один из последователей автоматически становится новым лидером.
* Клиенты перенастраиваются для отправки записей новому лидеру.
* Остальные последователи начинают получать изменения данных от нового лидера.
* При этом возможны проблемы:
* Если использовалась асинхронная репликация, новый лидер может не получить все записи от старого лидера.
* Возможен сценарий «split brain» (расщеплённый мозг), когда старый лидер возвращается в сеть и считает себя действующим лидером.

5. Распределение нагрузки

* Добавление новых последователей помогает распределить нагрузку на чтение — больше узлов могут отвечать на запросы чтения.
* Однако пропускная способность записи (write throughput) не увеличивается, так как все операции записи по-прежнему проходят через одного лидера.

6. Репликация изменений

* Последователи получают журнал изменений (log) от лидера и применяют их к своей локальной копии базы данных.
* Если последователь выходит из строя, он может восстановиться, запросив у лидера все изменения, произошедшие с момента последней транзакции.

7. Итоги

Single-Leader Replication обеспечивает:
* Централизованную обработку записей через одного лидера.
* Распределение нагрузки чтения между последователями.
* Отказоустойчивость за счёт автоматического повышения последователя до лидера при сбое.
* Гибкость в выборе стратегии репликации (асинхронная, синхронная, полусинхронная) в зависимости от требований к скорости и надёжности.
Telegram METANIT.COM Как работает Single-Leader Replication (Репликация с одним лидером) (продолжение в следующем посте)
  • ❤ 5
  • 👍 4
  • 🔥 2
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →