Разделите загрузку, асинхронное перекодирование и выдачу через CDN. При 50 млн зрителей и пяти видео в день получается 250 млн просмотров в сутки — около 2,9 тыс. стартов в секунду в среднем.
Проектирование масштабируемой архитектуры видеохостинга
Разделите загрузку, асинхронное перекодирование и выдачу через CDN. При 50 млн зрителей и пяти видео в день получается 250 млн просмотров в сутки — около 2,9 тыс. стартов в секунду в среднем.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Разработать архитектуру видеохостинга, способную обслуживать более 100 млн пользователей, предоставлять функции загрузки и просмотра видео, а также гарантировать масштабируемость и отказоустойчивость.
Функциональные требования:
- Возможность загрузки видеоматериалов в систему.
- Просмотр видеоконтента пользователями.
- Оценка видео (лайки/дизлайки).
- Добавление комментариев к видео.
- Система рекомендаций, построенная на истории просмотров.
- Поиск видео по ключевым словам и метаданным.
- Хранение и трансляция роликов в разных качествах (480p, 720p, 1080p, 4K).
Ожидаемые нагрузки:
- Более 100 млн зарегистрированных пользователей.
- Около 50 млн активных пользователей ежедневно.
- Каждый активный пользователь в среднем смотрит 5 видеороликов в сутки.
- Объём хранимых данных измеряется в петабайтах.
Дополнительно: сформулировать набор нефункциональных требований (надёжность, безопасность, latency, доступность, масштабируемость, мониторинг и т.д.), которые необходимо учитывать при проектировании системы.
Ответ
Разделите загрузку, асинхронное перекодирование и выдачу через CDN. При 50 млн зрителей и пяти видео в день получается 250 млн просмотров в сутки — около 2,9 тыс. стартов в секунду в среднем.
Это не весь RPS: сегменты видео, перемотки и метаданные создают больше запросов, а пиковый коэффициент нужно уточнить. Оригиналы и варианты качества хранятся в object storage, задачи transcoding — в очереди; проигрыватель использует адаптивный streaming. Метаданные, комментарии, реакции, поиск и рекомендации имеют отдельные модели хранения. Требуются resumable upload, идемпотентные jobs, модерация, контроль доступа, резервирование и наблюдаемость. SLO старта воспроизведения, rebuffering, RPO/RTO и пропускную способность рассчитывают по длительности/битрейту, не только числу аккаунтов.