Он позволяет пользователям делиться информацией об интересных событиях и находить компанию для участия в них.
Проект разработан по микросервисной архитектуре и состоит из следующих модулей и сервисов:
Содержит основные сервисы, отвечающие за бизнес-логику приложения:
- event-service — управление событиями, категориями и подборками событий
- user-service — управление пользователями
- request-service — управление заявками на участие в событиях
- comment-service — управление комментариями к событиям
- interaction-api — общие DTO, типы ошибок, API клиентов для межсервисного взаимодействия
Содержит инфраструктурные сервисы, обеспечивающие работу приложения:
- config-server — централизованное хранение конфигураций для всех сервисов. Конфигурации находятся в пакете
resourcesмодуляconfig-server - gateway — API Gateway, который обеспечивает единую точку входа для всех запросов к сервисам
- discovery-server — сервис Discovery (Eureka), который регистрирует все микросервисы и обеспечивает их обнаружение
Собирает информацию о статистике просмотров событий:
- stats-client — обеспечивает взаимодействие с сервисами модуля
core - stats-dto — модуль для DTO
- collector — сервис для приема сообщений о действиях пользователей, используя gRPC
- aggregator — сервис для расчета сходства мероприятий
- analyzer — сервис для обработки запросов по gRPC и выдачи рекомендаций
Спецификации внешнего API можно найти по следующим ссылкам:
Префиксы внутренних эндпоинтов (роутов): {имя сервиса}/internal
Взаимосвязь сервисов:
| Сервис | Используемые сервисы |
|---|---|
| event-service | user-service, stats-service, request-service, comment-service |
| comment-service | user-service, event-service, request-service |
| request-service | user-service, event-service |
| user-service | --- |
| stats-service | --- |
Описание внутренних API:
| Event API | Описание |
|---|---|
| GET event-service/internal/{eventId} | получение события по ID |
| Request API | Описание |
|---|---|
| GET request-service/internal/find-by-events | Получение событий по списку ID и статусу |
| GET request-service/internal/count | Количество запросов по событию и статусу |
| GET request-service/internal/find-by-requester-and-event | Получение события по ID и подписчику |
| User API | Описание |
|---|---|
| GET user-service/internal/{userId} | Получение пользователя по ID |
| GET user-service/internal | Получение списка пользователей по их ID |
| Comment API | Описание |
|---|---|
| GET comment-service/internal/{commentId} | Получение комментария по ID |
| GET comment-service/internal | Получение комментариев по списку ID событий |
| GET comment-service/internal/find-by-event/{eventId} | Получение количества комментариев по ID событию |
Для проверки работы сервисов разработаны Postman-тесты. Они находятся по следующим ссылкам:
- Проверка работоспособности основого сервиса включая event-service, user-service, request-service
- Проверка работоспособности сервиса статистики
- Проверка работоспособности сервиса комментариев
- Java
- Spring Boot
- Spring Data
- Spring Cloud (Config, Eureka, Gateway)
- Hibernate
- REST API
- PostgreSQL
- Lombok
- Maven
- Docker
- Postman
- Микросервисная архитектура
- gRPC
- Protobuf
- AVRO
- Kafka
- Feign Client
- Circuit Breaker
- Склонировать репозиторий и перейдите в него
- Выполнить команду mvn clean package
- Выполнить команду docker-compose up -d
- Каждый микросервис из каждого модуля запускается отдельно