Skip to content

meneshev/java-plus-graduation

Repository files navigation

ExploreWithMe v2.0: Cloud & Recommendations

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

🏗 Архитектура проекта

Проект разделен на три крупные логические зоны: инфраструктуру, бизнес-логику и рекомендательную систему.

1. Инфраструктурные сервисы (Spring Cloud)

Сервис Описание
Config Server Централизованное хранилище конфигураций для всех микросервисов.
Eureka Server Service Discovery. Автоматическое обнаружение и регистрация микросервисов.
API Gateway Единая точка входа, маршрутизирующая REST-запросы к нужным микросервисам.

2. Основные бизнес-микросервисы (Core)

Изолированные модули, выделенные из изначального монолита. Общаются между собой через OpenFeign и регистрируются в Eureka:

  • Сервис управления мероприятиями (Events).
  • Сервис управления заявками (Requests).
  • Сервис администрирования пользователей (Users).

3. Рекомендательная система (Kafka + gRPC)

Система собирает данные о поведении пользователей и строит рекомендации в реальном времени.

  • Collector: Принимает сообщения о действиях пользователей по gRPC и пишет их в Kafka-топик stats.user-actions.v1.
  • Aggregator: Читает данные из топика действий, рассчитывает метрики сходства между мероприятиями и публикует результаты в топик stats.events-similarity.v1.
  • Analyzer: Консьюмер, который читает оба топика, обновляет базу данных и по gRPC отдает другим сервисам:
    • Список персональных рекомендаций для пользователя.
    • Список мероприятий, похожих на выбранное.

💻 Инструкция по локальному запуску

Проект полностью докеризован. Для запуска всей инфраструктуры, баз данных, Zookeeper, Kafka и микросервисов используется Docker Compose.

  1. Склонируйте репозиторий:
    git clone [https://github.com/meneshev/java-plus-graduation.git](https://github.com/meneshev/java-plus-graduation.git)
    
  2. Перейдите в папку проекта:
    cd java-plus-graduation
    
  3. Соберите проект:
    mvn clean package
    
  4. Поднимите все контейнеры:
    docker-compose up -d
    

(Примечание: Запуск всей экосистемы может занять несколько минут. Убедитесь, что у Docker выделено достаточно оперативной памяти, минимум 4-6 ГБ).

About

Template repository for Graduation project.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages