Как спроектировать чанковую загрузку огромных файлов через API, чтобы бэкенд не держал весь файл в оперативной памяти?

Разделите загрузку на ограниченные части и записывайте поток сразу в временное или объектное хранилище. Backend хранит метаданные upload-сессии и частей, а не весь файл в RAM.

Короткий ответ

Что ответить на собеседовании

Разделите загрузку на ограниченные части и записывайте поток сразу в временное или объектное хранилище. Backend хранит метаданные upload-сессии и частей, а не весь файл в RAM.

Подробный разбор

Ответ с пояснениями

Разделите загрузку на ограниченные части и записывайте поток сразу в временное или объектное хранилище. Backend хранит метаданные upload-сессии и частей, а не весь файл в RAM.

Клиент получает upload ID, отправляет части с номерами, размером и контрольной суммой, затем выполняет finalize. Повтор части должен быть идемпотентным; завершение проверяет полноту, общий размер и владельца. Удобен прямой multipart upload в object storage по ограниченным подписанным URL. Нужны квоты, TTL незавершённых загрузок, очистка и backpressure. Проверьте также буферизацию reverse proxy и веб-фреймворка: она может нарушить потоковость.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее