本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
多區域基礎 2:了解資料
當您採用多區域架構時,管理資料是一個非小問題。區域之間的地理距離會強加不可避免的延遲,其表現為跨區域複寫資料所需的時間。必須權衡可用性、資料一致性,以及為使用多區域架構的工作負載引入更高的延遲。無論您是使用非同步還是同步複寫,您都需要修改應用程式來處理複寫技術強加的行為變更。資料一致性和延遲的挑戰使得採用專為單一區域設計的現有應用程式變得非常困難,並使其成為多區域應用程式。了解特定工作負載的資料一致性要求和資料存取模式對於權衡權衡至關重要。
2.a:了解資料一致性要求
CAP 理論提供有關資料一致性、可用性和網路分割區之間權衡的推理參考。工作負載只能同時滿足其中兩個需求。根據定義,多區域架構包含區域之間的網路分割區,因此您必須在可用性和一致性之間進行選擇。
如果您選取跨區域資料的可用性,則在交易寫入操作期間不會產生顯著的延遲,因為在複寫完成之前,對跨區域之間遞交資料非同步複寫的依賴會導致跨區域的一致性降低。使用非同步複寫時,當主要區域發生故障時,寫入操作很可能會等待主要區域的複寫。這會導致在複寫恢復之前無法使用最新資料的案例,並且需要調節程序來處理未從發生中斷的區域複寫的傳輸中交易。此案例需要了解您的商業邏輯,並建立特定程序來重播交易或在區域之間比較資料存放區。
對於偏好非同步複寫的工作負載,您可以使用 服務,例如 Amazon Aurora
設計工作負載以利用事件驅動型架構是多區域策略的優勢,因為它意味著工作負載可以接受資料的非同步複寫,並透過重新播放事件來啟用狀態重建。由於串流和簡訊服務緩衝訊息承載資料位於單一區域,因此區域容錯移轉或容錯回復程序必須包含重新導向用戶端輸入資料流程的機制。此程序也必須協調存放在發生中斷的區域中的傳輸中或未交付承載。
如果您選擇 CAP 一致性要求,並使用跨 區域的同步複寫資料庫來支援同時從多個 區域執行的應用程式,則可以消除資料遺失的風險,並在區域之間保持資料同步。不過,這帶來了更高的延遲特性,因為寫入需要遞交到多個區域,而且區域彼此之間可以是數百或數千英里。您需要在應用程式設計中考慮此延遲特性。此外,同步複寫可能會帶來相互關聯的失敗機會,因為寫入需要遞交至多個區域才能成功。如果一個區域內有損害,您將需要形成規定人數,才能成功寫入。這通常包括在三個區域中設定資料庫,並建立三個區域中的兩個仲裁。Paxos
當寫入涉及跨多個區域的同步複寫以滿足強大的一致性要求時,寫入延遲會增加一個數量級。較高的寫入延遲並非您通常可以在沒有重大變更的情況下修改為應用程式,例如重新檢視應用程式的逾時和重試策略。理想情況下,在第一次設計應用程式時,必須將其納入考量。對於同步複寫為優先順序的多區域工作負載, AWS Partner 解決方案
2.b:了解資料存取模式
工作負載資料存取模式是讀取密集型或寫入密集型。了解特定工作負載的此特性可協助您選取適當的多區域架構。
對於完全唯讀的讀取密集型工作負載,例如靜態內容,您可以實現主動-主動
對於讀取流量百分比大於寫入流量的讀取密集型工作負載,您可以使用 aread local, write global strategy
Aurora 全域資料庫
對於寫入密集型工作負載,應選取主要區域,且應將容錯移轉至待命區域的功能設計為工作負載。與主動-主動方法相比,主要-待命
大多數使用多區域方法來恢復的工作負載不需要主動-主動方法。您可以使用碎片
您可以結合碎片方法與主要待命方法,為碎片提供容錯移轉功能。您需要將經過測試的容錯移轉程序設計成工作負載,以及資料對帳的程序,以確保容錯移轉後資料存放區的交易一致性。本指南稍後會詳細說明這些內容。
關鍵指引
-
當發生故障時,等待複寫的寫入不會遞交至待命區域的可能性很高。在複寫恢復之前,資料將無法使用 (假設為非同步複寫)。
-
在容錯移轉過程中,將需要資料對帳程序,以確保使用非同步複寫的資料存放區維持交易一致狀態。這需要特定的商業邏輯,而不是由資料存放區本身處理的邏輯。
-
需要強式一致性時,需要修改工作負載,以容忍同步複寫的資料存放區所需的延遲。