我们有一个用例,我们想使用S3临时推送基于事件的+产品指标,直到将它们加载到关系数据仓库(Oracle)中。这些度量标准将由200多个应用程序服务器发送到S3,并分别存储在每个服务器每个度量标准的不同文件中。例如,某些指标的频率可能很高。每分钟发送一次应用服务器上的活动http会话数或每分钟的内存使用量。一旦将度量标准保留在S3中,我们就会在数据仓库中放置一些内容来读取csv文件并将其加载到Oracle中。由于各种因素,包括成本,耐用性和复制性,我们考虑在队列(kafka / activemq / rabbit mq)上使用S3。我有一些与S3的读写机制有关的问题
谢谢
答案 0 :(得分:2)
要详细回答您的问题:
1)不,您不能“保证交付”,尤其是对于异步S3操作。您可以设计可恢复的操作,但不能保证交付。
2)那不是S3的目的...那是整个对象的编写...您想创建一个系统,在其中添加许多小文件...您可能不想这样做。更新文件(尤其是从多个线程)很危险,每次更新都会替换整个文件...
3)如果必须执行此操作,请使用对象api,一次处理每个文件,并在完成后将其删除...最好建立一个基于队列的系统。 / p>