我們已經找到存儲在S3上的用戶數據的應用程序。處理上傳的應用程序部分與處理數據的部分分離。在某些情況下,用戶可以直接將數據上傳到S3,而無需通過我們的應用程序(如果他們擁有自己的S3帳戶並向我們提供憑據,則可能會發生這種情況)。
是否有可能得到通知每當S3存儲的內容發生變化?這將是很酷,如果不知何故消息可能會發送說,「這個文件被添加/更新/刪除:富」。
簡短的是,有一些地方戳我可以輪詢會告訴上次桶被更新?
如果我不能做任何的這些東西,那麼唯一的選擇是抓取整個桶和尋找變化。這將是緩慢和昂貴的。
對於體積較小的對象,名稱的前綴將正常工作。對於大量的物體,這實際上會減慢S3。 S3根據存儲桶名稱/對象密鑰對數據進行內部分區,而具有相同前綴的密鑰很可能最終位於同一分區中。要獲得較高的上傳吞吐量,您需要在字符串的開始處更改對象鍵。有關詳細信息,請參閱以下內容:http://aws.typepad.com/aws/2012/03/amazon-s3-performance-tips-tricks-seattle-hiring-event.html – dlaidlaw 2013-05-16 14:08:20
@dlaidlaw:正如亞馬遜描述的那樣,它很容易即使沒有特殊的密鑰前綴分配,也可以處理每秒超過100個請求的突發。如果您比以前更快地處理入站隊列,則可以簡單地使用「未處理」存儲區而不是前綴。但是,以這種速度,你很可能會使用並行處理器,在這一點上,有一個被輪詢的單個未處理文件列表的建議被破壞了(你怎麼知道哪個線程正在處理哪個文件?)。 – 2013-05-17 01:28:32
對於吞吐量非常高的情況,我在S3中向包含該文件URI的SQS寫入消息。然後多個線程可以處理SQS隊列。是的,在編寫SQS消息時會有開銷,但它是必需的,並分佈在所有線程發送文件到S3。它會好得多,如果亞馬遜有一個標誌派在S3,然後你可以訂閱的SQS隊列分發跨線程負載創建一個SNS的消息,但在那之前,你必須寫自己的消息要麼SNS或SQS。 – dlaidlaw 2013-06-03 15:47:42