我们有一个用例,我们希望使用S3临时推送基于事件的+产品度量,直到它们加载到关系数据仓库(Oracle)中为止。这些指标将由200多个应用服务器发送到S3,并在每个服务器的不同文件中持久化。一些度量标准的频率可能很高,例如,每分钟在应用服务器上发送活动http会话的数量或每分钟的内存使用量。一旦S3中的度量被持久化,数据仓库中就会有读取csv文件并在Oracle中加载它们的东西。由于成本、持久性和复制等多种因素,我们考虑在队列(kafka/activemq/兔子mq)上使用S3。我有几个与S3的读写机制有关的问题
谢谢
发布于 2018-08-14 13:39:17
FYI,每分钟发送一个请求的200台服务器并不“高”。你很可能对这件事了如指掌。SQS是简单的、高度冗余的/可用的,它可能比开发自己的解决方案更能满足您的需求。
要详细回答你的问题:
1)不,您不能“保证传递”,特别是在异步S3操作中。您可以设计可恢复的操作,但不能保证交付。
2)这不是S3的目的.整个物体的书写..。您可能想要创建一个系统,您可以在其中添加许多小文件.你可能不想这么做。更新一个文件(特别是从多个线程)是危险的,每次更新都将替换整个文件.
3)如果必须这样做,请使用对象api,一次处理每个文件,并在完成时删除它们.构建一个基于队列的系统要好得多。
https://stackoverflow.com/questions/51835061
复制相似问题