寫入單一區域模式 (單一優先層級) - AWS 規定指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

寫入單一區域模式 (單一優先層級)

寫入至一個區域寫入模式為主動-被動模式,並將所有資料表寫入作業路由至單一主動區域。(DynamoDB 沒有單一作用中區域的概念;DynamoDB 外部的圖層負責管理這個功能。) 寫入一個區域模式可確保寫入作業一次僅流向一個區域,以避免寫入衝突。當您想要使用條件運算式或交易時,此寫入模式會有所幫助。除非您知道自己正在針對最新資料採取行動,否則這些運算式是不可能的,因此它們需要將所有寫入請求傳送至具有最新資料的單一區域。

最終一致的讀取作業可以移至任何複本區域,以達到較低的延遲。強度一致的讀取作業必須移至單一主要區域。

單一主要寫入模式

有時候需要更改活動區域以應對區域故障,如後面所討論的那樣。有些使用者會定期變更目前作用中的 [區域],例如實作follow-the-sun部署。這會將活動區域放在活動最多的地理位置附近(通常是白天的位置,因此名稱),從而導致最低的延遲讀取和寫入操作。它還具有每天調用變更區域的代碼的副作用,並確保它在任何災難恢復之前都經過充分的測試。

被動區域可能會保留 DynamoDB 周圍的縮減規模基礎架構,該基礎架構只有在成為作用中區域時才會建立。本指南不涵蓋指示燈和暖待機設計。如需詳細資訊,您可以閱讀部落格文章的災難復原 (DR) 架構AWS,第三部分:指示燈和暖待命

當您使用全域資料表進行低延遲、全域分散式讀取作業時,使用寫入一個區域模式很有效。一個例子是一家大型社交媒體公司,需要在世界各地的每個區域都具有相同的參考數據。他們不經常更新數據,但是當他們這樣做時,他們只寫入一個區域,以避免任何潛在的寫入衝突。讀取操作始終允許從任何區域。

作為另一個例子,考慮前面討論的金融服務公司實施了每日現金回饋計算。他們使用寫入任何區域模式來計算餘額,但寫入一個區域模式來跟踪現金返還款項。如果他們想為每花費 10 美元獎勵一分錢,則必須Query為前一天的所有交易,計算總支出,將現金返還決定寫入新表格,刪除查詢的項目集以將其標記為已消耗,並將其替換為單個項目,該項目存儲應進入第二天計算的任何剩餘部分。這項工作需要事務,因此在寫入一個 Region 模式時效果更好。只要工作負載沒有重疊的機會,即使在同一個資料表上,應用程式也可以混合寫入模式。