Спроектируйте масштабируемый мессенджер: только личные чаты, отправка текста и изображений, доставка онлайн и офлайн через push-уведомления, статусы «отправлено/доставлено/прочитано», история переписки и статус присутствия онлайн/офлайн.

Нужны gateway постоянных соединений, сервис диалогов, шардированное долговечное хранение, события доставки и отдельное хранилище изображений. Сообщение подтверждают после устойчивой записи, повторы дедуплицируют.

Короткий ответ

Что ответить на собеседовании

Нужны gateway постоянных соединений, сервис диалогов, шардированное долговечное хранение, события доставки и отдельное хранилище изображений. Сообщение подтверждают после устойчивой записи, повторы дедуплицируют.

Подробный разбор

Ответ с пояснениями

Условие

Спроектируйте масштабируемый мессенджер: только личные чаты, отправка текста и изображений, доставка онлайн и офлайн через push-уведомления, статусы «отправлено/доставлено/прочитано», история переписки и статус присутствия онлайн/офлайн. Ограничения: до 10 млн пользователей, средняя нагрузка до 50 тыс. сообщений/с, пиковая — до 100 тыс. сообщений/с, сообщения не должны теряться, система должна горизонтально масштабироваться; P99 онлайн-доставки — до 400 мс.

Ответ

Нужны gateway постоянных соединений, сервис диалогов, шардированное долговечное хранение, события доставки и отдельное хранилище изображений. Сообщение подтверждают после устойчивой записи, повторы дедуплицируют.

Порядок задают внутри диалога, маршрутизацию — по conversation ID; история читается курсором. Sent означает принятие сервером, delivered/read — подтверждение устройства и действия пользователя по явному контракту. Offline push только сообщает о новых данных; источник истины — история. Presence хранит heartbeat с TTL и допускает запаздывание. Для пика 100 тыс./с планируют партиции, резерв и нагрузочные измерения P99≤400 мс. Изображения передают через защищённые ссылки. Гарантию «не терять» уточняют по сбоям и RPO, не обещают абсолютную неуязвимость.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее