Разделите публикации, ленту, подписки, медиа и поиск. Для ленты используйте гибридную доставку: обычные авторы — fan-out при записи, крупные — при чтении.
Проектирование платформы, похожей на Twitter
Разделите публикации, ленту, подписки, медиа и поиск. Для ленты используйте гибридную доставку: обычные авторы — fan-out при записи, крупные — при чтении.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо спроектировать сервис, аналогичный Twitter, рассчитанный на аудиторию около 70 млн пользователей. Система должна поддерживать публикацию сообщений (твитов) с ограничением по количеству символов. К каждому сообщению можно прикреплять фотографии и видеоматериалы, однако аудио‑вложения не допускаются. Онлайн‑трансляции в сервисе не предусмотрены. Требуется реализовать работу с хештегами и обеспечить удобный пользовательский опыт в мобильном приложении.
Ответ
Разделите публикации, ленту, подписки, медиа и поиск. Для ленты используйте гибридную доставку: обычные авторы — fan-out при записи, крупные — при чтении.
70 млн регистраций недостаточно для расчёта нагрузки: уточните DAU, число публикаций и чтений на пользователя, долю медиа и пиковый коэффициент.
Клиент обращается к API через балансировщик. Посты и связи подписки хранятся отдельно; фоновые события обновляют ленты и поисковый индекс хештегов. Идентификаторы ленты кешируются, пагинация использует стабильный cursor. Для популярных авторов массовая запись всем подписчикам заменяется подмешиванием постов при чтении.
Фото и видео загружаются в объектное хранилище, проходят проверку и обработку, раздаются через CDN. Запрет аудиовложений проверяется по содержимому файла, а не только расширению; видеоролик при этом может иметь звуковую дорожку, если продукт это разрешает. Live-streaming не проектируем.
Нужны идемпотентная публикация, контроль доступа, удаление контента из производных представлений, модерация и наблюдаемость. Для мобильного клиента — кеш, догрузка и восстановление после обрыва сети.