ExploreWithMe — это продвинутая версия сервиса поиска мероприятий, полностью переведенная на микросервисную архитектуру (Cloud Native) с внедрением рекомендательной системы на базе потоковой обработки данных.
Проект демонстрирует навыки распила монолита, работы со стеком Spring Cloud, асинхронного обмена сообщениями (Apache Kafka) и использования RPC-протоколов (gRPC).
- Язык: Java
- Фреймворк: Spring Boot, Spring Data JPA
- Cloud-инфраструктура: Spring Cloud (Config, Eureka, Gateway, OpenFeign)
- Брокер сообщений: Apache Kafka
- RPC и протоколы: REST API, gRPC
- Базы данных: PostgreSQL
- Контейнеризация: Docker, Docker Compose
Проект разделен на три крупные логические зоны: инфраструктуру, бизнес-логику и рекомендательную систему.
| Сервис | Описание |
|---|---|
| Config Server | Централизованное хранилище конфигураций для всех микросервисов. |
| Eureka Server | Service Discovery. Автоматическое обнаружение и регистрация микросервисов. |
| API Gateway | Единая точка входа, маршрутизирующая REST-запросы к нужным микросервисам. |
Изолированные модули, выделенные из изначального монолита. Общаются между собой через OpenFeign и регистрируются в Eureka:
- Сервис управления мероприятиями (Events).
- Сервис управления заявками (Requests).
- Сервис администрирования пользователей (Users).
Система собирает данные о поведении пользователей и строит рекомендации в реальном времени.
- Collector: Принимает сообщения о действиях пользователей по gRPC и пишет их в Kafka-топик
stats.user-actions.v1. - Aggregator: Читает данные из топика действий, рассчитывает метрики сходства между мероприятиями и публикует результаты в топик
stats.events-similarity.v1. - Analyzer: Консьюмер, который читает оба топика, обновляет базу данных и по gRPC отдает другим сервисам:
- Список персональных рекомендаций для пользователя.
- Список мероприятий, похожих на выбранное.
Проект полностью докеризован. Для запуска всей инфраструктуры, баз данных, Zookeeper, Kafka и микросервисов используется Docker Compose.
- Склонируйте репозиторий:
git clone [https://github.com/meneshev/java-plus-graduation.git](https://github.com/meneshev/java-plus-graduation.git)
- Перейдите в папку проекта:
cd java-plus-graduation - Соберите проект:
mvn clean package
- Поднимите все контейнеры:
docker-compose up -d
(Примечание: Запуск всей экосистемы может занять несколько минут. Убедитесь, что у Docker выделено достаточно оперативной памяти, минимум 4-6 ГБ).