pol*_*olo 7 java io concurrency scala amazon-s3
我有一个服务器端应用程序,它运行大量图像 URL 并将图像从这些 URL 上传到 S3。这些文件通过 HTTP 提供。我使用InputStreamI get from an HttpURLConnectionusinggetInputStream方法下载它们。我将 InputStream 交给 AWS S3 客户端putObject方法 (AWS Java SDK v1) 以将流上传到 S3。到现在为止还挺好。
我正在尝试引入一个新的外部图像数据源。此数据源的问题在于提供这些图像的 HTTP 服务器不返回Content-LengthHTTP 标头。这意味着我无法确定图像有多少字节,这是 AWS S3 客户端验证图像是否正确从流上传到 S3 所需的数字。
我能想到的处理这个问题的唯一方法是让服务器所有者将Content-LengthHTTP 标头添加到他们的响应中(不太可能),或者先将文件下载到内存缓冲区,然后从那里将其上传到 S3。
这些不是大文件,但我有很多。
在考虑先下载文件时,我担心内存占用和并发影响(无法同时上传和下载同一文件的块)。
由于我正在处理许多小文件,我怀疑如果我专注于多个文件而不是单个文件的并发性,并发性问题可能会“解决”。因此,我将使用我的 IO 有效地下载一个文件,同时上传另一个文件,而不是同时下载和上传同一文件的块。
我会喜欢你关于如何做到这一点的想法、最佳实践、陷阱或关于如何最好地解决这个问题的任何其他想法。
| 归档时间: |
|
| 查看次数: |
1314 次 |
| 最近记录: |