本页面介绍了 Google Cloud 控制台中可用的不同类型的实例配置, 以及它们之间的差异和权衡。
实例配置
Spanner 实例配置定义了地理位置 该实例中数据库的复制和复制操作。创建实例时 您必须将其配置为单区域、双区域或多区域。 您可以通过选择实例配置来进行此选择 实例的数据存储位置:
- 区域配置:所有资源都驻留在 单个 Google Cloud 区域内
- 双区域配置:所有资源跨越 居住在单个国家/区域(可在 企业 Plus 版)
- 多区域配置:您所需的资源 跨越两个以上的区域(适用于企业 Plus 版)
具有固定区域和复制拓扑的实例配置 称为“基本实例配置”。您可以创建自定义实例配置,并添加额外的可选只读副本(适用于企业版和企业 Plus 版)。您无法更改基本实例配置的复制拓扑。对于 如需了解详情,请参阅只读副本。
您可以将实例从任何实例配置移至任何其他单区域、双区域或多区域实例配置(例如,从 us-central1
移至 nam3
)。您还可以创建包含更多副本的新自定义实例配置,然后将实例移至新的自定义实例配置。例如,如果您的实例位于 us-central1
中,并且您想添加只读副本 us-west1
,则需要创建一个新的自定义实例配置,并将 us-central1
作为基本配置,然后将 us-west1
添加为只读副本。然后,将您的实例移至此新的自定义实例配置。
单区域配置
Google Cloud 服务目前可在北美洲、南美洲、欧洲、亚洲和澳洲的多个位置使用。如果您的用户和服务位于单个区域内,请选择单区域实例配置以实现最低延迟的读取和写入。
对于任何基本区域配置,Spanner 维护三个读写副本,每个副本都位于该区域的不同 Google Cloud 可用区。每个读写副本均包含可操作数据库的完整副本,能够处理读写请求和只读请求。Spanner 在不同可用区使用副本, 如果发生单可用区故障,您的数据库仍然可用。
可用配置
Spanner 提供以下基础区域实例 配置:
基本配置名称 | 区域说明 | 可选区域 | |
---|---|---|---|
美洲 | |||
northamerica-northeast1 |
蒙特利尔 二氧化碳排放量低2 | ||
northamerica-northeast2 |
多伦多 低碳 | ||
southamerica-east1 |
圣保罗 低碳 | ||
southamerica-west1 |
圣地亚哥 低碳 | ||
us-central1 |
爱荷华 二氧化碳排放量低2 | 只读: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 |
|
us-east4 |
北弗吉尼亚 | ||
us-east5 |
哥伦布 | ||
us-south1 |
达拉斯 二氧化碳排放量低2 | ||
us-west1 |
俄勒冈 低碳 | ||
us-west2 |
洛杉矶 | ||
us-west3 |
盐湖城 | ||
us-west4 |
拉斯维加斯 | ||
欧洲 | |||
europe-central2 |
华沙 | ||
europe-north1 |
芬兰 低碳 | ||
europe-southwest1 |
马德里 二氧化碳排放量低2 | ||
europe-west1 |
比利时 二氧化碳排放量低2 | 只读:us-central1 1-OR us-west1 1-OR |
|
europe-west2 |
伦敦 二氧化碳排放量低2 | ||
europe-west3 |
法兰克福 低碳 | ||
europe-west4 |
荷兰 二氧化碳排放量低2 | ||
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 |
Dammam | ||
me-west1 |
特拉维夫 | ||
非洲 | |||
africa-south1 |
约翰内斯堡 |
复制
基础区域配置包含三个读写副本。每项 Spanner 数据变动都要求达成最小写票数(即,大多数投票副本同意)。在单区域配置中,当三个副本中的其中两个同意时即达成最小写票数。有关主要区域和投票的更多信息 请参阅复制。
您可以创建自定义地区级实例配置并添加可选的只读副本。只读副本有助于扩缩读取 支持低延迟过时读取。这些只读副本不参与 并且不影响 区域实例的 Spanner 服务等级协议 (SLA) 承诺 >= 99.99% 的可用性。 您可以将“可选地区”列下列出的位置添加为可选的只读副本。如果您没有看到所选的只读副本位置 您可以请求新的可选只读副本区域。 如需了解详情,请参阅只读副本。
单区域配置的性能最佳实践
为了实现最佳性能,请遵循以下最佳做法:
- 设计架构以防止出现热点和其他性能问题。
- 将关键计算资源布置在与您的 Spanner 实例。
- 预配足够的计算容量,使高优先级总 CPU 利用率保持在 65% 以下。
- 了解每个 Spanner 的吞吐量 请参阅单区域配置的性能。
双区域配置
双区域配置让您可以将数据库的数据复制到 一个国家/地区的两个区域中的多个可用区,如 实例配置。
双区域配置会执行以下操作:
- 从一个国家/地区的两个区域提供读取服务。
- 提供比区域级配置更高的可用性和服务等级协议 (SLA)。
- 满足数据驻留要求。
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 |
in(印度) | 孟买: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% 的可用性 所提供的配置
数据分布:在保证高度一致性下的前提下,自动在两个区域之间复制数据。
数据驻留要求:符合 双区域可用配置下所列的国家/地区。
复制
双区域包含六个副本,每个区域三个。其中一个区域被指定为默认主副本所在区域(上表中列出)。您 可以更改数据库的主要区域。 每个区域中有两个读写副本 见证者副本。当两个区域都处于正常运行状态且在双区域配置中运行时,系统会在所有 6 个副本中建立共识。每个可用区至少有两个副本 该区域被要求达成仲裁并提交事务。
故障切换和故障恢复
创建双区域配置后,您可以在系统数据分析信息中心内查看双区域共识团可用性指标。此指标仅适用于双区域配置。它会显示三个共识机制的运行状况:
- 双区域仲裁使用以下代号:
au
(适用于澳大利亚)de
(德国)in
(适用于印度)asia1
(日本)
- 每个区域中的单区域仲裁(例如
asia-south1
和asia-south2
)
该指标有一个“Quorum availability”(仲裁可用性)下拉菜单,会显示哪些区域 处于运行状况良好或中断模式。
双区域共识团可用性指标可帮助您在发生区域故障时做出自助式故障切换时间决策。自行管理的故障切换 通常在一分钟内完成如需手动进行故障切换和故障恢复,请参阅更改双区域共识机制。Spanner 还支持由 Google 管理的自动故障转移,从首次检测到故障起,此过程最长可能需要 45 分钟。
在做出故障切换和故障恢复决策时,请考虑以下事项:
如果所有三个共识机制都运行正常,则无需执行任何操作。
如果其中某个区域出现中断,那么可能存在区域级问题 服务中断。这可能会导致在双区域共识机制中运行的数据库可用性降低。写入也可能会失败 因为无法建立仲裁,事务最终会超时。 使用系统数据分析信息中心,观察 数据库。如果错误率或延迟时间增加,我们建议 进行故障切换,也就是将双区域仲裁从 复制到运行状况良好的区域中断区域之后 运行状况恢复正常,则必须进行故障恢复,将双区域仲裁从 迁移到双区域Google 会在检测到区域性服务中断时自动执行故障切换和故障恢复。您还可手动进行故障切换 。但是,您必须记得手动故障恢复 (如果您执行了手动故障切换)。
如果双区域仲裁显示中断,但两个单区域都处于健康状态,则表示存在网络分区问题。这两个区域无法再相互通信,因此它们各自显示为健康状态,即使整个系统处于不健康状态也是如此。在这种情况下,我们建议您故障转移到默认主副本区域。出现网络分区问题后 并且双区域仲裁恢复正常,您必须手动 故障恢复。
双区域提供零恢复点目标 (RPO),因为在区域性服务中断或出现网络分区问题时不会丢失数据。
如需检查双区域仲裁的模式(单区域或双区域),请参阅 检查双区域仲裁。
故障切换和故障恢复最佳实践
故障切换和故障恢复最佳实践包括:
- 如果没有发生区域故障或中断,请勿故障切换到单个区域。将服务故障切换到单个区域可提高 如果单个区域发生故障,则系统不可用。
- 选择故障转移区域时请多加留意。如果选择错误的区域进行故障切换,则会导致数据库不可用,并且在该区域重新上线之前无法恢复。如需进行验证,您可以使用 bash 脚本 检查单个区域的健康状况,然后再执行故障切换。
- 如果运行状况不佳的区域是默认主要区域, 更改默认主要区域 到故障切换区域。确认两个区域都恢复正常后,执行故障恢复,然后将主区域更改回原主区域。
- 如果您执行了手动故障切换,请记得手动故障恢复。
限制
双区域配置具有以下限制:
- 您无法创建自定义双区域实例配置。您无法添加 复制到双区域实例配置的只读副本。
- 不支持客户管理的加密密钥 (CMEK)。
多区域配置
Spanner 单区域配置在多个项目之间复制数据 多个可用区内不过,如果出现以下情况,区域性配置可能不是最佳选择:
- 您的应用通常需要从多个地理位置读取数据(例如,向北美洲和亚洲的用户提供数据)。
- 写入操作的来源与读取操作的来源不同(例如,如果您在北美有大量写入工作负载,而在欧洲有大量读取工作负载)。
多区域配置可以:
- 处理来自多个区域的写入。
- 在发生区域性故障时保持可用性。
- 提供比区域级配置更高的可用性和服务等级协议 (SLA)。
根据实例配置的定义,通过多区域配置,您可以在多个区域的多个可用区中复制数据库的数据。这些额外的副本使您能够从靠近配置区域或位于配置区域内的多个位置以更低的延迟读取数据。
但在多区域配置中,仲裁也要作出权衡取舍 (读写)副本分布在多个区域中。当这些副本互相通信以形成写入共识时,您可能会注意到额外的网络延迟时间。读取不需要仲裁。其结果是,您的 应用可以在更多地方实现更快的读取速度,但代价是略微增加 写入延迟时间如需了解详情,请参阅副本在写入和读取中的角色。
可用配置
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 |
|
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 |
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 Oregon: us-west1 2R |
无 | 盐湖城: us-west3 |
只读:asia-southeast1 2-OR europe-west2 2-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:该地区中有 1 个副本。
2R:该区域中的两个副本。
2RW+1W:该地区中有两个读写副本和一个见证副本。
1-OR:一个可选副本。您可以创建自定义区域实例配置,并添加一个可选的只读副本。 如需了解详情,请参阅创建自定义实例配置。
2-OR:最多两个可选副本。您可以创建自定义区域实例配置,并添加一个或两个可选的只读副本。我们建议您(如果可能)添加两个,以帮助保持低读取延迟。如需了解详情,请参阅创建自定义实例配置。
A:此实例配置受许可名单限制。如需获取访问权限,请与您的技术支持客户经理联系。
多区域实例配置的资源位置决定了该配置的灾难恢复可用区保证。它定义了静态存储数据的位置。
优势
多区域实例提供了以下主要优势:
可用性达 99.999%,大于 Spanner 单区域配置提供。
数据分布:Spanner 会自动复制您的 数据。这样,您就可以 因此可以缩短延迟时间并改善 体验。
外部一致性:虽然 Spanner 能够跨地理上相距遥远的位置进行复制,但您仍然可以像使用在单台机器上运行的数据库一样使用 Spanner。事务保证可序列化,并且数据库中的事务顺序与客户端观察所提交的事务的顺序相同。外部一致性是比其他一些产品提供的“高度一致性”更有力的保证。如需详细了解此属性,请参阅 TrueTime 和外部一致性。
复制
每个基础多区域配置包含两个指定为读写区域的区域,每个区域包含两个读写副本。其中一个读写区域被指定为“默认主要区域”,也就是说,它包含您的数据库的主要副本。Spanner 还会将见证者副本放置在第三个区域中,该区域称为 见证者区域。
每当客户端向您的数据库发出变更时,就会形成一个最小写票数,该最小写票数由默认主要区域中的一个副本和其他四个投票副本中的任意两个副本共同达成。(最小写票数可以由构成您的配置的两个或三个区域的副本达成,具体取决于有哪些其他副本参与了投票。)除了这 5 个投票副本之外,某些基本多区域配置还包含用于处理低延迟读取的只读副本。包含只读副本的区域 副本称为只读区域。
通常情况下,多区域配置中的投票区域地理位置相近(相距不到一千英里),以便以低延迟达成最小写票数,从而实现快速写入(了解详情)。不过,这些区域仍然 通常至少相距几百英里,以避免协调 错误。此外,如果您的客户端应用位于非主副本区域,Spanner 会使用主副本感知路由来动态路由读写事务,以缩短数据库中的延迟时间。有关 相关信息,请参阅领导者感知型路由。
您可以创建自定义多区域实例配置,并添加可选的只读副本。您创建的任何自定义只读副本都不能包含在写入共识机制中。您可以将“可选区域”列下列出的位置添加为可选的只读副本。如果没有看到 选定的只读副本位置,那么您可以 请求新的可选只读副本区域。 如需了解详情,请参阅只读副本。
多区域配置的性能最佳实践
为了实现最佳性能,请遵循以下最佳做法:
- 设计架构以防止出现热点和其他性能问题。
- 将写入操作频繁的工作负载的计算资源布置在默认主要区域中或其附近,以尽可能减少写入延迟时间。
- 使用至少 15 秒的过期设置,以使默认主要区域外的读取性能达到最佳。
- 将重要的计算资源放到至少两个区域中,以免您的工作负载出现单区域依赖性。 一个比较好的选择是将它们放在 读写区域分为两个不同的区域 影响您的所有应用
- 预配足够的计算容量 高优先级总 CPU 利用率低于 45% 各个区域
- 了解每个 Spanner 的吞吐量 请参阅多区域配置的性能。
移动实例
您可以从任何实例迁移 Spanner 实例 与任何其他实例配置相关联,包括区域级之间的 和多区域配置移动实例不会导致停机,并且 Spanner 会在移动过程中继续提供常规事务保证,包括强一致性。
如需详细了解 Spanner 实例迁移,请参阅迁移实例。
配置默认主要区域
要更改数据库的默认主要区域的位置,使其更靠近 以缩短应用延迟时间,您可以更改主要客户端, 任何使用双区域或 多区域配置如需了解如何更改主副本区域的位置,请参阅更改数据库的主副本区域。如要数据库的默认主副本所在区域,区域必须是双区域或多区域配置中的读写区域。
主要区域负责处理所有数据库写入,因此,如果 您的大部分流量都来自某个地理区域 可以将其移至该区域以缩短延迟时间更新默认主要区域费用很低,并且不涉及任何数据移动。新值将在几分钟后生效。
更改默认主要区域是一种架构更改,会使用长时间运行的操作。如果需要,您可以获取长时间运行的操作的状态。
权衡:单区域配置与双区域配置与多区域配置
配置 | 可用性 | 延迟时间 | 费用 | 数据局部性 |
---|---|---|---|---|
单区域 | 99.99% | 单区域内的写入延迟时间较短。 | 费用较低;请参阅价格。 | 支持按地理位置管理数据。 |
双区域 | 99.999% | 两个地理区域的读取延迟时间较短;写入延迟时间略有增加。 | 费用较高;请参阅价格。 | 将数据分布在一个国家/地区的两个区域。 |
多区域 | 99.999% | 多个地理区域的读取延迟时间较短;写入延迟时间略有增加。 | 费用较高;请参阅价格。 | 数据分布在配置内的多个区域。 |
后续步骤
- 了解如何创建 Spanner 实例。
- 详细了解 Google Cloud 区域和地区。