Проект реализован по принципам микросервисной архитектуры и включает в себя следующие сервисы:
category-service— управление категориями событийevent-service— публикация, модерация, поиск событий, логика взаимодействия с пользователямиrequest-service— управление заявками на участие в событияхuser-service— управление пользователямиstats-server— сбор и предоставление статистики по просмотрам и обращениям к API
- Не зависит от других сервисов
Обращается к:
user-service— получение информации об инициаторе событияrequest-service— получение информации об одобренных заявкахcategory-service— получение информации о категории событияstats-server— сохранение и получение статистики просмотров
Обращается к:
user-service— проверка данных о пользователеevent-service— получение информации о событиях и проверка лимитовcategory-service— сопутствующая валидация
- Вызывается из
event-serviceиrequest-service
- Автономный сервис
- Собирает и предоставляет статистику посещений (эндпоинты, IP, количество просмотров и др.)
-
Внешнее API (
main-api) — спецификация REST-интерфейсов для фронтенда и публичных клиентов
https://github.com/educational1234/java-plus-graduation/blob/main/ewm-main-service-spec.json -
Внутреннее API (
stats-server) — спецификация эндпоинтов статистического сервиса
https://github.com/educational1234/java-plus-graduation/blob/main/ewm-stats-service-spec.json
- Вся конфигурация централизована через
config-server, основанный наspring-cloud-configи размещённый в модулеinfra - Используются профили
devиprod - Настройка осуществляется через локальный репозиторий с конфигурационными файлами
application.yml
- Общие DTO и контракты вынесены в отдельный модуль
interaction-api - Модуль подключается как зависимость ко всем микросервисам
- DTO и интерфейсы используются в Feign-клиентах для упрощённого и безопасного взаимодействия между сервисами
- Java 21
- Spring Boot 3.3
- Spring Cloud
- PostgreSQL
- Apache Kafka
- Feign
- Eureka Discovery
- Docker
- Maven
- MapStruct