Skip to content

AhmedKishev/java-plus-graduation

Repository files navigation

Explore With Me Plus

Доработанная версия приложения Explore With Me (https://github.com/AhmedKishev/java-explore-with-me-plus-group-project). Переработана структура приложения, использован переход из модульно-монолитной системы к микросервисной, реализовано перемещение к облачным средам (Spring Cloud) из за необходимости быстрого запуска и обновления приложения, а также добавлен броккер (Kafka) для масштабирования. Также реализована новая функциональность, связанная с рекомендациями для улучшения аналитической системы.

Languages and tools:

Java Spring IntelliJ PostgreSQL Kafka Maven gRPC Docker Docker Docker

Модуль infa

Данный модуль содержит всю инфраструктуру приложения, включая входной шлюз (Gateway), конфигурационные файлы (Config) и реестр сервисов (Eureka).

Подмодуль discovery-server

Данный подмодуль является реестром сервисов и, соответственно, реализует паттерн Service Discovery. Другие модули регистрируются в него и могут вызывать друг друга по имени приложения без ручной настройки сетевых адресов.

Подмодуль config-server

В данном подмодуле содержатся все конфигурационные файлы всех модулей приложения, он является сервером Spring-Cloud-Config и реализует паттерн Externalized Configuration.

Подмодуль gateway-server

Подмодуль gateway-server является входным шлюзом для всех входящих запросов, оттуда они адресуются в соответствующие контроллеры через роуты. Данный модуль реализует паттерн API Gateway.

Модуль core

Данный модуль содержит в себе "распиленные" части проекта Explore With Me из модуля core. Каждый из сервисов регистрируется в discovery-server и получает конфигурационные файлы из config-server. Также для баз данных был использован паттерн Database per service.

Модуль stats

Данный модуль является переработанной версией аналитической системы проекта Explore With Me. В данном модуле также, как и в модуле core, все сервисы регистрируется в discovery-server, а также получают конфигурационные файлы из config-server.

Подмодуль serialization

В данном подмодуле описаны все avro/proto схемы, а также сериализатор и диссериализаторы для avro схем.

Подмодуль stat-client

Данный модуль содержит реализации gRPC контроллеров из модуля serialization, а также он является точкой входа всей цепочки аналитической системы.

Подмодуль collector

Данный модуль получает данные из stat-client через gRPC и записывает их в топик stats.user-actions.v1 в Kafka преобразуя к формату avro.

Подмодуль aggregator

Модуль aggregator читает данные из топика stats.user-actions.v1 и рассчитывает сходство мероприятий и записывает результаты в топик stats.events-similarity.v1. Сходство мероприятий рассчитывается по следующей формуле:

Подмодуль analyzer

Данный модуль читает данные: а) из топика stats.user-actions.v1 для хранения информации о последней оценке пользователей мероприятий; b) из топика stats.user-actions.v1 для хранения информации о сходстве мероприятий. Также модуль core обращается к данному модулю по gRPC для получения: a) списка рекомендуемых мероприятий для конкретного пользователя на основе сходства мероприятий; b) списка мероприятий, которые похожи на указанное и с которыми пользователь ещё не взаимодействовал.

API Specification: ewm-main-service-spec.json

Comments feature API Specification: feature.json

Statistics server API Specification: ewm-stats-service-spec.json

Доступность: http://localhost:8080

About

Explore With Me Plus - доработанная версия приложения Explore With Me, с переходом на микросервисную архитектуру и переработанной системой аналитики

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages