簡體   English   中英

寫后讀一致性對 S3 中的新對象 PUT 的真正含義是什么?

[英]What does read-after-write consistency really mean on new object PUT in S3?

亞馬遜文檔 ( http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel ) 指出:

“Amazon S3 為所有區域的 S3 存儲桶中的新對象的 PUTS 提供了寫后讀一致性,但有一個警告。”

忽略警告,這意味着客戶端在為新對象執行 PUT 之后發出 GET 保證會獲得正確的結果。 我的問題是,如果 GET 是從不同的客戶端發出的,而不是執行 PUT 的客戶端(當然假設 GET 按時間順序遵循 PUT),則保證是否也適用? 換句話說,寫后讀一致性是簡單的讀你寫一致性還是適用於所有客戶端?

我懷疑答案是它在全球范圍內有效,但找不到明確的答案。

是的,這將是一致的。

“客戶端”的概念無關緊要,因為每個 API 調用都是獨立的。

us-east-1區域(以前稱為US-Standard )以前沒有寫后讀一致性,但現在在所有區域中都提供了

我一直假設您也是如此,即寫后讀適用於所有客戶端,而不僅僅是執行寫入的客戶端。

這篇博文似乎證實了這一點(就其價值而言),但我也沒有在 AWS 官方文檔中找到任何明確的答案:

https://shlomoswidler.com/2009/12/read-after-write-consistency-in-amazon.html

什么是寫后讀一致性?

寫后讀一致性使事情變得更緊,保證所有客戶端都能立即看到新數據。 通過寫后讀一致性,新創建的對象或文件或表行將立即可見,沒有任何延遲。

截至 2020 年 12 月 1 日( https://aws.amazon.com/blogs/aws/amazon-s3-update-strong-read-after-write-consistency/)S3確實提供了強讀后寫一致性。 但是,仍然不清楚來自不同客戶端(發送 PUT 請求的客戶端除外)的 GET 是否會看到更新的結果。 博客提到,“你寫的就是你會讀的,LIST的結果將准確反映桶中的內容。”

此外,在分布式系統文獻中,有“讀你自己寫”的一致性模型,“寫后跨客戶端的一致讀”是最終目標(並不是說這是不可能的)。

我懷疑 S3 對於來自不同客戶端的讀取最終是一致的。 我覺得 AWS 在這一點上應該更清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM