Концепция: Система для сбора и анализа отзывов на товары в интернет-магазине. Должна выдерживать высокие нагрузки, особенно во время распродаж, когда тысячи пользователей одновременно читают и пишут отзывы.

Реализация требований:

  1. MongoDB: Хранит основную информацию.

    • reviews: Документ на каждый отзыв (id, id товара, id пользователя, рейтинг 1-5, заголовок, текст, дата, статус модерации).

    • products: Основные данные о товаре (id, название, агрегированный рейтинг, количество отзывов).

    • users: Данные пользователей.

  2. OpenSearch: для сложного поиска и агрегации по отзывам. Например:

    • "Найди все отзывы на товар X с рейтингом ниже 3, где в тексте упоминается 'батарея'".

    • "Покажи самые полезные отзывы (по лайкам) для товара Y".

    • Построение аналитики: тренды оценок по времени, часто упоминаемые слова в негативных отзывах.

  3. 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 - Оценить отзыв как "полезный/бесполезный".

  • Нет меток