Какие знаешь особенности работы с репликами

«Какие знаешь особенности работы с репликами» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go работа с репликами (например, в БД или распределённых системах) требует учёта нескольких аспектов:

  1. Консистентность чтения – при работе с репликами возможны задержки репликации. Используйте ReadConcern или явные хинты для чтения с мастер-ноды, если нужны актуальные данные.
// Пример с MongoDB
opts := options.Find().SetReadConcern(readconcern.Majority())
cursor, err := collection.Find(ctx, filter, opts)
  1. Ретри и таймауты – реплики могут быть временно недоступны. Добавляйте retry-логику с экспоненциальным откатом.

  2. Распределённые транзакции – в multi-replica средах используйте паттерны вроде 2PC или Saga для согласованности данных.

  3. Service Discovery – динамическое обнаружение реплик через Consul, etcd или k8s DNS.

  4. Load Balancing – балансировка запросов между репликами (round-robin, least connections).

Важно мониторить лаг репликации и иметь fallback на мастер при проблемах.