本頁面說明哪些 Cloud Storage 作業具有同步一致性,以及哪些作業具有最終一致性。在可快取且可公開讀取的物件中,您可以控制物件作業的一致性程度。
同步一致性作業
Cloud Storage 可在下列作業中提供全域同步一致性:
- 值區清單
- 建立後讀取 Bucket
- 值區中繼資料更新後的讀取作業
- Bucket 刪除後的讀取作業
- 物件寫入後的讀取作業
- 中繼資料更新後的物件讀取作業
- 刪除後的物件讀取作業
- 物件清單
將物件寫入 Cloud Storage 時 (例如上傳、組合或複製物件),只要收到寫入要求的回應,物件就能立即用於讀取和中繼資料作業。這項規定適用於所有 bucket 和所有儲存空間類別,也適用於建立新物件和取代現有物件。Cloud Storage 也提供資源 (例如資料夾和受管理資料夾) 的建立後讀取、中繼資料更新後讀取、刪除後讀取,以及列出一致性。
由於寫入作業具有同步一致性,因此即使是位於雙區域或多區域的值區,您在寫入後讀取物件,或是更新中繼資料後讀取物件時,也絕不會收到 404 Not Found
回應或過時的資料。如果資料尚未跨區域複製,但物件最初寫入的位置無法使用,嘗試存取物件時會傳回可重試的 500
錯誤回應。
全域同步一致性也能延伸適用於物件的刪除作業。如果刪除要求成功,立即嘗試下載物件或其中繼資料將會出現 404 Not Found
狀態碼。您會收到 404
錯誤是因為刪除作業成功後該物件就不再存在。
值區清單和物件清單具有同步一致性:建立值區或物件後,如果立即執行相關的 list
作業,新建立的值區或物件會出現在傳回的清單中。
就值區而言,雖然中繼資料更新對於中繼資料更新後的讀取作業具有同步一致性,但產生的設定變更可能需要一些時間才能生效。舉例來說,如果您在值區上啟用物件版本管理,您應該至少等待 30 秒後再執行刪除或取代物件。
同樣地,HMAC 金鑰的狀態變更要求送出後,最多需要 3 分鐘才會生效。舉例來說,如果您停用 HMAC 金鑰,請至少等待 3 分鐘再提出刪除金鑰的要求,因為在停用後的 3 分鐘內嘗試刪除金鑰可能會失敗。
最終一致性作業
下列作業具有最終一致性:
- 授予或撤銷資源的存取權。
- 刪除後重新建立 bucket。
一般來說,這些作業一分鐘後才會生效,在某些情況下,可能要幾分鐘後才會生效。
本文透過下列範例來說明最終一致性引起的行為:如果您將使用者的值區存取權移除,這項變更會立即反映在值區的中繼資料中,但是該使用者短時間內可能還是會擁有該值區的存取權。
刪除後重新建立的 Bucket 可能需要幾分鐘才能存取。
快取控制與一致性
可公開讀取的快取物件可能不具有同步一致性。如果您允許物件受到快取,而且在更新或刪除時該物件處在快取中,則必須等到快取的生命週期結束後,系統才會更新或刪除經過快取的物件。
物件的快取生命週期是由與物件相關的 Cache-Control
中繼資料所定義。您可以使用 Cache-Control
要求標頭來設定 Cache-Control
中繼資料,這個要求標頭可包含在物件的初始上傳作業中,或是後續物件中繼資料的更新作業中。由於您可以控管 Cache-Control
中繼資料,因此您也可以控制快取物件的一致性程度。此外,雖然向物件發出的要求可以包含自己的 Cache-Control
標頭,但如果這些標頭設為避開快取的內容,則 Cloud Storage 會忽略這些標頭。
不可分割的作業
Cloud Storage 可確保大多數涉及個別物件的作業 (例如上傳物件、更新物件的中繼資料、覆寫物件及刪除物件) 具有原子性。
批次要求會將個別作業匯總為單一要求,但並非不可分割,因為批次中可能部分作業失敗,部分作業成功。
快取可能會導致您收到物件的舊版,而且如果您執行範圍讀取時未指定生成編號,物件在連續範圍讀取之間遭到覆寫,資料可能會損毀。最佳做法是使用前提條件,確保擷取正確的物件版本。
後續步驟
- 瞭解如何使用前提條件來避免競爭狀況。
- 進一步瞭解 Cloud Storage 中的快取。
- 瞭解要求比率和存取權分配指南。