本頁面說明 Spanner 提供的不同類型執行個體設定,以及這些設定之間的差異和取捨。
執行個體設定
Spanner 執行個體設定會定義該執行個體中資料庫的地理位置與複製功能。在建立執行個體時,您必須將其設定為「地區性」、「雙區域」或「多區域」。您可以透過選取執行個體設定來完成這項選擇,此設定將會決定該執行個體的資料儲存位置:
- 區域設定:所有資源都位於單一 Google Cloud 區域內
- 雙區域設定:所有資源跨越兩個區域,且位於單一國家/地區 (適用於 Enterprise Plus 版)
- 多地區設定:資源跨越兩個以上的地區 (僅適用於 Enterprise Plus 版本)
如要進一步瞭解特定地區的注意事項,請參閱「地理位置與區域」一文。
含有預先定義區域和複製拓撲的執行個體設定,稱為基本執行個體設定。您可以建立自訂執行個體設定,並在預先定義的基本執行個體設定中新增額外的選用唯讀備用資源 (適用於 Enterprise 版和 Enterprise Plus 版)。新增的唯讀備用資源必須位於不屬於現有執行個體設定的區域。如需可新增的選用唯讀區域清單,請參閱「可用的區域設定」和「可用的多地區設定」下方的「選用區域」欄。您無法變更基礎執行個體設定的複寫拓撲。詳情請參閱「唯讀備援機制」。
您可以將執行個體移至其他區域、雙區域或多區域執行個體設定 (例如從 us-central1
移至 nam3
)。您也可以建立新的自訂執行個體設定,並新增更多複本,然後將執行個體移至新的自訂執行個體設定。舉例來說,如果執行個體位於 us-central1
,且您想要新增唯讀備用資源 us-west1
,就必須使用 us-central1
做為基礎設定,建立新的自訂執行個體設定,然後將 us-west1
新增為唯讀備用資源。然後將執行個體移至這個新的自訂例項設定。
區域性設定
Google Cloud 服務遍布北美洲、南美洲、歐洲、亞洲和澳洲的各個地區。如果您的使用者和服務皆位在單一地區,請選擇地區性執行個體設定,以獲得最低的讀取和寫入延遲時間。
在任何基本區域設定中,Spanner 都會保留三個讀取/寫入備用資源,每個備用資源皆會位於該區域中不同的 Google Cloud 區域。針對處理讀取/寫入和唯讀要求的作業資料庫,每個讀取/寫入備用資源皆含有這類資料庫的完整副本。Spanner 使用不同區域中的備用資源,以便在單一區域發生故障時,資料庫仍然可供使用。
可用的設定
Spanner 提供下列基本區域執行個體設定:
基礎設定名稱 | 地區說明 | 選填區域 | |
---|---|---|---|
美洲 | |||
northamerica-northeast1 |
蒙特婁
|
||
northamerica-northeast2 |
多倫多
|
||
northamerica-south1 |
克雷塔羅 | ||
southamerica-east1 |
聖保羅
|
||
southamerica-west1 |
聖地牙哥
|
||
us-central1 |
愛荷華州
|
唯讀:asia-northeast1 1-OR asia-south1 1-OR europe-west2 1-OR europe-west9 1-OR us-west3 1-OR |
|
us-east1 |
南卡羅來納州 | 唯讀:us-central1 1-OR us-west1 1-OR europe-west1 1-OR europe-west3 1-OR |
|
us-east4 |
北維吉尼亞州 | ||
us-east5 |
哥倫布 | ||
us-south1 |
達拉斯
|
||
us-west1 |
奧勒岡州
|
||
us-west2 |
洛杉磯 | ||
us-west3 |
鹽湖城 | ||
us-west4 |
拉斯維加斯 | ||
歐洲 | |||
europe-central2 |
華沙 | ||
europe-north1 |
芬蘭
|
||
europe-north2 |
斯德哥爾摩
|
||
europe-southwest1 |
馬德里
|
||
europe-west1 |
比利時
|
唯讀:us-central1 1-OR us-west1 1-OR |
|
europe-west2 |
倫敦
|
||
europe-west3 |
法蘭克福
|
||
europe-west4 |
荷蘭
|
||
europe-west6 |
蘇黎世
|
||
europe-west8 |
米蘭 | ||
europe-west9 |
巴黎
|
||
europe-west10 |
柏林
|
||
europe-west12 |
杜林 | ||
亞太地區 | |||
asia-east1 |
臺灣 | ||
asia-east2 |
香港 | ||
asia-northeast1 |
東京 | ||
asia-northeast2 |
大阪 | ||
asia-northeast3 |
首爾 | ||
asia-south1 |
孟買 | ||
asia-south2 |
德里 | ||
asia-southeast1 |
新加坡 | ||
asia-southeast2 |
雅加達 | ||
australia-southeast1 |
雪梨 | ||
australia-southeast2 |
墨爾本 | ||
中東地區 | |||
me-central1 |
杜哈 | ||
me-central2 |
達曼 | ||
me-west1 |
特拉維夫 | ||
非洲 | |||
africa-south1 |
約翰尼斯堡 |
複製
基本地區性設定包含三個讀取/寫入備用資源。每個 Spanner 變異作業都需要由多數投票備用資源組成的寫入仲裁。寫入仲裁是由地區性設定中三個備用資源的其中兩個組成。如要進一步瞭解領袖區域和投票複本,請參閱「複寫」一文。
您可以建立自訂區域執行個體設定,並新增選用的唯讀備用資源。唯讀備用資源可協助擴充讀取作業,並支援低延遲的舊版讀取作業。這些唯讀備用資源不會參與寫入仲裁,也不會影響區域例項的 Spanner >= 99.99% SLA。您可以將「選用區域」欄下列出的地區新增為選用唯讀副本。如果您沒有看到所選的唯讀備用資源位置,可以申請新的選用唯讀備用資源區域。詳情請參閱「唯讀副本」。
區域設定的效能最佳做法
為獲得最佳成效,請遵循下列最佳做法:
- 設計結構定義,避免資源使用率不均和其他效能問題。
- 將重要的運算資源存放在與 Spanner 執行個體相同的地區中。
- 佈建足夠的運算能力,將高優先順序的整體 CPU 使用率維持在 65% 以下。
- 如要瞭解每個 Spanner 節點的傳輸量,請參閱「區域設定的效能」。
雙區域設定
雙區域設定可讓您依照執行個體設定的定義,在單一國家/地區的兩個區域中,複製多個區域的資料庫資料。
雙區域設定會執行以下操作:
- 從單一國家/地區的兩個區域提供讀取服務。
- 可用性和服務水準協議高於區域設定。
- 符合資料落地規定。
Spanner 在澳洲、德國、印度和日本提供雙區域設定。
如要瞭解每個 Spanner 節點的傳輸量,請參閱「雙區域設定的效能」。
可用的設定
Spanner 提供下列基本雙區域執行個體設定:
基礎設定名稱 | 資源位置 | 區域 |
---|---|---|
dual-region-australia1 |
au (澳洲) | 雪梨:australia-southeast1 L、2RW+1W 墨爾本: australia-southeast2 2RW+1W |
dual-region-germany1 |
de (德國) | 柏林:europe-west10 L、2RW+1W 法蘭克福: europe-west3 2RW+1W |
dual-region-india1 |
印度 | 孟買:asia-south1 L、2RW+1W 德里: asia-south2 2RW+1W |
dual-region-japan1 |
jp (日本) | 東京:asia-northeast1 L、2RW+1W 大阪: asia-northeast2 2RW+1W |
優點
雙地區執行個體提供以下主要優點:
99.999% 可用性:跨越同一個國家的兩個區域,可用性高於 Spanner 地區性設定提供的 99.99% 可用性。
資料分佈:自動在兩個區域之間複製資料,並提供同步一致性保證。
複製
雙區域包含六個備用資源,每個區域各有三個。其中一個區域會指定為預設主要區域 (如上表所列)。您可以變更資料庫的主要區域。每個區域都有兩個讀取/寫入備用資源和一個見證備用資源。當兩個區域都正常運作,且以雙區域設定執行時,系統會在所有六個備援機制中建立法定人數。每個區域至少需要兩個複本,才能形成法定數量並提交交易。
容錯移轉和容錯回復
建立雙區設定後,您可以在「系統深入分析」資訊主頁上查看「雙區法定人數健康狀態時間軸」指標。這項指標僅適用於雙區域設定。這項指標會顯示三個法定人數的健康狀態:
- 雙區域仲裁:
Global
- 每個地區的單一地區法定人數 (例如
Sydney
和Melbourne
)
當服務中斷時,時間軸上會顯示橘色長條。您可以將滑鼠游標懸停在該圖示上,查看服務中斷的開始和結束時間。
如要加快復原時間目標 (RTO),建議您監控或設定雙區法定人數健康狀態時間表指標的快訊。這項指標可協助您在區域發生故障時,做出自控的容錯移轉決策。觸發執行個體容錯移轉後,容錯移轉通常會在一分鐘內完成。
Spanner 也支援由 Google 管理的自動容錯移轉功能,從首次偵測到失敗到完成移轉,可能需要最多 45 分鐘的時間。較長的 RTO 是因為 Google 會對全服務進行監控。我們需要收集其他信號,以便驗證整個區域是否中斷,並確認是否有區域層級的影響。這也能確保備援機制可為設定中的使用者提供更優質的整體服務。
如要手動容錯移轉和容錯回復,請參閱「變更雙區域法定人數」。
在決定手動容錯移轉和復原時,請考量以下事項:
如果所有三個法定人數都正常運作,則無須採取任何行動。
如果其中一個地區顯示服務中斷,則可能是區域服務中斷。這可能會導致在雙區域法定數中執行的資料庫可用性降低。寫入作業也可能會失敗,因為無法建立法定人數,交易最終會逾時。使用「System insights」(系統深入分析) 資訊主頁,觀察資料庫中的錯誤率和延遲時間。如果錯誤率或延遲時間增加,建議您改用備援機制,也就是將雙區域仲裁機制從雙區域變更為仍正常運作的區域。中斷的區域恢復正常後,您必須回復,將雙區域仲裁機制從單一區域變更為雙區域。Google 偵測到區域服務中斷時,會自動執行容錯移轉和復原作業。您也可以在偵測到中斷時手動進行備援。不過,如果您執行手動容錯移轉,請務必記得手動回復。
如果雙區域仲裁顯示中斷情形,但兩個單一區域都正常運作,則表示網路分割有問題。這兩個區域無法再互相通訊,因此即使整體系統處於不健康狀態,兩個區域都會顯示為健康。在這種情況下,建議您改用預設的領導區域。網路分區問題解決後,雙區法定人數恢復正常,您必須手動執行回復作業。
雙區域提供零復原點目標 (RPO),因為在區域停機或發生網路分區問題時,不會發生資料遺失。
如要查看雙區域仲裁的模式 (單一或雙區域),請參閱「檢查雙區域仲裁」。
容錯移轉和容錯回復最佳做法
容錯移轉和容錯回復的最佳做法包括:
- 如果沒有發生區域故障或中斷情形,請勿移轉至單一區域。如果單一區域發生故障,移轉至該區域的系統整體可用性就會提高。
- 請謹慎選取要進行容錯的區域。如果選擇錯誤的區域進行容錯移轉,資料庫就會無法使用,在該區域重新上線前無法復原。如要進行驗證,您可以在執行容錯之前,使用Bash 指令碼檢查單一區域的健康狀態。
- 如果發生問題的區域是預設主要區域,請在執行備援後,將預設主要區域變更為備援區域。確認兩個區域都恢復正常後,請執行故障轉移,然後將領導區域變更回原始領導區域。
- 如果您執行了手動容錯移轉,請務必手動回復。
限制
您無法建立自訂雙區域執行個體設定。您無法在雙區域執行個體設定中新增唯讀備用資源。
多區域設定
Spanner 地區性設定會在單一地區的多個區域之間複製資料。不過,如果符合下列情況,地區設定可能不是最佳做法:
- 應用程式通常需要讀取來自多個地理位置的資料 (例如,為北美和亞洲的使用者提供資料)。
- 寫入作業的來源與讀取作業的來源不同 (例如,如果您在北美有大量寫入工作負載,而在歐洲有大量讀取工作負載)。
多地區設定可執行下列操作:
- 提供來自多個區域的寫入作業。
- 在發生區域故障時維持可用性。
- 可用性和服務水準協議高於區域設定。
多地區設定可讓您依照執行個體設定的定義,複製不同地區中多個區域的資料庫資料。這些額外的備用資源讓您能夠在延遲時間極短的情況下,從設定的地區中或鄰近的多個位置讀取資料。
不過採用多地區設定仍有好有壞,因為在這項設定中,仲裁 (讀取/寫入) 備用資源會分散在一個以上的地區中,當這些備用資源互相通訊以形成寫入法定數時,您可能會發現額外的網路延遲時間。讀取作業不需要過半表決權。結果是,應用程式可在更多位置中進行更快速的讀取作業,但代價是寫入延遲時間會略為增加。詳情請參閱「備用資源在寫入和讀取中的角色」。
可用的設定
Spanner 提供以下基本多區域執行個體設定:
單一洲
基礎設定名稱 | 資源位置 | 讀取/寫入區域 | 唯讀地區 | 見證區 | 選填區域 |
---|---|---|---|---|---|
asia1 |
asia1 | 東京:asia-northeast1 L、2R 大阪: asia-northeast2 2R |
無 | 首爾:asia-northeast3 |
唯讀:us-west1 1-OR us-east5 1-OR |
asia2 A |
asia2 | 孟買:asia-south1 L、2R 德里: asia-south2 2R 新加坡: asia-southeast1 1R |
無 | 無 | |
eur3 |
eur3 | 比利時:europe-west1 L、2R 荷蘭: europe-west4 2R |
無 | 芬蘭:europe-north1 |
唯讀:us-central1 1-OR us-east4 1-OR |
eur5 |
eur5 | 倫敦:europe-west2 L、2R 比利時: europe-west1 2R |
無 | 荷蘭:europe-west4 |
唯讀:us-central1 1-OR us-east1 1-OR |
eur6 |
eur6 | 荷蘭:europe-west4 L、2R 法蘭克福: europe-west3 2R |
無 | 蘇黎世:europe-west6 |
唯讀:us-east1 2-OR |
eur7 |
eu (歐盟) | 米蘭:europe-west8 L、2R 法蘭克福: europe-west3 2R |
無 | 杜林:europe-west12 |
|
nam3 |
nam3 | 北維吉尼亞州:us-east4 L、2R 南卡羅來納州: us-east1 2R |
無 | 愛荷華州:us-central1 |
唯讀:us-west2 1-OR asia-southeast1 1-OR asia-southeast2 1-OR europe-west1 1-OR europe-west2 1-OR |
nam6 |
nam6 | 愛荷華州:us-central1 L、2R 南卡羅來納州: us-east1 2R |
奧勒岡州:us-west1 1R 洛杉磯: us-west2 1R |
奧克拉荷馬州:us-central2 |
|
nam7 |
nam7 | 愛荷華州:us-central1 L、2R 北維吉尼亞州: us-east4 2R |
無 | 奧克拉荷馬州:us-central2 |
唯讀:us-east1 2-OR us-south1 1-OR europe-west1 2-OR |
nam8 |
nam8 | 洛杉磯:us-west2 L、2R 奧勒岡州: us-west1 2R |
無 | 鹽湖城:us-west3 |
唯讀:asia-southeast1 2-OR europe-west2 2-OR us-east5 1-OR |
nam9 |
nam9 | 北維吉尼亞州:us-east4 L、2R 愛荷華州: us-central1 2R |
奧勒岡州:us-west1 2R |
南卡羅來納州:us-east1 |
|
nam10 |
nam10 | 愛荷華州:us-central1 L、2R 鹽湖城: us-west3 2R |
無 | 奧克拉荷馬州:us-central2 |
|
nam11 |
nam11 | 愛荷華州:us-central1 L、2R 南卡羅來納州: us-east1 2R |
無 | 奧克拉荷馬州:us-central2 |
唯讀:us-west1 1-OR |
nam12 |
nam12 | 愛荷華州:us-central1 L、2R 北維吉尼亞州: us-east4 2R |
奧勒岡州:us-west1 2R |
奧克拉荷馬州:us-central2 |
|
nam13 |
nam13 | 奧克拉荷馬州:us-central2 L、2R 愛荷華州: us-central1 2R |
無 | 鹽湖城:us-west3 |
|
nam14 |
nam14 | 北維吉尼亞州:us-east4 L、2R 蒙特婁: northamerica-northeast1 2R |
無 | 南卡羅來納州:us-east1 |
|
nam15 |
nam15 | 達拉斯:us-south1 L、2R 北維吉尼亞州: us-east4 2R |
無 | 愛荷華州:us-central1 |
|
nam16 |
美國 (us) | 愛荷華州:us-central1 L、2R 北維吉尼亞州: us-east4 2R |
無 | 哥倫布:us-east5 |
唯讀:us-west2 2-OR |
三大洲
基礎設定名稱 | 資源位置 | 讀取/寫入區域 | 唯讀地區 | 見證區 | 選填區域 |
---|---|---|---|---|---|
nam-eur-asia1 |
nam-eur-asia1 | 愛荷華州:us-central1 L、2R 奧克拉荷馬州: us-central2 2R |
比利時:europe-west1 2R 臺灣: asia-east1 2R |
南卡羅來納州:us-east1 |
唯讀:us-west2 1-OR |
nam-eur-asia3 |
nam-eur-asia3 | 愛荷華州:us-central1 L、2R 南卡羅來納州: us-east1 2R |
比利時:europe-west1 1R 荷蘭: europe-west4 1R 臺灣: asia-east1 2R |
奧克拉荷馬州:us-central2 |
L:預設主要區域。詳情請參閱「修改資料庫的主要區域」。
1R:區域中只有一個備用資源。
2R:區域內有兩個備用資源。
2RW+1W:區域中有兩個讀取/寫入備用資源和一個見證備用資源。
1-OR:一個選用副本。您可以建立自訂區域執行個體設定,並新增一個選用的唯讀備用資源。詳情請參閱「建立自訂執行個體設定」。
2-OR:最多兩個選用副本。您可以建立自訂區域執行個體設定,並新增一或兩個選用的唯讀備用資源。建議您盡可能增加兩個,以維持低讀取延遲。詳情請參閱「建立自訂執行個體設定」。
A:此執行個體設定受到許可清單的限制。如要取得存取權,請與您的技術客戶經理聯絡。
多地區執行個體設定的資源位置會決定設定的災難復原區保證。定義靜態資料的儲存位置。
優點
多地區執行個體提供以下主要優點:
99.999% 可用性:可用性程度高於 Spanner 地區性設定提供的 99.99% 可用性。
資料分佈:Spanner 會自動在地區之間複製資料,並提供同步一致性保證。這可讓資料儲存在使用的位置,進而減少延遲時間並改善使用者體驗。
外部一致性:即使 Spanner 會在多個距離較遠的地理位置上執行複製作業,您仍可將 Spanner 視為在單一機器上執行的資料庫來使用這項產品。系統保證交易可以序列化,且資料庫中的交易順序與用戶端觀察到的交易修訂順序相同。外部一致性的保證程度高於「同步一致性」,這項保證是由其他產品提供。如要進一步瞭解這個屬性,請參閱「TrueTime 與外部一致性」。
複製
每個基本多地區設定都含有兩個指定為讀取/寫入地區的地區,且這兩個地區均包含兩個讀取/寫入備用資源。其中一個讀取/寫入地區指定為「預設主要地區」,代表該地區含有資料庫的主要備用資源。Spanner 也會將見證備用資源存放在稱為見證地區的第三地區。
每次用戶端發出資料庫變異作業時,就會形成寫入仲裁,其中包含一個預設主要地區的備用資源,以及其他四個投票備用資源中的任兩個備用資源 (仲裁可以由構成設定的兩個或三個地區中的備用資源形成,視其他哪些備用資源會參與投票而定)。除了這五個投票備用資源外,某些基礎多地區設定還包含提供低延遲讀取的唯讀備用資源。唯讀備用資源所在的地區稱為唯讀地區。
一般而言,多地區設定中的投票地區在地理位置上會很接近 (相距不超過一千英里),以便形成能快速寫入的低延遲仲裁 (瞭解詳情)。然而,這些地區之間的距離 (通常至少有幾百英里) 仍足以避免發生協調失敗。此外,如果用戶端應用程式位於非領導區域,Spanner 會使用領導區域感知路由,動態地將讀寫交易路由,以便縮短資料庫的延遲時間。詳情請參閱「Leader 感知路由」。
您可以建立自訂多地區執行個體設定,並選用唯讀備用資源。您建立的任何自訂唯讀副本都無法納入寫入法定數。您可以將「選用地區」欄下列出的地區新增為選用唯讀備用資源。如果找不到所選的唯讀備用資源位置,您可以申請新的選用唯讀備用資源區域。詳情請參閱「唯讀副本」。
多區域設定的效能最佳做法
為獲得最佳成效,請遵循以下最佳做法:
- 設計結構定義,避免資源使用率不均和其他效能問題。
- 如要盡可能縮短寫入延遲時間,請將著重寫入作業的工作負載運算資源放置於預設的主要區域或臨近位置。
- 如要將預設主要地區以外的讀取效能最佳化,請至少使用 15 秒的過時程度。
- 如要避免工作負載依賴單一地區,請將重要的運算資源至少放置在兩個地區。建議您將這些備用資源放在兩個不同的讀取/寫入地區旁,這樣單一地區的停機狀況就不會影響所有應用程式。
- 佈建足夠的運算能力,將各區域的高優先順序 CPU 總使用率維持在 45% 以下。
- 如要瞭解每個 Spanner 節點的傳輸量,請參閱「多地區設定的效能」。
移動執行個體
您可以將 Spanner 執行個體從任何執行個體設定移至任何其他執行個體設定,包括地區和多地區設定。移動執行個體不會造成服務中斷,Spanner 會在遷移期間繼續提供一般交易保證,包括同步一致性。
如要進一步瞭解 Spanner 執行個體遷移作業,請參閱「遷移執行個體」。
設定預設主要區域
如要變更資料庫的預設主要區域位置,以便更靠近連線用戶端,進而縮短應用程式延遲時間,您可以變更任何使用雙區域或多區域設定的 Spanner 執行個體的主要區域。如要瞭解如何變更主要區域的位置,請參閱「變更資料庫的主要區域」。只有雙區域或多區域設定中的讀取/寫入地區,才有資格成為資料庫的預設主要區域。
主要地區負責處理所有資料庫寫入作業,因此如果大部分流量來自單一地理區域,您可以將該區域移至該區域,以降低延遲時間。更新預設領導區域的成本低,且不涉及任何資料移轉作業。新值需要幾分鐘才會生效。
變更預設領導區域是結構定義變更,會使用長時間執行的作業。如有需要,您可以取得長時間執行作業的狀態。
取捨:區域、雙區域和多區域設定
設定 | 可用性 | 延遲時間 | 費用 | 資料位置 |
---|---|---|---|---|
地區性 | 99.99% | 在該地區內提供較低的寫入延遲時間。 | 費用較低;請參閱定價。 | 啟用地理資料管理。 |
雙區域 | 99.999% | 在兩個地理區域內提供較低的讀取延遲時間,寫入延遲時間則略有增加。 | 費用較高;請參閱定價。 | 將資料分布到單一國家/地區的兩個區域。 |
多區域 | 99.999% | 在多個地理區域內提供較低的讀取延遲時間,寫入延遲時間則會略為增加。 | 費用較高;請參閱定價。 | 將資料分布到設定中的多個地區。 |
後續步驟
- 瞭解如何建立 Spanner 執行個體。
- 進一步瞭解Google Cloud 地理位置與地區。