6

我最近重构了一些代码,使用“加载数据”将行填充到数据库中,效果很好——但是对于我拥有的每条记录,我必须将 2 个文件上传到 s3——这完全破坏了我获得的巨大速度升级. 虽然我每秒能够处理 600 多个这些文档,但由于 s3,它们现在以 1/秒的速度流入。

您对此有什么解决方法?查看 API,我发现它主要是 RESTful,所以我不确定该怎么做——也许我应该将所有这些都保存到数据库中。文本文件通常不超过 1.5k。(我们在其中填充的另一个文件是文本的 xml 表示)

我已经将这些文件缓存在对我的 Web 服务器的 HTTP 请求中,因为它们被大量使用。

顺便说一句:我们当前的实现使用java;我还没有尝试过线程,但这可能是一个选择

建议?

4

2 回答 2

6

您可以使用JetS3tputObjects的 [ ][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. S3对象[])

于 2009-03-20T20:15:36.063 回答
0

我刚刚找到了一个很好的解决方案,可以使用php上传整个目录:

$client->uploadDirectory(
  SOURCE_FOLDER,
  YOUR_BUCKET_NAME,
  DESTINATION,
  array(
    'concurrency' => 5,
    'debug'          => TRUE,
    'force'            => FALSE,
    'params'        => array(
      'ServerSideEncryption' => 'AES256',
    ),
  )
);
于 2018-03-29T18:25:34.490 回答