Проект на 2-3 человек
Требуется реализовать прототип распределенной платформы для микроблогов
В качестве основной базы данных предлагается использовать MongoDB:-
- сохранения сообщений с лайками
...
- сохранения и обновления аккаунтов пользователей (авторов сообщений) с подписчиками и тех, на кого пользователь подписан
Для отображения ленты и поиска сообщений предлагается использовать ElasticSearchOpenSearch:-
- полнотекстовый поиск сообщений
...
- аналитика трендов: агрегация по тегам за указанную дату
Для быстрого отображения информации о пользователях (логин/имя пользователя/...) ленты новостей предлагается использовать распределенный кэш HazelcastПри редактировании аккаунта пользователя, блокировать его в Hazelcast для предотвращения конфликта.:
- ключ: userId
- значение: заранее подготовленный и отсортированный по дате список последних постов от авторов, на которых подписан пользователь.
- обновление: асинхронное, при публикации нового поста все подписчики получают обновление в своей закэшированной ленте
- Также можно использовать для кэша счетчика лайков для постов и других агрегатов
Данные аккаунтов и сообщения можно взять из дампа stackoverflow (или выкачать из твиттера).
За основу можно взять шаблон приложения на Spring Boot.
...
- Обсудить и согласовать модель данных предметной области (UserAccountUser, MessagePost)
- Реализация
- Класс - сервис для работы с MongoDB для
Message - Post(сохранение, получение по ID, управление подписчиками)
- Класс - сервис для работы с
ElasticSearch - OpenSearch (индексация, поиск по тексту,
поиск - агрегация по
периоду- тегам)
- Класс - сервис для работы с MongoDB для
UserAccount - User (сохранение, получение по ID)
- Реализация кэширования
и блокировки UserAccount - в Hazelcast
- Реализация загрузки данных из stackoverflow в систему с использованием реализованных сервисов (например, используя Apache Spark)
- Реализация
веб-страницы для отображения списка сообщений с информацией об автореДобавление функциональности полнотекстового поиска на веб-страницу- REST API для классов из a,c
- Реализация REST API для классов из b (полнотекстового поиска)
- Интеграция
- Загрузка полного объема данных в кластер (не менее нескольких миллионов сообщений)
- Функциональное тестирование и исправление ошибок
- Тест на отключение отдельных узлов и восстановление связи с узлом
- Краткий отчет (постановка задачи, архитектура решения, результаты тестирования)