RealTime Leaderboard — это сервис для управления таблицей лидеров в реальном времени. Он состоит из нескольких микросервисов, взаимодействующих через Redis Pub/Sub.
Задание — https://roadmap.sh/projects/realtime-leaderboard-system.
- Main-Service – главный сервис, обрабатывающий основные HTTP-запросы.
- Update-Leaderboard – подписывается на канал
leaderboard_update, обновляет данные пользователя в таблице лидеров игры и глобальном рейтинге. - Notification-Service – рассылает уведомления пользователям о смене позиций в таблице лидеров.
- RealTime-Leaderboard – автоматически обновляет глобальную таблицу лидеров в консоли при изменении данных.
GET /leaderboard– получение актуальной глобальной таблицы лидеров (топ 10 игроков).GET /leaderboard?top=5– получение актуальной глобальной таблицы лидеров (топ 5 игроков).GET /leaderboard?game=chess– получение таблицы лидеров игры шахматы (топ 10 игроков).GET /leaderboard?game=chess&top=20– получение таблицы лидеров игры шахматы (топ 20 игроков).GET /leaderboard/rank/{id}– получение ранга конкретного пользователя в глобальном рейтинге и рейтинге игр, в которых пользователь когда-либо играл .
POST /scores/new– отправка нового результата пользователя. Пример запроса: { "user_id": "45", "game": "chess", "score": 7500 }
leaderboard_update– C помощью данного канала сервис Main-Service отправляет новые данные пользователя сервису Update-Leaderboard. Который в последствие обновляет данные в отсортированных наборах REDIS.leaderboard_console– Сервис Update-Leaderboard после обработки данных отправляет уведомление об измении сервису RealTime-Leaderboard.leaderboard_notification– Сервис Update-Leaderboard после обработки данных отправляет уведомление об измении сервису Notification.