Блоки системы

  1. Auth Service:
    1. Регистрация, аутентификация (JWT), восстановление пароля
    2. Интеграция с OAuth2 (например, Google, VK)
  2. Posts Service:
    1. Создание/удаление постов, загрузка медиа (S3-совместимое хранилище)
    2. Интеграция с Kafka, чтобы отправлять в ленту новые посты
  3. Feed Service:
    1. Генерация ленты: кэш (Redis)
    2. Пагинация и фильтрация по дате
  4. Chat Service:
    1. WebSocket
  5. Search Service
    1. Elasticsearch для полнотекстового поиска

Детализация ключевых аспектов

Балансировка и нагрузка:

  • LB (Nginx):
    • Load shedding: приоритет запросов на чтение ленты
    • Round Robin для большинства
    • Least Connections в чатах
  • Rate Limiting:
    • 1000 запросов/мин на пользователя (Bucket4j)

Базы данных:

  • PostgreSQL: Основное хранилище (шардинг по post_id)
  • Redis: Кэш ленты, счетчики лайков

Архитектура:

  • Монолит → Микросервисы:
    • Первый этап: API Gateway (Kong) для роутинга
    • Распил на сервисы: Auth, Feed, Posts