Разделите загрузку, транскодирование и доставку через CDN. Расчёт в условии ошибочен: 5 млн просмотров в сутки — примерно 58 стартов просмотра в секунду, а не 300.
Разработка упрощённого аналога видеохостинга
Разделите загрузку, транскодирование и доставку через CDN. Расчёт в условии ошибочен: 5 млн просмотров в сутки — примерно 58 стартов просмотра в секунду, а не 300.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Сформулируйте архитектуру системы, похожей на YouTube, реализующей базовый набор возможностей: загрузка видеоматериалов и их воспроизведение. При проектировании учтите следующие параметры:
- DailyActiveUsers (DAU): 1 000 000 пользователей
- Среднее количество просмотренных роликов на одного пользователя в сутки — 5
- Типичный размер видео‑файла — 300 МБ
- 2 % активных пользователей являются загрузчиками контента
- Ожидаемая нагрузка на сервис ≈ 300 запросов в секунду (расчёт: 1 000 000 × 5 ÷ (24 × 60 × 60)). Опишите ключевые компоненты решения, включая хранилище данных, обработку запросов и механизм доставки видеоконтента, а также способы масштабирования и обеспечения отказоустойчивости.
Ответ
Разделите загрузку, транскодирование и доставку через CDN. Расчёт в условии ошибочен: 5 млн просмотров в сутки — примерно 58 стартов просмотра в секунду, а не 300.
Загрузка идёт напрямую в объектное хранилище через ограниченный upload-token. Backend фиксирует метаданные и ставит транскодирование в очередь. Workers создают несколько качеств и сегменты HLS/DASH; готовность публикуется только после завершения. Воспроизведение получает manifest, сами сегменты доставляет CDN.
20 тысяч потенциальных загрузчиков в день не означают 20 тысяч роликов без допущения о частоте загрузки. Если каждый загружает один файл 300 МБ, это около 6 ТБ исходников в сутки, плюс производные версии. Полные просмотры 5 млн таких файлов дали бы около 1,5 ПБ передачи в день — только грубая верхнеуровневая оценка. Нужны длительность просмотра, битрейты, пики, репликация и повторяемые задания обработки.