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