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