複製設定範例
本頁面說明 Bigtable 複製功能啟用後的常見用途,接著會介紹可用於支援這些用途的設定:
本頁面也會說明如何判斷其他用途應使用哪些設定。
閱讀本頁面之前,請先熟悉 Bigtable 複製功能總覽。
在您將叢集新增到叢集執行個體之前,必須注意更改複製表上的垃圾收集政策時適用的限制。
在大多數情況下,請為執行個體的叢集啟用自動調度資源。自動調度資源功能可讓 Bigtable 根據工作負載,自動新增及移除叢集節點。
如果選擇手動節點分配,請在執行個體中的每個叢集佈建足夠的節點,確保每個叢集除了處理來自應用程式的負載,也能處理複製作業。如果叢集的節點數量不足,複製延遲可能會增加,叢集也可能因記憶體累積而發生效能問題,且系統可能會拒絕寫入執行個體中的其他叢集。
本文中的範例說明如何建立執行個體,但您也可以將叢集新增至現有執行個體。
區隔批次分析工作負載與其他應用程式
當您使用單一叢集執行需要多次大量讀取操作的批次分析工作,以及會混合執行讀取與寫入操作的應用程式時,龐大的批次工作會拖慢應用程式使用者的作業。複製功能可讓您將應用程式設定檔和單叢集轉送功能搭配使用,把批次分析工作和應用程式流量轉送至其他叢集,避免批次工作對應用程式的使用者造成影響。
建立具有兩個叢集的執行個體。
建立兩個應用程式設定檔,並分別命名為
live-traffic
和batch-analytics
。如果叢集 ID 是
cluster-a
和cluster-b
,則live-traffic
應用程式設定檔會將要求轉送到cluster-a
,而batch-analytics
應用程式設定檔會將要求轉送到cluster-b
。這項設定可為使用相同應用程式設定檔的應用程式提供讀寫一致性,但無法為使用不同應用程式設定檔的應用程式提供一致性。您可以視需要在
live-traffic
應用程式設定檔中啟用單一資料列交易。假如您只使用這個設定檔進行讀取,則不需要在batch-analytics
應用程式設定檔中啟用單一資料列交易。使用
live-traffic
應用程式設定檔,執行即時流量工作負載。在執行即時流量工作負載的過程中,使用
batch-analytics
應用程式設定檔執行唯讀批次工作負載。
如何從較大的工作負載中區隔兩個較小的工作負載:
建立具有三個叢集的執行個體。
這些步驟假設您的叢集使用名為
cluster-a
、cluster-b
和cluster-c
的 ID。建立下列應用程式設定檔:
live-traffic-app-a
:從您的應用程式到cluster-a
的單叢集轉送作業。live-traffic-app-b
:從您的應用程式到cluster-b
的單叢集轉送作業。batch-analytics
:從批次分析工作到cluster-c
的單叢集轉送作業。
使用即時流量應用程式設定檔,執行即時流量工作負載。
在執行即時流量工作負載的過程中,使用
batch-analytics
應用程式設定檔執行唯讀批次工作負載。
建立高可用性 (HA)
如果執行個體只有一個叢集,資料的耐用性和可用性將受限於該叢集所在的區域。複製功能會將資料的複本分別儲存在多個區域或地區,並視需要自動在叢集之間進行容錯移轉,進而改善耐用性和可用性。
如要針對高可用性 (HA) 用途設定執行個體,請建立新的應用程式設定檔 (須使用多叢集轉送),或是將預設的應用程式設定檔更新為使用多叢集轉送。這樣的設定可以提供最終一致性。使用多叢集轉送時,由於單一資料列交易會導致資料衝突,因此您將無法啟用單一資料列交易。
提升可用性的設定包括:
叢集位於三個以上的區域 (建議設定)。建議您為高可用性設定執行個體,其中包含 N+2 個叢集,且每個叢集都位於不同區域。舉例來說,如果服務資料所需的叢集數量下限為 2 個,您就需要有 4 個叢集的執行個體,才能維持高可用性。即使在極少數情況下,有兩個地區無法使用,這項設定也能確保運作時間。建議您將叢集分散到多個大陸。
範例設定:
cluster-a
在愛荷華州us-central1-a
區域cluster-b
位於比利時的europe-west1-d
區域cluster-c
位於臺灣的asia-east1-b
區域
兩個叢集位於不同區域的相同地區中。這個選項可在區域的可用性範圍內提供高可用性,並支援容錯移轉,不會產生跨區域複製費用,且容錯移轉時不會增加延遲時間。只要資料複製目標的任何區域為可用,即可使用複製 Bigtable 執行個體中的資料。
如要進一步瞭解特定地區的注意事項,請參閱「地理位置與區域」一文。
範例設定:
cluster-a
區域的australia-southeast1-a
cluster-b
區域的australia-southeast1-b
兩個叢集位於不同地區。這項多地區設定提供高可用性 (如上述的多區域設定),不過即使您無法連線至其中一個地區,也可以取得資料。
系統會依據複製地區之間的寫入作業向您收取費用。
範例設定:
cluster-a
位於東京的asia-northeast1-c
區域cluster-b
位於香港的asia-east2-b
區域
兩個叢集位於地區 A,第三個叢集位於地區 B。即使在無法連線至其中一個地區的情況下,這個選項讓您也能取得資料,並在地區 A 中提供額外容量。
系統會依據複製地區之間的寫入作業向您收取費用。如果您寫入至地區 A,由於地區 B 中只有一個叢集,因此系統會向您收取一次費用。如果您寫入至地區 B,由於地區 A 中有兩個叢集,因此系統會向您收取兩次費用。
範例設定:
cluster-a
位於比利時的europe-west1-b
區域cluster-b
位於比利時的europe-west1-d
區域- 芬蘭的
cluster-c
區域europe-north1-c
提供近乎即時的備份功能
在某些情況下 (例如您無法讀取過時資料),您一律需要將要求轉送至單一叢集。然而,您仍然可以用一個叢集處理要求,並讓另一個叢集保持近乎即時的備份。如果提供服務的叢集無法使用,您可以手動容錯移轉到備份叢集,讓停機時間降到最短。
如要針對這項用途設定執行個體,請建立應用程式設定檔 (須使用單叢集轉送),或是將預設的應用程式設定檔更新為使用單叢集轉送。您在應用程式設定檔中指定的叢集會處理收到的要求。另一個叢集會做為備用叢集使用,以供進行容錯移轉時所需。這樣的安排有時稱為主被動配置,可以提供同步一致性和讀寫一致性。您可以視需要在應用程式設定檔中啟用單一資料列交易。
如何實作這項設定:
使用應用程式設定檔搭配單叢集轉送,執行工作負載。
使用 Google Cloud 主控台監控執行個體的叢集,並確認只有一個叢集在處理收到的要求。
另一個叢集會繼續使用 CPU 資源執行複製功能及其他維護工作。
更新應用程式設定檔,使其指向執行個體中的第二個叢集。
您會收到有關失去讀寫一致性的警告訊息,這也代表已失去同步一致性。
如果您已啟用單一資料列交易,系統也會顯示資料可能遺失的警告。如果在容錯移轉期間傳送衝突寫入,就會遺失資料。
繼續監控您的執行個體。您應該會看到第二個叢集正在處理收到的要求。
保持高可用性和地區彈性
假設您在某一洲的兩個不同地區中有集中的客戶群。您希望透過 Bigtable 叢集,在儘可能接近每個集中客戶群的位置提供服務。您希望資料在每個地區內都具有高可用性,如有一或多個叢集無法使用,您可能會想使用容錯移轉選項。
以這個用途來說,您可以建立分別在地區 A 和地區 B 各有兩個叢集的執行個體。即使您無法連線至 Google Cloud 地區,這項設定也能提供高可用性。此外,這項設定還能提供地區彈性,因為即使某個區域無法使用,該區域的地區中還有另一個叢集可供使用。
您可以根據業務需求,針對這項用途選擇使用多叢集轉送或單叢集轉送。
如何針對這項用途設定執行個體:
建立具有四個叢集的 Bigtable 執行個體:兩個位於地區 A,兩個位於地區 B。相同地區的叢集必須位於不同區域。
範例設定:
cluster-a
位於孟買的asia-south1-a
區域cluster-b
位於孟買的asia-south1-c
區域cluster-c
位於東京的asia-northeast1-a
區域cluster-d
位於東京的asia-northeast1-b
區域
將應用程式伺服器放置在接近每個地區的位置。
您可以根據業務需求,針對這項用途選擇使用多叢集轉送或單叢集轉送。如果您使用多叢集轉送,Bigtable 會自動處理容錯移轉。如果您使用單叢集轉送,則必須自行判斷何時開始容錯移轉至不同的叢集。
單叢集轉送選項
無法使用某個區域或地區時,如果您不想讓 Bigtable 叢集自動容錯移轉,您可以針對此用途使用單叢集轉送。如果 Bigtable 開始轉送遙遠地區之間的流量,而您想要管理因此產生的費用和延遲時間,或是您偏好自行判斷或根據業務規則決定是否進行容錯移轉,建議您使用這個選項。
如要實作這項設定,請為每個會將要求傳送至執行個體的應用程式,建立至少一個應用程式設定檔 (需使用單叢集轉送)。您可以將應用程式設定檔轉送至 Bigtable 執行個體中的任何叢集。舉例來說,如果您在孟買執行三個應用程式,在東京執行六個應用程式,可以為孟買應用程式設定一個應用程式設定檔,將流量轉送到 asia-south1-a
,並為東京應用程式設定兩個應用程式設定檔,將流量轉送到 asia-south1-c
。針對東京應用程式,設定三個會路由至 asia-northeast1-a
的應用程式設定檔,以及三個會路由至 asia-northeast1-b
的應用程式設定檔。
使用此設定時,如有一或多個叢集無法使用,您可以執行手動容錯移轉,或選擇讓該區域中的資料暫時無法使用,直到該區域再次恢復可用。
多叢集轉送選項
如果您正在實作此用途,且希望當您的應用程式無法連線至一個地區時,Bigtable 會自動容錯移轉至另一個地區,請使用多叢集轉送。
如要實作這項設定,請為每個應用程式建立新的應用程式設定檔 (須使用多叢集轉送),或是將預設的應用程式設定檔更新為使用多叢集轉送。
這樣的設定可以提供最終一致性。如果某個地區無法使用,Bigtable 要求會自動傳送至另一個地區。發生這種情況時,您必須為傳送至另一個地區而支付網路流量的費用,且您的應用程式可能會因距離較遠而出現較長的延遲時間。
將資料儲存在距離使用者較近的位置
如果您的使用者遍布全球,您可以在距離使用者較近的位置執行應用程式,並將資料放置在儘可能接近應用程式的位置,藉此減少延遲。透過 Bigtable,您可以在多個 Google Cloud 地區中建立包含叢集的執行個體,您的資料會自動複製到每個地區。
以這個用途來說,請使用應用程式設定檔搭配單叢集轉送。由於叢集之間的距離,多叢集轉送不符合這個用途的需求。如果某個叢集無法使用,其多叢集應用程式設定檔會自動轉送遠距離的流量,您的應用程式可能會發生無法接受的延遲情況,並產生未預期的額外網路費用。
如何針對這項用途設定執行個體:
在三個不同的地理地區中建立包含叢集的執行個體,例如美國、歐洲和亞洲。
將應用程式伺服器放置在接近每個地區的位置。
建立類似以下的應用程式設定檔:
clickstream-us
:單叢集轉送至位於美國的叢集clickstream-eu
:單叢集轉送至位於歐洲的叢集clickstream-asia
:單叢集轉送至位於亞洲的叢集
在這項設定中,您的應用程式會將應用程式設定檔用於最接近的叢集。寫入任何叢集的內容會自動複製到另外兩個叢集。
其他用途
如果本頁面沒有說明您需要的用途,請運用下列問題來幫助您決定該如何設定應用程式設定檔:
您是否需要執行單一資料列交易? 例如讀取/修改/寫入作業 (包括遞增和附加),以及檢查/異動作業 (也稱為有條件的變動或有條件的寫入)?
要讓 Bigtable 自動處理容錯移轉嗎?
如果答案為肯定,您的應用程式設定檔就必須使用多叢集轉送。如果某個叢集無法處理收到的要求,Bigtable 會自動容錯移轉至另一個叢集。進一步瞭解自動容錯移轉。
您是否希望在主要叢集無法使用時,維護備份或備用叢集?
如果答案為肯定,請在您的應用程式設定檔中使用單叢集轉送,並在必要時手動容錯移轉至備用叢集。
這樣的設定也可以讓您在必要時使用單一資料列交易。
您是否要將不同類型的流量傳送至不同叢集?
如果答案為肯定,請在您的應用程式設定檔中使用單叢集轉送,並將每種類型的流量導向至該設定檔的叢集。如有需要,請手動在叢集之間進行容錯移轉。
您可以視需要在應用程式設定檔中啟用單一資料列交易。