Выбор ответа Middle Мобильный system design обновлено

Загрузка большого видео

Вопрос

Как надёжно загрузить видео на 500 МБ с телефона в мобильной сети?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Возобновляемая загрузка частями в фоновой сессии, с повтором отдельных частей и сжатием. При обрыве на 90% одиночный запрос начнётся заново.

Варианты ответа

  1. Один POST с телом на 500 МБ и долгим таймаутом, а при обрыве повторить запрос целиком
  2. Base64 в JSON-запросе, чтобы файл проходил через любые прокси и API-шлюзы без ошибок
  3. Отправка только по Wi-Fi одним запросом без возможности продолжить: в сотовой сети не загружать
  4. Возобновляемая загрузка частями в фоновой сессии, с повтором отдельных частей и сжатиемправильный ответ

Разбор

При обрыве на 90% одиночный запрос начнётся заново. Загрузка частями (протокол tus, S3 multipart upload) позволяет повторять только неудачные части и продолжать после перезапуска. Фоновая сессия (URLSession background, WorkManager) не зависит от того, открыт ли экран. Base64 увеличивает объём на треть. Перед загрузкой видео обычно перекодируют в разумный битрейт.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.