Проект Explore With Me из 17 спринта, который разбит на микросевисы. Добавлены сервер обнаружения, сервер конфигурации и шлюз. Функционал остался прежним: управление событиями, пользователями, запросами на участие, комментариями и статистикой.
Список микросервисов, на которые разделен проект:
-
stats-server:
- хранит и предоставляет статистику по просмотрам событий
-
compilation-service:
- управляет подборками событий: создание, обновление, удаление, получение
-
event-service:
- управляет событиями: создание, обновление, публикация, получение (админ, приватный, публичный апи)
- включает в себя работу с категориями, локациями и комментариями
-
request-service:
- обрабатывает запросы на участие в событиях: создание, отмена, подтверждение/отклонение
-
user-service:
- управляет пользователями: создание, удаление, получение
- discovery-server (Eureka Server): сервер обнаружения, все микросервисы регистрируются здесь для динамического обнаружения
- Порт: 8761.
- config-server: централизованное управление настройками
- Порт: автоматически.
- gateway-server (Spring Cloud Gateway): шлюз для маршрутизации внешних запросов к сервисам, использует Eureka для маршрутизации по именам сервисов
- Порт: 8080.
- Маршруты: определяют пути для каждого сервиса (например,
/admin/events/**→ event-service)
- обнаружение сервисов: все сервисы регистрируются в Eureka
- внутреннее взаимодействие: через Feign-клиенты
- база данных: каждый сервис имеет свою схему в базе данных
- конфигурация: через Config Server
внутренний апи реализован через Feign-интерфейсы
-
EventClient (event-service):
GET /internal/events/{eventId}: получить событие по idGET /internal/events?ids={list}: получить список событий
-
RequestClient (request-service):
GET /internal/requests/confirmed-many?eventIds={list}: получить подтвержденные запросы для списка событийGET /internal/requests/confirmed-single?eventId={id}: получить подтвержденные запросы для одного события
-
UserClient (user-service):
GET /internal/users?ids={list}: получить список пользователейGET /internal/users/{userId}: получить пользователя по id
внешний апи доступен через шлюз gateway-server на порту 8080