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