Вопрос проверяет знание архитектурных паттернов, применяемых при проектировании микросервисов и распределённых систем.
В микросервисной архитектуре используются паттерны API Gateway, Service Discovery, Circuit Breaker, Saga, CQRS, Event Sourcing, Bulkhead, Strangler Fig и другие.
Они помогают управлять коммуникацией между сервисами, обрабатывать ошибки, обеспечивать надёжность и поддерживать согласованность данных.
Каждый паттерн решает свою проблему: например, Circuit Breaker предотвращает каскадные ошибки, а Saga координирует распределённые транзакции.
Эти паттерны делают систему более устойчивой, масштабируемой и гибкой к изменениям.
Микросервисы — это набор независимых сервисов, которые работают вместе через сеть.
В такой архитектуре возникает множество сложностей: как сервисы находят друг друга, как обеспечивать надёжность, как работать с распределёнными транзакциями. Для решения этих задач используются специальные архитектурные паттерны.
Единая точка входа для всех клиентов.
Задачи:
маршрутизация
аутентификация
rate limiting
агрегация данных из нескольких сервисов
Пример: Kong, Traefik, Nginx.
Сервисы должны находить друг друга автоматически.
Используются системы:
Consul
Eureka
Kubernetes Service Discovery
Защищает систему от цепных ошибок.
Принцип:
если сервис А перестал получать ответы от сервиса B
Circuit Breaker "размыкается", блокируя запросы
предотвращает перегрузку и падение всей системы
Реализация: Hystrix, resilience4j.
Позволяет выполнять транзакции, состоящие из шагов в разных сервисах.
Вместо одной большой транзакции — цепочка локальных действий.
Два вида:
choreography (через события, без координатора)
orchestration (есть координатор)
Состояние системы хранится не в виде текущих данных, а в виде событий.
Система восстанавливает текущее состояние путём применения всех событий.
Используется вместе с Kafka.
Разделение модели чтения и записи.
Преимущества:
высокая производительность чтения
независимые модели данных для разных задач
Разделяет ресурсы, предотвращая "затопление" всей системы при перегрузке одного сервиса.
Паттерн постепенной миграции монолита в микросервисы.
Для e-commerce:
заказ создаётся через API Gateway
сервис Order публикует событие в Kafka
сервис Payment обрабатывает оплату
сервис Inventory уменьшает остаток товара
Saga координирует всё через события
Микросервисная архитектура требует использования устойчивых паттернов, чтобы обеспечить надёжность, согласованность данных и масштабируемость. Правильные паттерны делают систему стабильной при больших нагрузках и частых изменениях.