Что такое репликация данных в бэкенд-системах? Каковы её цели и основные топологии?

Ответ

Репликация — это процесс создания и синхронизации копий данных на нескольких серверах (узлах). Копия основного сервера называется репликой.

Основные цели репликации:

  1. Отказоустойчивость (High Availability): Если основной сервер (мастер) выходит из строя, система может переключиться на реплику, минимизируя время простоя.
  2. Масштабирование нагрузки (Scalability): Читающие запросы можно распределить между репликами, снижая нагрузку на основной сервер. Это называется масштабированием чтения (read scaling).
  3. Географическое распределение: Размещение реплик ближе к пользователям по всему миру позволяет уменьшить задержку (latency) при доступе к данным.

Основные топологии репликации:

  • Master-Slave (Ведущий-ведомый):

    • Все операции записи (INSERT, UPDATE, DELETE) выполняются на одном сервере — мастере.
    • Мастер передает изменения на один или несколько ведомых серверов (реплик).
    • Реплики обычно используются для чтения данных.
    • Это самая простая и распространенная топология.
  • Master-Master (Ведущий-ведущий):

    • Два или более серверов могут принимать операции записи.
    • Каждый мастер реплицирует свои изменения на другие мастеры.
    • Сложность: Возникает проблема разрешения конфликтов, когда одни и те же данные изменяются одновременно на разных мастерах.

Синхронная vs. Асинхронная репликация

  • Синхронная: Мастер подтверждает операцию записи только после того, как все (или кворум) реплики подтвердили получение изменений.

    • Плюс: Гарантирует высокую консистентность данных.
    • Минус: Увеличивает задержку записи.
  • Асинхронная: Мастер подтверждает запись сразу, а изменения на реплики отправляются в фоновом режиме.

    • Плюс: Низкая задержка записи.
    • Минус: Возможна потеря данных при сбое мастера до того, как изменения дошли до реплик. Возникает лаг репликации (replication lag).