Лучшая стратегия для загрузки файлов неизвестного размера на S3JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Лучшая стратегия для загрузки файлов неизвестного размера на S3

Сообщение Anonymous »

У меня есть серверное приложение, которое обрабатывает большое количество URL-адресов изображений и загружает изображения с этих URL-адресов на S3.
Файлы передаются по HTTP. Я загружаю их с помощью InputStream, который получаю из HttpURLConnection, используя метод getInputStream. Я передаю метод InputStream клиенту AWS S3 putObject (AWS Java SDK v1) для загрузки потока в S3. Пока все хорошо.

Я пытаюсь представить новый внешний источник данных изображения. Проблема с этим источником данных заключается в том, что HTTP-сервер, обслуживающий эти изображения, не возвращает HTTP-заголовок Content-Length. Это означает, что я не могу сказать, сколько байтов будет в изображении, а это число требуется клиенту AWS S3 для проверки правильности загрузки изображения из потока в S3.

Единственный способ решения этой проблемы, который я могу придумать, - это либо заставить владельца сервера добавить HTTP-заголовок Content-Length к своему ответу (маловероятно), либо сначала загрузить файл в буфер памяти, а затем загрузить оттуда на S3.

Это небольшие файлы, но у меня их много.

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

Поскольку я имею дело со многими небольшими файлами, я подозреваю, что проблемы параллелизма могут быть «решены», если я сосредоточусь на параллельности нескольких файлов, а не одного файла. Поэтому вместо одновременной загрузки и выгрузки фрагментов одного и того же файла я буду эффективно использовать свой ввод-вывод, загружая один файл и одновременно загружая другой.

Мне будут интересны ваши идеи о том, как это сделать. это, лучшие практики, подводные камни или любые другие мысли о том, как лучше всего решить эту проблему.

Подробнее здесь: https://stackoverflow.com/questions/546 ... size-to-s3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»