Концепция: Система для сбора и анализа отзывов на товары в интернет-магазине. Должна выдерживать высокие нагрузки, особенно во время распродаж, когда тысячи пользователей одновременно читают и пишут отзывы.
Реализация требований:
MongoDB: Хранит основную информацию.
reviews
: Документ на каждый отзыв (id, id товара, id пользователя, рейтинг 1-5, заголовок, текст, дата, статус модерации).products
: Основные данные о товаре (id, название, агрегированный рейтинг, количество отзывов).users
: Данные пользователей.
OpenSearch: для сложного поиска и агрегации по отзывам. Например:
"Найди все отзывы на товар X с рейтингом ниже 3, где в тексте упоминается 'батарея'".
"Покажи самые полезные отзывы (по лайкам) для товара Y".
Построение аналитики: тренды оценок по времени, часто упоминаемые слова в негативных отзывах.
Hazelcast:
Кэш агрегированных данных: Самые важные данные — агрегированный рейтинг товара и количество отзывов. Они постоянно пересчитываются и должны быть доступны мгновенно. Кэшируются по
product_id
.Кэш товаров: Кэширует документы из коллекции
products
.Rate Limiting: С помощью
IMap
и TTL можно реализовать ограничение на количество отзывов с одного IP/пользователя в минуту.
REST API (пример):
POST /api/products/{productId}/reviews
- Добавить отзыв.GET /api/products/{productId}/reviews?rating=4&hasText=true
- Получить отзывы с фильтрами.GET /api/products/{productId}/summary
- Быстро получить агрегированный рейтинг (из кэша).POST /api/reviews/{reviewId}/feedback
- Оценить отзыв как "полезный/бесполезный".