複製設定範例

本頁面說明 Bigtable 複製功能啟用後的常見用途,接著會介紹可用於支援這些用途的設定:

本頁面也會說明如何判斷其他用途應使用哪些設定

閱讀本頁面之前,請先熟悉 Bigtable 複製功能總覽

在您將叢集新增到叢集執行個體之前,必須注意更改複製表上的垃圾收集政策時適用的限制。

在大多數情況下,請為執行個體的叢集啟用自動調度資源。自動調度資源功能可讓 Bigtable 根據工作負載,自動新增及移除叢集節點。

如果選擇手動節點分配,請在執行個體中的每個叢集佈建足夠的節點,確保每個叢集除了處理來自應用程式的負載,也能處理複製作業。如果叢集的節點數量不足,複製延遲可能會增加,叢集也可能因記憶體累積而發生效能問題,且系統可能會拒絕寫入執行個體中的其他叢集。

本文中的範例說明如何建立執行個體,但您也可以將叢集新增至現有執行個體。

區隔批次分析工作負載與其他應用程式

當您使用單一叢集執行需要多次大量讀取操作的批次分析工作,以及會混合執行讀取與寫入操作的應用程式時,龐大的批次工作會拖慢應用程式使用者的作業。複製功能可讓您將應用程式設定檔和單叢集轉送功能搭配使用,把批次分析工作和應用程式流量轉送至其他叢集,避免批次工作對應用程式的使用者造成影響。

區隔兩個工作負載的方式如下:

  1. 建立具有兩個叢集的執行個體。

  2. 建立兩個應用程式設定檔,並分別命名為 live-trafficbatch-analytics

    如果叢集 ID 是 cluster-acluster-b,則 live-traffic 應用程式設定檔會將要求轉送到 cluster-a,而 batch-analytics 應用程式設定檔會將要求轉送到 cluster-b。這項設定可為使用相同應用程式設定檔的應用程式提供讀寫一致性,但無法為使用不同應用程式設定檔的應用程式提供一致性。

    您可以視需要在 live-traffic 應用程式設定檔中啟用單一資料列交易。假如您只使用這個設定檔進行讀取,則不需要在 batch-analytics 應用程式設定檔中啟用單一資料列交易。

  3. 使用 live-traffic 應用程式設定檔,執行即時流量工作負載。

  4. 在執行即時流量工作負載的過程中,使用 batch-analytics應用程式設定檔執行唯讀批次工作負載。

如何從較大的工作負載中區隔兩個較小的工作負載:

  1. 建立具有三個叢集的執行個體。

    這些步驟假設您的叢集使用名為 cluster-acluster-bcluster-c 的 ID。

  2. 建立下列應用程式設定檔:

    • live-traffic-app-a:從您的應用程式到 cluster-a 的單叢集轉送作業。
    • live-traffic-app-b:從您的應用程式到 cluster-b 的單叢集轉送作業。
    • batch-analytics:從批次分析工作到 cluster-c 的單叢集轉送作業。
  3. 使用即時流量應用程式設定檔,執行即時流量工作負載。

  4. 在執行即時流量工作負載的過程中,使用 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

提供近乎即時的備份功能

在某些情況下 (例如您無法讀取過時資料),您一律需要將要求轉送至單一叢集。然而,您仍然可以用一個叢集處理要求,並讓另一個叢集保持近乎即時的備份。如果提供服務的叢集無法使用,您可以手動容錯移轉到備份叢集,讓停機時間降到最短。

如要針對這項用途設定執行個體,請建立應用程式設定檔 (須使用單叢集轉送),或是將預設的應用程式設定檔更新為使用單叢集轉送。您在應用程式設定檔中指定的叢集會處理收到的要求。另一個叢集會做為備用叢集使用,以供進行容錯移轉時所需。這樣的安排有時稱為主被動配置,可以提供同步一致性和讀寫一致性。您可以視需要在應用程式設定檔中啟用單一資料列交易

如何實作這項設定:

  1. 使用應用程式設定檔搭配單叢集轉送,執行工作負載。

  2. 使用 Google Cloud 主控台監控執行個體的叢集,並確認只有一個叢集在處理收到的要求。

    另一個叢集會繼續使用 CPU 資源執行複製功能及其他維護工作。

  3. 更新應用程式設定檔,使其指向執行個體中的第二個叢集。

    您會收到有關失去讀寫一致性的警告訊息,這也代表已失去同步一致性。

    如果您已啟用單一資料列交易,系統也會顯示資料可能遺失的警告。如果在容錯移轉期間傳送衝突寫入,就會遺失資料。

  4. 繼續監控您的執行個體。您應該會看到第二個叢集正在處理收到的要求。

保持高可用性和地區彈性

假設您在某一洲的兩個不同地區中有集中的客戶群。您希望透過 Bigtable 叢集,在儘可能接近每個集中客戶群的位置提供服務。您希望資料在每個地區內都具有高可用性,如有一或多個叢集無法使用,您可能會想使用容錯移轉選項。

以這個用途來說,您可以建立分別在地區 A 和地區 B 各有兩個叢集的執行個體。即使您無法連線至 Google Cloud 地區,這項設定也能提供高可用性。此外,這項設定還能提供地區彈性,因為即使某個區域無法使用,該區域的地區中還有另一個叢集可供使用。

您可以根據業務需求,針對這項用途選擇使用多叢集轉送或單叢集轉送。

如何針對這項用途設定執行個體:

  1. 建立具有四個叢集的 Bigtable 執行個體:兩個位於地區 A,兩個位於地區 B。相同地區的叢集必須位於不同區域。

    範例設定:

    • cluster-a 位於孟買的 asia-south1-a 區域
    • cluster-b 位於孟買的 asia-south1-c 區域
    • cluster-c 位於東京的 asia-northeast1-a 區域
    • cluster-d 位於東京的 asia-northeast1-b 區域
  2. 將應用程式伺服器放置在接近每個地區的位置。

您可以根據業務需求,針對這項用途選擇使用多叢集轉送或單叢集轉送。如果您使用多叢集轉送,Bigtable 會自動處理容錯移轉。如果您使用單叢集轉送,則必須自行判斷何時開始容錯移轉至不同的叢集。

單叢集轉送選項

無法使用某個區域或地區時,如果您不想讓 Bigtable 叢集自動容錯移轉,您可以針對此用途使用單叢集轉送。如果 Bigtable 開始轉送遙遠地區之間的流量,而您想要管理因此產生的費用和延遲時間,或是您偏好自行判斷或根據業務規則決定是否進行容錯移轉,建議您使用這個選項。

如要實作這項設定,請為每個會將要求傳送至執行個體的應用程式,建立至少一個應用程式設定檔 (需使用單叢集轉送)。您可以將應用程式設定檔轉送至 Bigtable 執行個體中的任何叢集。舉例來說,如果您在孟買執行三個應用程式,在東京執行六個應用程式,可以為孟買應用程式設定一個應用程式設定檔,將流量轉送到 asia-south1-a,並為東京應用程式設定兩個應用程式設定檔,將流量轉送到 asia-south1-c。針對東京應用程式,設定三個會路由至 asia-northeast1-a 的應用程式設定檔,以及三個會路由至 asia-northeast1-b 的應用程式設定檔。

使用此設定時,如有一或多個叢集無法使用,您可以執行手動容錯移轉,或選擇讓該區域中的資料暫時無法使用,直到該區域再次恢復可用。

多叢集轉送選項

如果您正在實作此用途,且希望當您的應用程式無法連線至一個地區時,Bigtable 會自動容錯移轉至另一個地區,請使用多叢集轉送

如要實作這項設定,請為每個應用程式建立新的應用程式設定檔 (須使用多叢集轉送),或是將預設的應用程式設定檔更新為使用多叢集轉送。

這樣的設定可以提供最終一致性。如果某個地區無法使用,Bigtable 要求會自動傳送至另一個地區。發生這種情況時,您必須為傳送至另一個地區而支付網路流量的費用,且您的應用程式可能會因距離較遠而出現較長的延遲時間。

將資料儲存在距離使用者較近的位置

如果您的使用者遍布全球,您可以在距離使用者較近的位置執行應用程式,並將資料放置在儘可能接近應用程式的位置,藉此減少延遲。透過 Bigtable,您可以在多個 Google Cloud 地區中建立包含叢集的執行個體,您的資料會自動複製到每個地區。

以這個用途來說,請使用應用程式設定檔搭配單叢集轉送。由於叢集之間的距離,多叢集轉送不符合這個用途的需求。如果某個叢集無法使用,其多叢集應用程式設定檔會自動轉送遠距離的流量,您的應用程式可能會發生無法接受的延遲情況,並產生未預期的額外網路費用。

如何針對這項用途設定執行個體:

  1. 在三個不同的地理地區中建立包含叢集的執行個體,例如美國、歐洲和亞洲。

  2. 將應用程式伺服器放置在接近每個地區的位置。

  3. 建立類似以下的應用程式設定檔:

    • clickstream-us:單叢集轉送至位於美國的叢集
    • clickstream-eu:單叢集轉送至位於歐洲的叢集
    • clickstream-asia:單叢集轉送至位於亞洲的叢集

在這項設定中,您的應用程式會將應用程式設定檔用於最接近的叢集。寫入任何叢集的內容會自動複製到另外兩個叢集。

其他用途

如果本頁面沒有說明您需要的用途,請運用下列問題來幫助您決定該如何設定應用程式設定檔:

  • 您是否需要執行單一資料列交易 例如讀取/修改/寫入作業 (包括遞增和附加),以及檢查/異動作業 (也稱為有條件的變動或有條件的寫入)?

    如果答案為肯定,那麼您的應用程式設定檔必須使用單叢集轉送以免資料遺失,而且您必須手動處理容錯移轉

  • 要讓 Bigtable 自動處理容錯移轉嗎?

    如果答案為肯定,您的應用程式設定檔就必須使用多叢集轉送。如果某個叢集無法處理收到的要求,Bigtable 會自動容錯移轉至另一個叢集。進一步瞭解自動容錯移轉

    為避免資料遺失,使用多叢集轉送時,您無法啟用單一資料列交易瞭解詳情

  • 您是否希望在主要叢集無法使用時,維護備份或備用叢集?

    如果答案為肯定,請在您的應用程式設定檔中使用單叢集轉送,並在必要時手動容錯移轉至備用叢集

    這樣的設定也可以讓您在必要時使用單一資料列交易

  • 您是否要將不同類型的流量傳送至不同叢集?

    如果答案為肯定,請在您的應用程式設定檔中使用單叢集轉送,並將每種類型的流量導向至該設定檔的叢集。如有需要,請手動在叢集之間進行容錯移轉

    您可以視需要在應用程式設定檔中啟用單一資料列交易

後續步驟