本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在線上遷移期間寫入新資料
線上遷移計畫的第一步是確保應用程式寫入的任何新資料都存放在兩個資料庫、您現有的 Cassandra 叢集和 Amazon Keyspaces 中。目標是跨兩個資料存放區提供一致的檢視。您可以將所有新的寫入套用至兩個資料庫來執行此操作。若要實作雙寫入,請考慮下列兩個選項之一。
應用程式雙重寫入 – 您可以利用現有的 Cassandra 用戶端程式庫和驅動程式,在應用程式程式碼變更最少的情況下實作雙重寫入。您可以在現有應用程式中實作雙寫入,或在架構中建立新的 layer 來處理雙寫入。如需詳細資訊,以及顯示如何在現有應用程式中實作雙重寫入的客戶案例研究,請參閱 Cassandra 遷移案例研究
。 實作雙重寫入時,您可以將一個資料庫指定為領導者,將另一個資料庫指定為跟隨者。這可讓您繼續寫入原始來源或領導資料庫,而不會讓後續的寫入失敗,或目的地資料庫中斷應用程式的關鍵路徑。
您可以使用 Amazon Simple Queue Service 在無效字母佇列 (DLQ) 中記錄失敗的寫入,而不是重試失敗的寫入至追隨者。DLQ 可讓您分析對追隨者的失敗寫入,並判斷為什麼在目的地資料庫中處理未成功。
如需更複雜的雙寫入實作,您可以遵循使用 saga 模式設計一系列本機交易的 AWS 最佳實務。saga 模式可確保如果交易失敗,saga 會執行補償性交易,以還原先前交易所做的資料庫變更。
使用雙寫入進行線上遷移時,您可以依照 saga 模式設定雙寫入,以便每次寫入都是本機交易,以確保異質資料庫之間的原子操作。如需使用建議的 設計模式來設計分散式應用程式的詳細資訊 AWS 雲端,請參閱雲端設計模式、架構和實作。
訊息層雙重寫入 – 您可以使用現有的訊息層對 Cassandra 和 Amazon Keyspaces 執行雙重寫入,而不是在應用程式層實作雙重寫入。
若要這樣做,您可以將其他取用者設定為您的簡訊平台,將寫入傳送至這兩個資料存放區。此方法使用訊息層提供簡單的低程式碼策略,在兩個資料庫之間建立兩個最終一致的檢視。