我最近重构了一些代码,使用“加载数据”将行填充到数据库中,并且效果很好 - 但是对于每条记录,我必须将2个文件上传到s3 - 这完全破坏了宏伟的速度升级我正在获得。虽然我能够处理600多个这些文件/秒,但由于s3,它们现在以1 /秒的速度流入。
你有什么办法解决这个问题?看看API,我发现它主要是RESTful所以我不知道该怎么做 - 也许我应该把所有这些都放在数据库中。文本文件通常不超过1.5k。 (我们填充的另一个文件是文本的xml表示)
我已经将这些文件缓存在我的Web服务器的HTTP请求中,因为它们被大量使用。
btw:我们当前的实现使用java;我还没有尝试过线程,但这可能是一个选项
建议?
答案 0 :(得分:6)
您可以使用JetS3t的[putObjects
] [1]功能一次上传多个文件。
或者,您可以使用后台线程从队列上传到S3,并将代码中的文件添加到队列中,将数据加载到数据库中。
[1]:http://jets3t.s3.amazonaws.com/api/org/jets3t/service/multithread/S3ServiceMulti.html#putObjects(org.jets3t.service.model.S3Bucket,org.jets3t.service.model.S3Object [])
答案 1 :(得分:0)
我刚刚找到一个很好的解决方案,用 php :
上传整个目录$client->uploadDirectory(
SOURCE_FOLDER,
YOUR_BUCKET_NAME,
DESTINATION,
array(
'concurrency' => 5,
'debug' => TRUE,
'force' => FALSE,
'params' => array(
'ServerSideEncryption' => 'AES256',
),
)
);