Ответ
Да, в проекте использовался API Gateway на основе Spring Cloud Gateway.
Роль в архитектуре: Он выступал как единая точка входа для всех клиентских запросов к микросервисам.
Ключевые функции, которые мы реализовали:
- Динамическая маршрутизация на основе пути запроса.
- Балансировка нагрузки (через интеграцию с Service Discovery, например, Eureka).
- Аутентификация и авторизация (проверка JWT-токенов).
- Rate Limiting для защиты от чрезмерной нагрузки.
- Логирование запросов и ответов (centralized logging).
Пример конфигурации маршрута (application.yml):
spring:
cloud:
gateway:
routes:
- id: product-service
uri: lb://product-service # lb:// указывает на балансировку нагрузки
predicates:
- Path=/api/products/**
filters:
- StripPrefix=1 # Удаляет первый сегмент пути (/api) перед проксированием
- AddRequestHeader=X-User-Id, ${user.id}
Вывод: API Gateway помог декомпозировать cross-cutting concerns (сквозную функциональность) из бизнес-сервисов, упростив их код и централизовав управление.