> Какие виды репликаций существуют (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Employcity

Стек: Go

> Пример ответа

В распределённых системах и базах данных выделяют несколько основных видов репликации, которые применимы и в Go-разработке (например, при работе с etcd, CockroachDB или собственными решениями):

  1. Синхронная репликация - мастер ждёт подтверждения от всех реплик перед фиксацией записи. Гарантирует строгую согласованность, но увеличивает задержку. Используется в системах, где важна целостность данных (например, Raft в etcd).

  2. Асинхронная репликация - мастер отвечает клиенту сразу, а данные распространяются на реплики позже. Высокая производительность, но возможна потеря данных при сбое мастера. Типична для PostgreSQL, MySQL.

  3. Полусинхронная репликация - компромисс: мастер ждёт подтверждения хотя бы от одной реплики, остальные получают данные асинхронно. Используется в кластерных решениях.

  4. Мультимастерная репликация - несколько узлов принимают записи, конфликты разрешаются на уровне приложения или алгоритмами (например, CRDT). Пример: CockroachDB с протоколом Raft.

  5. Логическая репликация - передача изменений на уровне строк или операций (WAL). Гибкая, позволяет фильтровать данные. Реализована в PostgreSQL через логическое декодирование.

  6. Физическая репликация - копирование блоков данных на уровне диска. Проще, но требует идентичной версии СУБД. Используется в MySQL Group Replication.

В Go-стеке часто применяют Raft (консенсусная репликация) для построения отказоустойчивых сервисов, а также паттерн "Event Sourcing" с репликацией событий через брокеры (Kafka, NATS).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью