(1)—個進程寫入一個新的對象并立即嘗試讀取它,但在該改變被傳送到S3的多個服務器前,服務器對該操作可能返回“鍵不存在”。
(2)—個進程;入一個新的對象并立即嘗試列出桶中已有的對象,但在該改變被傳送到S3的多個服務器前,該對象很可能不會出現在列表中。
(3)—個進程用新數據替換現有的對象并立即嘗試讀取它,但在該改變被傳送到S3 P的多個服務器前,S3可能會返回以前的數據。
(4)—個進程刪除現有的對象并立即嘗試讀取它,但在該改變被傳送到S3的多個服務器前,S3可能會返回被刪除的數據。
(5)—個進程刪除現有的對象并立即嘗試列出桶中的所有對象,但在該改變被傳送到S3的多個服務器前,S3可能會列出被刪除的對象。
出現這些現象是因為S3為了保證用戶數據的一致性而采取的一種折中手段,即在數據被充分傳播到所有的存放節點之前返回給用戶的仍是原數據,這其實也就是前面提到的Dynamo架構中采用的最終一致性模型。圖3-16給出了一個簡單的示意圖。

和前面提到的Dynamo架構不同,當用戶對同一桶的同一對象先后進行兩次不同的操作時,后一次操作值會直接覆蓋前一次操作。比如,對于名為chinacloud的桶中的對象A先設定一個值為100,后來又設定其值為150,則A的最后值為150。這種方法看似簡單卻很有效。