Доработанная версия приложения Explore With Me (https://github.com/AhmedKishev/java-explore-with-me-plus-group-project). Переработана структура приложения, использован переход из модульно-монолитной системы к микросервисной, реализовано перемещение к облачным средам (Spring Cloud) из за необходимости быстрого запуска и обновления приложения, а также добавлен броккер (Kafka) для масштабирования. Также реализована новая функциональность, связанная с рекомендациями для улучшения аналитической системы.
Данный модуль содержит всю инфраструктуру приложения, включая входной шлюз (Gateway), конфигурационные файлы (Config) и реестр сервисов (Eureka).
Данный подмодуль является реестром сервисов и, соответственно, реализует паттерн Service Discovery. Другие модули регистрируются в него и могут вызывать друг друга по имени приложения без ручной настройки сетевых адресов.
В данном подмодуле содержатся все конфигурационные файлы всех модулей приложения, он является сервером Spring-Cloud-Config и реализует паттерн Externalized Configuration.
Подмодуль gateway-server является входным шлюзом для всех входящих запросов, оттуда они адресуются в соответствующие контроллеры через роуты. Данный модуль реализует паттерн API Gateway.
Данный модуль содержит в себе "распиленные" части проекта Explore With Me из модуля core. Каждый из сервисов регистрируется в discovery-server и получает конфигурационные файлы из config-server. Также для баз данных был использован паттерн Database per service.
Данный модуль является переработанной версией аналитической системы проекта Explore With Me. В данном модуле также, как и в модуле core, все сервисы регистрируется в discovery-server, а также получают конфигурационные файлы из config-server.
В данном подмодуле описаны все avro/proto схемы, а также сериализатор и диссериализаторы для avro схем.
Данный модуль содержит реализации gRPC контроллеров из модуля serialization, а также он является точкой входа всей цепочки аналитической системы.
Данный модуль получает данные из stat-client через gRPC и записывает их в топик stats.user-actions.v1 в Kafka преобразуя к формату avro.
Модуль aggregator читает данные из топика stats.user-actions.v1 и рассчитывает сходство мероприятий и записывает результаты в топик stats.events-similarity.v1.
Сходство мероприятий рассчитывается по следующей формуле:
Данный модуль читает данные:
а) из топика 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