全域資料庫 - AWS 規定指引

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

全域資料庫

關鍵事實

  • 全域資料表有兩個版本:版本 2017.11.29 (舊版) (有時稱為 v1) 和版本 2019.11.21 (目前版本) (有時稱為 v2)本指南僅著重於當前版本。

  • DynamoDB (不含全域資料表) 是一項區域服務,這表示它具有高度可用性,並具有本質上能夠抵禦基礎架構故障,包括整個可用區域的故障。單一區域 DynamoDB 表格的設計可提供 99.99% 的可用性。如需詳細資訊,請參閱 DynamoDB 服務水準協議 (SLA)。

  • DynamoDB 全域資料表會在兩個或多個區域之間複寫其資料。多區域 DynamoDB 表格的設計可提供 99.999% 的可用性。透過適當的規劃,全域資料表可協助建立能夠抵禦區域故障的架構。

  • 全域資料表採用主動-主動式複寫模型。從 DynamoDB 的角度來看,每個區域中的資料表具有相同地位,可以接受讀取和寫入請求。收到寫入要求後,本機複本表格會在背景中將寫入作業複寫到其他參與的遠端區域。

  • 單獨複製項目。在單一交易中更新的項目可能不會一起複寫。

  • 來源區域中的每個資料表分割區都會與其他分割區 parallel 複寫其寫入作業。遠端區域內的寫入作業順序可能與來源區域內發生的寫入作業順序不相符。如需有關資料表分割區的詳細資訊,請參閱部落格文章擴展 DynamoDB:分割區、快捷鍵和熱分割會如何影響效能

  • 新寫入的項目通常會在一秒內傳播到所有複本列表。靠近區域的傳播速度往往更快。

  • Amazon CloudWatch 為每個區域對提供一個ReplicationLatency指標。它是通過查看到達項目,將其到達時間與初始寫入時間進行比較,並計算平均值來計算。計時會儲存CloudWatch在來源區域內。檢視平均和最大計時對於判斷平均和最差情況的複寫延遲非常有用。此延遲沒有 SLA。

  • 如果個別項目在兩個不同的區域中大約同時更新 (在此ReplicationLatency視窗內),而第二個寫入作業在複寫第一個寫入作業之前發生,則可能會發生寫入衝突。全域資料表會根據寫入作業的時間戳記,使用最後一個寫入器 wins 機制來解決這類衝突。第一個操作「失去」到第二個操作。這些衝突不會記錄在CloudWatch或中AWS CloudTrail。

  • 每個項目都有一個作為私有系統屬性保留的最後寫入時間戳記。最後一個作家 wins 方法是通過使用條件寫操作來實現的,該操作要求傳入項目的時間戳大於現有項目的時間戳。

  • 全域表格會將所有項目複製到所有參與的區域。如果您想要有不同的複寫範圍,您可以建立多個全域資料表,並為每個表格指派不同的參與區域。

  • 即使複本區域離線或ReplicationLatency成長,本機區域也會接受寫入作業。本機資料表會繼續嘗試將項目複製到遠端資料表,直到每個項目成功為止。

  • 萬一區域完全離線,稍後重新上線時,所有擱置的輸出和輸入複製都會重試。不需要特殊動作即可使資料表恢復同步。最後一個作家 wins 機制可確保數據最終變得一致。

  • 您可以隨時將新區域新增至 DynamoDB 資料表。DynamoDB 會處理初始同步處理和進行中的複寫作業。您也可以刪除區域(甚至是原始區域),這將刪除該區域中的本地表。

  • DynamoDB 沒有全域端點。所有要求都會傳送至區域端點,該端點會存取該區域本機的全域資料表執行個體。

  • 對 DynamoDB 的呼叫不應跨區域進行。最佳做法是針對一個區域的應用程式直接存取其區域的本機 DynamoDB 端點。如果在區域內 (在 DynamoDB 層或周圍堆疊中) 偵測到問題,則應將使用者流量路由到託管在不同區域的不同應用程式端點。全域資料表可確保每個區域中的應用程式都能存取相同的資料。

使用案例

全域資料表提供下列常見優點:

  • 較低延遲的讀取作業。您可以將資料副本放置在靠近一般使用者的位置,以減少讀取作業期間的網路延遲。資料會保持與ReplicationLatency值一樣新鮮。

  • 低延遲的寫入作業。最終用戶可以寫入附近的區域,以減少網絡延遲和完成寫入操作的時間。寫入流量必須小心路由,以確保沒有衝突。路由技術將在後面的章節中討論。

  • 提高彈性和災難復原。如果某個區域的效能降低或完全中斷,您可以撤除該區域 (移除移至該區域的部分或所有要求),並符合以秒為單位測量的復原點目標 (RPO) 和復原時間目標 (RTO)。使用全域資料表也會將每月正常執行時間百分比的 DynamoDB SLA 從 99.99% 提高到 99.999%。

  • 無縫區域遷移。您可以新增區域,然後刪除舊區域,將部署從一個區域移轉到另一個區域,而不會在資料層停機。

例如,富達投資在「re: Invent 2022」上介紹了如何將 DynamoDB 全域表用於其訂單管理系統。他們的目標是以內部部署處理無法達到的規模實現可靠的低延遲處理,同時還能保持對可用區域和區域故障的彈性。