本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
全域資料表概觀
關鍵事實
-
全球資料表有兩種版本:2017.11.29 版 (舊版) (有時稱為 v1) 和 2019.11.21 版 (目前) (有時稱為 v2)。本指南僅著重於目前的版本。
-
DynamoDB (不含全域資料表) 是一項區域性服務,這表示它具有高度可用性和內部彈性,可應對基礎設施故障,包括整個可用區域的故障。單一區域 DynamoDB 資料表的設計可提供 99.99% 的可用性。如需詳細資訊,請參閱 DynamoDB 服務層級協議 (SLA)
。 -
DynamoDB 全域資料表會在兩個或多個區域之間複寫其資料。多區域 DynamoDB 資料表專為 99.999% 的可用性而設計。透過適當的規劃,全域資料表可協助建立可應對區域性故障的架構。
-
DynamoDB 沒有全域端點。所有請求都會向區域端點提出,該端點會存取該區域本機的全域資料表執行個體。
-
對 DynamoDB 的呼叫不應跨區域進行。最佳實務是供一個區域主目錄的應用程式直接存取其區域的本機 DynamoDB 端點。如果在 區域 (DynamoDB 層或周圍的堆疊) 中偵測到問題,則最終使用者流量應路由到在不同區域中託管的不同應用程式端點。全域資料表可確保位於每個區域中的應用程式可以存取相同的資料。
一致性模式
建立全域資料表時,您可以設定其一致性模式。全域資料表支援兩種一致性模式:多區域最終一致性 (MREC) 和多區域強式一致性 (MRSC),已於 2025 年 6 月推出。
如果您在建立全域資料表時未指定一致性模式,全域資料表會預設為 MREC。全域資料表不能包含以不同一致性模式設定的複本。您無法在建立全域資料表之後變更其一致性模式。
MREC 的重要事實
-
使用 MREC 的全域資料表採用主動-主動複寫模型。從 DynamoDB 的角度來看,每個區域中的資料表具有相同地位,可以接受讀取和寫入請求。收到寫入請求後,本機複本資料表會將寫入操作複寫到背景中其他參與的遠端區域。
-
單獨複製項目。在單一交易中更新的項目可能無法一起複寫。
-
來源區域中的每個資料表分割區會與其他分割區平行複寫其寫入操作。遠端區域內的寫入操作序列可能與來源區域內發生的寫入操作序列不符。如需有關資料表分割區的詳細資訊,請參閱部落格文章擴展 DynamoDB:分割區、快捷鍵和熱分割會如何影響效能
。 -
新寫入的項目通常會在一秒內傳播到所有複本列表。靠近區域的傳播速度往往更快。
-
Amazon CloudWatch 為每個區域對提供一個
ReplicationLatency
指標。其計算方式為查看抵達項目、比較其抵達時間與初始寫入時間,以及計算平均值。計時會儲存在來源區域的 CloudWatch 當中。檢視平均和最大計時有助於判斷平均和最壞情況的複寫延遲。此延遲沒有 SLA。 -
如果個別項目在兩個不同區域中大約同時 (在此
ReplicationLatency
視窗中) 更新,且第二個寫入操作發生在第一個寫入操作複寫之前,則可能會發生寫入衝突。使用 MREC 的全域資料表會根據寫入操作的時間戳記,使用最後一個寫入器獲勝機制來解決此類衝突。第一個操作「遺失」到第二個操作。這些衝突不會記錄在 CloudWatch 或 中 AWS CloudTrail。 -
每個項目都有一個作為私有系統屬性保留的最後寫入時間戳記。最後一個寫入器獲勝方法的實作方式是使用條件式寫入操作,要求傳入項目的時間戳記大於現有項目的時間戳記。
-
全域資料表會將所有項目複寫到所有參與區域。如果您想要有不同的複寫範圍,您可以建立多個全域資料表,並為每個資料表指派不同的參與區域。
-
即使複本區域離線或
ReplicationLatency
成長,本機區域也接受寫入操作。本機資料表會繼續嘗試將項目複製到遠端資料表,直到每個項目成功為止。 -
萬一區域完全離線,稍後重新上線時,所有待處理的傳出和傳入複寫都會重試。不需要特殊動作即可使資料表恢復同步。最後一個寫入器獲勝機制可確保資料最終一致。
-
您可以隨時將新區域新增至 DynamoDB MREC 資料表。DynamoDB 會處理初始同步和持續複寫。您也可以移除區域 (甚至是原始區域),這會刪除該區域中的本機資料表。
關於 MRSC 的關鍵事實
-
使用 MRSC 的全域資料表也會採用主動-主動複寫模型。從 DynamoDB 的角度來看,每個區域中的資料表具有相同地位,可以接受讀取和寫入請求。在寫入操作傳回成功回應之前,MRSC 全域資料表複本中的項目變更會同步複寫到至少一個其他區域。
-
任何 MRSC 複本上高度一致的讀取操作一律會傳回項目的最新版本。條件式寫入操作一律會根據項目的最新版本評估條件表達式。更新一律會針對項目的最新版本運作。
-
MRSC 複本上的最終一致讀取操作可能不會包含最近在其他區域中發生的變更,甚至可能不會包含最近在同一區域中發生的變更。
-
寫入操作在嘗試修改已在另一個區域中修改的項目時失敗,但有
ReplicatedWriteConflictException
例外。發生ReplicatedWriteConflictException
例外狀況而失敗的寫入操作可以重試,如果項目不再在其他區域中修改,則寫入操作將會成功。 -
使用 MRSC 時,寫入操作和高度一致讀取操作的延遲較高。這些操作需要跨區域通訊。此通訊傾向於根據所存取區域與參與全域資料表之最近區域之間的往返延遲來增加延遲。(如需詳細資訊,請參閱 AWS re:Invent 2024 簡報,多區域與 Amazon DynamoDB 全域資料表的高度一致性
。) 最終一致的讀取操作不會遇到額外的延遲。有一個開放原始碼測試工具 ,可讓您實驗性地計算 區域的這些延遲。 -
單獨複製項目。使用 MRSC 的全域資料表不支援交易 APIs。
-
MRSC 全域資料表必須部署在剛好三個區域中。您可以使用三個複本或兩個複本和一個見證來設定 MRSC 全域資料表。見證是 MRSC 全域資料表的元件,其中包含寫入全域資料表複本的最新資料。見證提供完整複本的選用替代方案,同時支援 MRSC 的可用性架構。您無法對見證執行讀取或寫入操作。見證不會產生儲存或寫入成本。見證位於與兩個複本不同的區域內。
-
若要建立 MRSC 全域資料表,您可以新增一個複本和見證,或將兩個複本新增至不包含資料的現有 DynamoDB 資料表。您無法將其他複本新增至現有的 MRSC 全域資料表。您無法從 MRSC 全域資料表刪除單一複本或見證。您可以從 MRSC 全域資料表刪除兩個複本,或刪除一個複本和見證。第二個案例會將剩餘的複本轉換為單一區域 DynamoDB 資料表。
-
您可以從 DescribeTable API 的輸出,判斷 MRSC 全域資料表是否已設定見證,以及其設定的區域。見證由 DynamoDB 擁有和管理,不會出現在設定見證的區域中的 AWS 帳戶 中。
-
MRSC 全域資料表可在下列區域集中使用:
-
美國區域集:美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)
-
歐洲區域集:歐洲 (愛爾蘭)、歐洲 (倫敦)、歐洲 (巴黎)、歐洲 (法蘭克福)
-
AP 區域集:亞太區域 (東京)、亞太區域 (首爾) 和亞太區域 (大阪)
-
-
MRSC 全域資料表不能跨越區域集。例如,MRSC 全域資料表不能同時包含來自美國和歐洲區域集的複本。
-
MRSC 全域資料表不支援存留時間 (TTL)。
-
MRSC 全域資料表不支援本機次要索引 (LSIs)。
-
CloudWatch Contributor Insights 資訊只會針對發生 操作的區域進行報告。
-
只要託管複本或見證的第二個區域可用於建立仲裁,本機區域就會接受所有讀取和寫入操作。如果第二個區域無法使用,則本機區域只能服務最終一致讀取。
-
萬一區域完全離線,稍後重新上線時,就會自動趕上進度。在趕上之前,寫入操作和強式一致讀取操作會傳回錯誤。不過,最終一致讀取操作將傳回到目前為止傳播到 區域的資料,並在領導節點和本機複本之間具有一般的本機一致性行為。不需要特殊動作即可讓資料表恢復同步
使用案例
MREC 全域資料表提供下列優點:
-
低延遲讀取操作。您可以將資料副本放在更接近最終使用者的位置,以減少讀取操作期間的網路延遲。資料會保持與
ReplicationLatency
值一樣新鮮。 -
低延遲寫入操作。最終使用者可以寫入附近的區域,以減少網路延遲和完成寫入操作的時間。必須謹慎路由寫入流量,以確保沒有衝突。下一節將討論路由的技術。
-
無縫區域遷移。您可以新增區域,然後刪除舊區域,將部署從一個區域遷移到另一個區域,而不需要在資料層停機。
MREC 和 MRSC 全域資料表都提供以下好處:
-
提高彈性和災難復原。如果區域效能降低或完全中斷,您可以將其疏散 (也就是移開部分或所有前往該區域的請求)。使用全域資料表可將 DynamoDB SLA
每月執行時間百分比從 99.99% 增加到 99.999%。使用 MREC 支援以秒為單位測量的復原點目標 (RPO) 和復原時間目標 (RTO)。使用 MRSC 支援 RPO 為零。 例如,在 re:Invent 2022 中介紹
的 Fidelity 投資,說明他們如何使用 DynamoDB 全域資料表做為訂單管理系統。他們的目標是在無法達到內部部署處理同時維持可用區域和區域故障彈性的規模上,實現可靠的低延遲處理。
如果您的目標是彈性和災難復原,則 MRSC 資料表具有較高的寫入延遲和更高的強式一致讀取延遲,但支援 RPO 為零。MREC 全域資料表支援相當於複本之間複寫延遲的 RPO,通常為幾秒鐘,取決於複本區域。如需詳細資訊,請參閱 DynamoDB 文件中的一致性模式。