【问题标题】:How can I simultaneously read and write a file in S3?如何在 S3 中同时读取和写入文件?
【发布时间】:2015-04-19 22:30:24
【问题描述】:

我打算使用 S3 在 Java 中创建一个播客应用程序。我计划将我的音频放在 S3 中,在我讲话时进行直播,同时让用户能够在我讲话时收听音频。

我已经搜索了文档,但似乎找不到任何关于这是否可行以及如何实现的具体信息。

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 这听起来像是灾难的秘诀。为什么不使用真正的流媒体服务,然后在完成后将文件上传到 S3?您想用这种方法解决什么问题?
  • 直播组件是应用程序的关键组件。无需过多详细说明,该计划是在此基础上以独特的协作方式与更长的播客一起构建。为什么这会是一场灾难?真的很好奇,因为我以前从未遇到过此类问题。
  • 我说这听起来像是一场灾难,因为这不是 S3 的设计初衷。它不是流媒体服务,而是文件存储服务。我强烈建议您重新考虑您的计划并考虑改用流媒体服务。
  • 嗯,有道理。我可能已经让我的电线与不同的服务交叉,并认为这是可能的。例如,CloudFront aws.amazon.com/cloudfront/streaming 我认为与 S3 集成但可能没有。
  • Cloudfront 将从 s3 流式传输文件,前提是整个对象存在于 s3 上。要进行直播,您需要使用不同的来源。

标签: java amazon-web-services amazon-ec2 amazon-s3 cloud


【解决方案1】:

Amazon S3 可用于流式传输内容,但对象必须存在且完整。无法将内容流式传输到 S3。

在 S3 中添加或更新对象时,在上传(添加或更新)完成之前无法读取该对象。

【讨论】:

  • 几乎完全正确。 技术上可以将内容流式传输到 S3... 但没关系,因为 S3 中的写入始终是原子的,所以在流完成之前,对象仍然无法读取。尽管一致性模型因区域而异,并且在某些情况下取决于它是新对象还是覆盖,但在所有情况下,直到写入完全完成,才能读取对象。 (所以,+1)。
【解决方案2】:

S3 不是这个应用程序的好解决方案。 S3 仅提供美国标准中的最终一致性,以及其他区域中新对象的 PUTS 的写后读一致性。您不能将文件流式传输到 S3 并像传统文件系统一样删除它。

更好的选择是从 EC2 实例上传和流式传输以执行完全相同的操作。

【讨论】:

  • 好吧,这是有道理的。所以这是 EC2 而不是 S3,而不是结合,对吗?
猜你喜欢
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多