25 млрд сообщений в сутки — около 289 тыс. сообщений/с в среднем, без учёта доставки адресатам. Архитектуру нужно рассчитывать по пикам и fan-out.
Проектирование масштабируемого мессенджера‑аналогa Telegram
25 млрд сообщений в сутки — около 289 тыс. сообщений/с в среднем, без учёта доставки адресатам. Архитектуру нужно рассчитывать по пикам и fan-out.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Требуется разработать архитектурное решение для сервиса обмена сообщениями, включающего основные возможности: личные диалоги и групповые чаты (не более 500 участников), передачу текстовых сообщений и медиа‑файлов, постоянное хранение истории с поддержкой поисковых запросов, отображение статуса онлайн и отправку push‑уведомлений. Система должна выдерживать нагрузку в 500 млн активных пользователей в день (DAU) и обрабатывать около 25 млрд сообщений в сутки.
Ответ
25 млрд сообщений в сутки — около 289 тыс. сообщений/с в среднем, без учёта доставки адресатам. Архитектуру нужно рассчитывать по пикам и fan-out.
Клиенты держат соединения с gateway; сервис сообщений проверяет участников, назначает порядок внутри диалога и устойчиво сохраняет сообщение до подтверждения. Client message ID обеспечивает дедупликацию повторов. Данные шардируют по conversation_id, сохраняя локальный порядок, а не глобальный на весь сервис.
Доставку онлайн, push и поисковую индексацию запускают событиями после сохранения. Медиа размещают в объектном хранилище/CDN с проверкой доступа; presence хранит краткоживущие heartbeat. Для групп до 500 участников отдельно оценивают цену fan-out. Нужны курсорная история, backpressure, репликация и определённые RPO/RTO; поисковый индекс может обновляться с задержкой. Сквозное шифрование меняет возможности серверного поиска и требует отдельного решения.