Найти в Дзене
IT for Dummies

АААСИНХРОННАЯ Репликация и ее сложности.

Асинхронная репликация — это механизм, при котором данные сначала записываются на основное хранилище, и только потом, с задержкой, передаются и записываются на вторичное хранилище (реплику). Повторим? Асинхронная репликация — это механизм копирования данных с первичной (основной) системы хранения на вторичную (реплицированную), при котором запись в удалённую копию происходит с задержкой относительно записи в основную. Это означает, что подтверждение клиенту отправляется до того, как данные будут записаны на удалённую площадку. (как будто бы - система тебе #$здит) Как работает: Используемые технологии и протоколы Snap-based replication (на снимках) — репликация делается по снапшотам (например, каждую минуту, каждый час). Journaling / Log shipping — репликация изменений с помощью журналов транзакций. IP-репликация — по протоколу TCP/IP (например, через iSCSI, NFS, FCIP). Object storage replication — у облачных систем типа Ceph, MinIO. Преимущества Недостатки На первый взгляд может показа
Оглавление

Асинхронная репликация — это механизм, при котором данные сначала записываются на основное хранилище, и только потом, с задержкой, передаются и записываются на вторичное хранилище (реплику).

Повторим?

Асинхронная репликация — это механизм копирования данных с первичной (основной) системы хранения на вторичную (реплицированную), при котором запись в удалённую копию происходит с задержкой относительно записи в основную. Это означает, что подтверждение клиенту отправляется до того, как данные будут записаны на удалённую площадку.

(как будто бы - система тебе #$здит)

Как работает:

  1. Запись данных от приложения поступает в первичный массив.
  2. Данные фиксируются в кэше или на диске.
  3. СХД отправляет подтверждение клиенту: операция завершена.
  4. Затем система отправляет копию данных на удалённую СХД (в фоне).
  5. Данные периодически синхронизируются, в зависимости от политики (по расписанию или при накоплении определённого объёма данных).

Используемые технологии и протоколы

Snap-based replication (на снимках) — репликация делается по снапшотам (например, каждую минуту, каждый час).

Journaling / Log shipping — репликация изменений с помощью журналов транзакций.

IP-репликация — по протоколу TCP/IP (например, через iSCSI, NFS, FCIP).

Object storage replication — у облачных систем типа Ceph, MinIO.

Преимущества

  • Не требует низкой задержки сети.
  • Можно использовать дешёвые каналы передачи данных.
  • Подходит для географически распределённых систем.
  • Не влияет напрямую на производительность основного массива.

Недостатки

  • Возможна потеря данных, если основной узел выйдет из строя до того, как данные дойдут до реплики.
  • Требуется дополнительная логика для согласования реплик и восстановления после сбоя.
  • Может быть непригодна для критичных к потере данных сценариев (банковская транзакционная система, ЦОД горячего резервирования и т.п.).

На первый взгляд может показаться, что асинхронная репликация проще, чем синхронная, поскольку в ней нет необходимости ожидать подтверждение с удалённого узла. Однако с точки зрения реализации, асинхронная репликация технически сложнее.

1. Гарантированная консистентность данных

Проблема:

Асинхронная реплика отстаёт от основного сайта — это создает окно уязвимости (RPO > 0). В случае сбоя основного узла нужно понять:

  • Какие данные успели попасть в реплику?
  • Какие нет?
  • Что откатить?
  • Как избежать "split-brain"?
Split-brain (расщепление мозга) — это сбойное состояние в кластере или системе репликации, при котором две (или более) стороны кластера считают себя активными (primary/master) и продолжают независимо обрабатывать запросы. Это ведёт к рассогласованию данных, что крайне опасно для целостности хранилища.

СХД и репликации split-brain возникает, когда:

  1. Есть два реплицированных хранилища (например, основное и вторичное).
  2. Теряется связь между ними, но при этом:
  3. Обе стороны продолжают принимать запросы на запись или обслуживание I/O, полагая, что они — "активные".

Примеры причин:

  • Обрыв сети между дата-центрами (network partition). - как будто бы постоянно в 2025 году в РФ
  • Сбой канала heartbeat между контроллерами/узлами.
  • Ошибка в логике failover (например, отсутствует quorum-сервис).
  • Отсутствие арбитра или tie-breaker механизма (например, третьего узла, который решает, кто действительно главный).

2. Управление отставанием (lag management)

Асинхронная репликация требует:

  • Мониторинга задержки (replication lag).
  • Алгоритмов для динамического управления нагрузкой (троттлинг, приоритизация).
  • Плавного восстановления после сбоев в сети или накопления очередей.

3. Буферизация и обработка очередей

Поскольку данные не отправляются мгновенно, они накапливаются в буферах:

  • Буферы должны быть устойчивы к сбоям (persistent queues).
  • Важно обеспечить порядок операций (write ordering).
  • При сбое нужно корректно переиграть очередь, не продублировав операции.

4. Режимы восстановления (failback/recovery)

После аварии асинхронной реплики необходимо:

  • Выполнить ресинхронизацию с основной системой.
  • Решить конфликты версий (например, данные в основном сайте были, но не дошли до реплики).
  • В ряде случаев это требует журналирования на стороне клиента, или дополнительных механизмов сравнения блоков.

5. Сложность в многоузловых кластерах

В сценариях типа:

  • "Мастер → несколько реплик"
  • "Active → DR + Backup"

Асинхронная репликация требует отдельного состояния и потока данных для каждого получателя. Это усложняет:

  • Мониторинг
  • Управление очередями
  • Восстановление

Вывод

Хотя синхронная репликация сложна по сетевым и производительным требованиям (нужна низкая задержка и высокая доступность), ее реализация проще:

всё либо записалось, либо нет.

А асинхронная репликация, несмотря на кажущуюся простоту, требует гораздо более развитой логики хранения, очередей, журналов и механизмов восстановления, чтобы гарантировать корректность и управляемость реплик.

Да брат! Ты не запутался! Ты верно понял - реализация синхронной и асинхронной репликации — это разные процессы с точки зрения архитектуры, логики работы, алгоритмов согласования и механизмов защиты данных. Вот ключевые различия:

Синхронная репликация (synchronous replication):

Основной принцип:

  • Запись считается завершённой только после подтверждения от всех целевых систем (реплик).
  • То есть первичная СХД и вторичная СХД согласованны на каждый момент времени.

Архитектура:

  • Требуется низкая латентность и высокая надёжность канала.
  • Используются протоколы с жёсткой координацией, например через write acknowledgment от обеих сторонах.

Пример:

  • Huawei HyperMetro, Dell EMC VPLEX Metro, Hitachi GAD, NetApp MetroCluster, Storage ARGO.TECH

Преимущества:

  • Гарантированное отсутствие потерь данных (RPO = 0).
  • Высокая доступность при аварийном переключении (если реализован автоматический failover).

Сложности:

  • Требует синхронизации I/O, высокой скорости каналов (например, < 5 мс RTT).
  • Возможны задержки в транзакциях из-за необходимости подтверждения всех узлов.

Асинхронная репликация (asynchronous replication):

Основной принцип:

  • Запись подтверждается немедленно, а синхронизация с репликой происходит позже — с определённой задержкой.
  • Реплика всегда немного отстаёт от основной СХД.

Архитектура:

  • Используется буферизация изменений (журналирование или snapshot-репликация).
  • Механизмы дельта-синхронизации, контрольные точки, блоковые сравнения и т. д.

Пример:

  • Huawei BCManager, NetApp SnapMirror, Dell EMC RecoverPoint, ZFS send/receive, Storage ARGO.TECH, Ceph RBD mirroring.

Преимущества:

  • Можно использовать на больших расстояниях (RTT > 100 мс).
  • Не влияет на производительность основной СХД.

Сложности:

  • Потенциальная потеря данных при аварии (RPO > 0).
  • Сложнее реализовать консистентное восстановление, особенно при высоких объемах изменений.
  • Более сложная логика журналирования, кэширования, ретрансляции и проверки целостности данных.
  • Более сложные механизмы управления split-brain, consistency groups, recovery plans.

Почему реализация асинхронной репликации сложнее?

Консистентность:

Нужно обеспечивать точку согласованности в журнале — особенно для приложений, требующих crash consistency.

Буферизация и отложенная передача:

Нужны надёжные механизмы хранения и передачи данных, даже при нестабильных сетях.

Восстановление и сверка:

Если канал был прерван — сложный алгоритм дельта-сравнения или перезапуска синхронизации.

Порядок операций:

Требуется строгая доставка данных в том порядке, в котором они были записаны, несмотря на возможные сетевые коллизии и задержки.

Failback/failover:

Нужно решать проблему выбора актуального источника после сбоя (особенно если split-brain или нет автоматического quorum-а).

Продолжение будет? КОНЕЧНО БРАТ ! КОНЕЧНО !