Вопрос проверяет знание практических архитектурных шаблонов, используемых при построении распределённых систем.
В распределённых системах используют паттерны: load balancing, replication, sharding, CQRS, event sourcing, circuit breaker, saga pattern, retry/backoff, pub/sub, eventual consistency. Эти шаблоны помогают проектировать устойчивые, надёжные и масштабируемые системы.
Распределённые системы сложны из-за сетевых задержек, отказов, непредсказуемости и необходимости консистентности. Паттерны помогают структурировать архитектуру и решить типовые проблемы.
Балансировка нагрузки распределяет запросы между узлами.
Чаще всего используется в API-слоях и gateway.
Преимущества:
уменьшение нагрузки на один сервер;
способность переживать падение узлов.
Определение:
Репликация — дублирование данных на нескольких узлах.
Варианты:
master → replica
multi-master
quorum replication
Используется для ускорения чтений и повышения доступности.
Разделение данных на сегменты.
Позволяет:
масштабировать базы горизонтально;
распределять нагрузку;
избегать слишком больших таблиц.
Разделяет операции чтения и записи:
команда — изменение состояния;
запрос — получение готовых данных.
Полезно для:
высоких нагрузок на чтение;
сложных моделей данных.
Состояние системы хранится как поток событий.
Преимущества:
аудит;
возможность "прокручивать" историю;
простота асинхронных процессов.
Используется вместо распределённых транзакций.
Разбивает бизнес-процесс на шаги с компенсирующими операциями.
Применяется в:
e-commerce;
платежных системах;
сервисах с мутирующими операциями.
Паттерн, предотвращающий каскадные падения при недоступности сервисов.
Если сервис недоступен:
отключает вызовы к нему;
позже пытается "проверить", восстановился ли он.
Корректная стратегия повторных попыток:
backoff (длительность ожидания растёт);
jitter (рандомизация времени).
Это предотвращает перегрузку упавшего сервиса.
Публикация/подписка через Kafka, RabbitMQ.
Позволяет сервисам реагировать на события, не зная друг о друге.
При проектировании распределённых систем широко используют паттерны: sharding, replication, CQRS, event sourcing, saga, circuit breaker и pub/sub. Эти решения делают систему устойчивой, масштабируемой и корректной при больших нагрузках.