Назад к задачам
Junior — Senior
8

Проектирование модуля загрузки видео для гипотетического видеохостинга

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Представим себе сервис, похожий на YouTube, где хранится огромный объём видеоматериалов. Требуется разработать компонент, отвечающий за приём загружаемых файлов. Поскольку ролики могут быть очень большими, загрузка осуществляется по частям (чанкам). Каждый фрагмент передаётся независимо, после чего система собирает их в единый файл и сохраняет в хранилище, откуда будет осуществляться последующее воспроизведение.

Основные требования:

  • Приём видеоданных в виде последовательных кусочков;
  • Обеспечение независимости загрузки каждого куска (может приходить в произвольном порядке);
  • После получения всех частей – их конкатенация в финальный файл;
  • Перемещение готового ролика в постоянное хранилище для дальнейшего доступа.

Возможные детали реализации (необязательно):

  • Идентификатор загрузки, позволяющий связывать части одного видео;
  • Механизм контроля целостности (контрольные суммы, версии);
  • Обработка ошибок и повторных попыток загрузки отдельных чанков;
  • Очистка незавершённых загрузок после таймаута.