寫入任何區域模式 (無優先層級) - AWS 方案指引

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

寫入任何區域模式 (無優先層級)

任何區域寫入模式的寫入,如下圖所示,完全作用中,不會限制寫入操作可能發生的位置。任何區域都可以隨時接受寫入請求。這是最簡單的模式;不過,它只能與某些類型的應用程式搭配使用。此模式適用於所有 MRSC 資料表。當所有寫入操作都是等冪時,它也適用於 MREC 資料表。冪表示它們可安全重複,因此跨區域並行或重複寫入操作不會發生衝突,例如,當使用者更新其聯絡人資料時。它也適用於僅附加資料集,其中所有寫入操作都是確定性主索引鍵下的唯一插入,這是等冪的特殊情況。最後,此模式適用於可接受衝突寫入操作風險的 MREC。

DynamoDB 全域資料表中沒有主要寫入模式。

寫入任何區域模式是最直覺式的實作架構。因為任何區域都可以隨時成為寫入目標,路由會更加容易。容錯移轉更容易,因為使用 MRSC 資料表時,項目一律會同步,而使用 MREC 資料表時,任何最近的寫入操作都可以重播至任何次要區域任意次數。盡可能之下,您應該以此為寫入模式進行設計。

例如,數個影片串流服務使用全域資料表來追蹤書籤、檢閱、監看狀態旗標等。這些部署使用 MREC 資料表,因為它們需要分散在世界各地的複本,每個複本都提供低延遲的讀取和寫入操作。這些部署可以使用寫入至任何區域模式,只要它們確保每個寫入操作都是等冪的。如果每次更新 - 例如,設定新的最新時間碼、指派新的檢閱,或設定新的監看狀態 - 直接指派使用者的新狀態,且項目的下一個正確值不取決於其目前值,就會發生這種情況。如果使用者的寫入請求被路由到不同的區域,則上次寫入操作將保留,並且全域狀態將根據上次指派進行和解。此模式中的讀取操作最終會一致,且會因最新ReplicationLatency值而延遲。

在另一個範例中,一家金融服務公司使用全域資料表作為系統的一部分來維護每個客戶使用借記卡購買的動作記錄,以計算該客戶的現金回饋獎勵。他們想要保留每個客戶RunningBalance的項目。此寫入模式自然不等冪,因為當交易串流時,它們會使用新正確值取決於目前值的ADD表達式來修改平衡。透過使用 MRSC 資料表,它們仍然可以寫入任何區域,因為每個ADD呼叫一律會針對項目的最新值運作。

第三個範例涉及提供線上廣告放置服務的公司。此公司決定可接受低資料遺失風險,以實現寫入任何區域模式的設計簡化。當他們提供廣告時,他們只有幾毫秒的時間來擷取足夠的中繼資料,以決定要顯示哪個廣告,然後記錄廣告曝光,讓他們不會很快重複相同的廣告。它們使用全域資料表,為世界各地的最終使用者取得低延遲讀取操作和低延遲寫入操作。它們會在單一項目中記錄使用者的所有廣告曝光,以不斷增長的清單表示。他們使用一個項目,而不是附加到項目集合,因此可以在每個寫入操作中移除較舊的廣告曝光,而無需支付刪除操作的費用。此寫入操作不等冪;如果同一個最終使用者在大約相同時間看到來自多個區域的廣告,則廣告曝光的一個寫入操作可能會覆寫另一個。風險是使用者偶爾可能會看到廣告重複一次。他們決定這是可以接受的。