Платформа построена на микросервисной архитектуре, где каждая основная функция (посты, комментарии, голосование, уведомления) работает как независимый сервис. Это позволяет масштабировать и деплоить каждый компонент отдельно.
Redis для быстрых атомарных инкрементовElasticsearch, посты индексируются асинхронно через очередь событийS3) за CDNКаждый тип ленты запрашивает предвычисленные оценки, хранящиеся в Redis sorted sets:
hot — балансирует свежесть и скорость голосованияtop — ранжирует по общему количеству апвотов за временной периодnew — упорядочивает по timestampcontroversial — высокое количество голосов с примерно равным соотношением апвотов и даунвотовОценки пересчитываются фоновыми воркерами, чтобы избежать дорогостоящих вычислений в реальном времени.
Redis с короткими TTLServer-Sent Events (SSE) отправляют уведомления об ответах, упоминаниях и голосахКарма агрегируется асинхронно из событий голосования, хранится в Redis и периодически сохраняется в основную базу данных.
Использование модели adjacency list в PostgreSQL для хранения threaded comments позволяет выполнять прямые запросы parent-child с минимальным количеством join операций, что делает её более эффективной, чем nested set модель, для большинства случаев использования форумов.
Новый — ещё не проверен сообществом
Вы