实例

本页面介绍了 Cloud Spanner 实例、实例配置和节点的概念,并描述了单区域实例和多区域实例之间的差异和权衡。如果您不熟悉 Cloud Spanner 中的复制方式,请先阅读复制

实例概览

如需使用 Cloud Spanner,您必须先在 Google Cloud 项目中创建一个 Cloud Spanner 实例。该实例可用于分配在其中创建的 Cloud Spanner 数据库所使用的资源。

创建实例需要作出两个重要的选择:实例配置和节点数。这些选择决定了实例的服务资源和存储资源的位置和数量。您的配置选择对于实例永久有效,但您日后可以根据需要更改节点数。

实例配置

实例配置定义了该实例中数据库的地理位置和复制方式。创建实例时,您必须将其配置为“单区域”(即所有资源均包含在单个 Google Cloud 区域中)或“多区域”(即资源跨多个区域分布)。您可以通过选择确定实例的数据存储位置的实例配置来进行该选择。下文详细描述了单区域和多区域配置。

节点数

创建实例时,除了选择数据的存储位置之外,您还必须选择节点数或分配给该实例的节点数。您选择的节点数决定了实例中数据库可用的服务资源和存储资源的数量。

为了说明节点、副本和实例之间的关系,请考虑以下单地区实例配置图。

在单地区实例配置中创建的 4 节点实例

该图表示在单地区实例配置中创建的 4 节点实例。图中的每个区域包含一个数据库的完整副本。在每个区域中,数据库的副本由 4 个服务任务提供。

一个 N 节点实例在实例配置的每个区域中有 N 个服务任务,其中每个区域都提供一个数据库的完整副本。

每个节点最多提供 2 TB 的存储空间。节点可以提供的读取和写入吞吐量的峰值取决于实例配置、架构设计和数据集特征。如需了解详情,请参阅单区域配置性能多区域配置性能部分。

创建实例后,您可以之后向该实例添加节点。在大多数情况下,您还可以移除节点。在以下几种情况下,您不能移除节点:

  • 移除节点需要您的实例的每个节点最多存储 2 TB 的数据。
  • 根据您的历史使用模式,Cloud Spanner 为您的实例数据创建了大量拆分,并且在移除节点后,Cloud Spanner 将无法管理拆分。

移除节点时,请在 Cloud Monitoring 中监控 CPU 利用率和请求延迟时间,以确保单区域实例的 CPU 利用率保持在 65% 以下,多区域实例中每个区域的 CPU 利用率保持在 45% 以下。移除节点时,请求延迟时间可能会暂时增加。

您可以使用 Cloud Consolegcloud 命令行工具或客户端库来更改节点数量。

Cloud Spanner 没有暂停模式。Cloud Spanner 节点为专用资源,即使您没有运行工作负载,Cloud Spanner 节点也会经常执行后台工作以优化和保护您的数据。

节点与副本

如果您需要纵向扩容实例中的服务资源和存储资源,请向该实例添加更多节点。请注意,添加节点不会增加副本的数量(对于给定配置而言,副本数量是固定的),但会增加每个副本在实例中拥有的资源。添加节点会为每个副本分配更多的 CPU 和 RAM,从而增加副本的吞吐量(也就是说,每秒可发生更多的读取和写入操作)。实际上,实例中每个副本的 Cloud Spanner 服务器数量与该实例的节点数相同。因此,一个 Cloud Spanner 实例中的服务器总数是该实例中节点数与副本数的乘积。

单区域配置

Google Cloud 服务目前可在北美洲、南美洲、欧洲、亚洲和澳洲的多个位置使用。如果您的用户和服务位于单个区域内,请选择单区域实例配置以实现最低延迟的读取和写入。

可用配置

Cloud Spanner 提供以下单区域实例配置:

区域名称 区域说明
美洲
northamerica-northeast1 蒙特利尔
southamerica-east1 圣保罗
us-central1 爱荷华
us-east1 南卡罗来纳
us-east4 北弗吉尼亚
us-west1 俄勒冈
us-west2 洛杉矶
us-west3 盐湖城
us-west4 拉斯维加斯
欧洲
europe-central2 华沙
europe-north1 芬兰
europe-west1 比利时
europe-west2 伦敦
europe-west3 法兰克福
europe-west4 荷兰
europe-west6 苏黎世
亚太地区
asia-south1 孟买
asia-east1 台湾
asia-east2 香港
asia-northeast1 东京
asia-northeast2 大阪
asia-northeast3 首尔
asia-southeast1 新加坡
asia-southeast2 雅加达
australia-southeast1 悉尼

对于任何单区域配置,Cloud Spanner 维护 3 个 读写副本,每个读写副本位于该区域的不同 Google Cloud 地区。每个读写副本均包含可操作数据库的完整副本,能够处理读写请求和只读请求。Cloud Spanner 在不同地区使用副本,以便在发生单地区故障时,您的数据库仍然可用。

复制

单区域配置恰好包含 3 个读写副本。如 Cloud Spanner 复制中所述,每项 Cloud Spanner 数据变动都要求达成最小写票数(即,大多数投票副本同意)。在单区域配置中,当三个副本中的其中两个同意时即达成最小写票数。

最佳做法

为了实现最佳性能,请遵循以下最佳做法:

  • 设计架构以防止出现热点和其他性能问题。
  • 将关键计算资源放到您的 Cloud Spanner 实例所在的同一区域中。
  • 预配足够的 Cloud Spanner 节点,使高优先级总 CPU 利用率保持在 65% 以下。

性能

遵循上述最佳做法时,每个 Cloud Spanner 节点可提供的最高读取速度为每秒 10,000 次查询 (QPS),最高写入速度为 2000 QPS(每行写入 1KB 大小的数据)。

多区域配置

如上所述,Cloud Spanner 单区域配置在单个区域内的多个地区之间复制数据。但是,如果您的应用经常需要从多个地理位置读取数据(例如,向北美洲和亚洲的用户提供数据),或者写入与读取不在同一个位置(例如,如果您有位于北美洲的大型写入工作负载,以及位于欧洲的大型读取工作负载),那么单区域配置可能不是您的最佳选择。

根据实例配置的定义,通过多区域配置,您不仅可以在多个地区中复制数据库的数据,还可以在多个区域的多个地区中复制数据库的数据。这些额外的副本使您能够从靠近配置区域或位于配置区域内的多个位置以低延迟读取数据。不过,有得也有失,因为在多区域配置中,共同达成最小写票数的(读写)副本分布在多个区域中。当这些副本互相通信以针对写入进行投票时,可能会产生额外的网络延迟时间。换句话说,多区域配置使您的应用可以在更多地方实现更快的读取速度,但代价是写入延迟时间会略有增加。

可用配置

一个大洲

名称 位置 读写地区 只读地区 见证者地区
asia1 亚洲 东京:asia-northeast1 L2R
大阪:asia-northeast2 2R
首尔:asia-northeast3
eur3 欧洲 比利时:europe-west1 L2R
荷兰:europe-west4 2R
芬兰:europe-north1
eur5 欧洲 伦敦:europe-west2 L2R
比利时:europe-west1 2R
荷兰:europe-west4
eur6 欧洲 荷兰:europe-west4 L2R
法兰克福:europe-west3 2R
苏黎世:europe-west6
nam3 北美洲 北弗吉尼亚:us-east4 L2R
南卡罗来纳:us-east1 2R
爱荷华:us-central1
nam6 北美洲 爱荷华:us-central1 L2R
南卡罗来纳:us-east1 2R
俄勒冈:us-west1 1R
洛杉矶:us-west2 1R
俄克拉荷马:us-central2
nam7 北美洲 爱荷华:us-central1 L2R
北弗吉尼亚:us-east4 2R
俄克拉荷马:us-central2
nam8 北美洲 洛杉矶:us-west2 L2R
俄勒冈:us-west1 2R
盐湖城: us-west3
nam9 北美洲 北弗吉尼亚:us-east4 L2R
爱荷华:us-central1 2R
俄勒冈州:us-west1 2R 南卡罗来纳:us-east1
nam10 北美洲 爱荷华:us-central1 L2R
盐湖城:us-west3 2R
俄克拉荷马:us-central2
nam11 北美洲 爱荷华:us-central1 L2R
南卡罗来纳:us-east1 2R
俄克拉荷马:us-central2
nam12 北美洲 爱荷华:us-central1 L2R
北弗吉尼亚:us-east4 2R
俄勒冈州:us-west1 2R 俄克拉荷马:us-central2
  • L:默认主要地区

  • 1R:该地区中有 1 个副本

  • 2R:该地区中有 2 个副本

三个大洲

名称 位置 读写地区 只读地区 见证者地区
nam-eur-asia1 北美洲
欧洲
亚洲
爱荷华:us-central1 L2R
俄克拉荷马:us-central2 2R
比利时:europe-west1 2R
台湾:asia-east1 2R
南 卡罗来纳:us-east1

优势

多区域实例提供了以下主要优势:

  • 可用性达 99.999%,大于 Cloud Spanner 单区域配置提供的 99.99% 的可用性。

  • 数据分布:Cloud Spanner 可在保证高度一致性下的前提下,自动在区域之间复制数据。这样您就可以将数据存储在要使用的位置,从而缩短延迟时间并改善用户体验。

  • 外部一致性:虽然 Cloud Spanner 能够跨地理上相距遥远的位置进行复制,但您仍然可以像使用在单台机器上运行的数据库一样使用 Cloud Spanner。事务保证可序列化,并且数据库中的事务顺序与客户端观察所提交的事务的顺序相同。外部一致性是比其他一些产品提供的“高度一致性”更有力的保证。如需详细了解此属性,请参阅 TrueTime 和外部一致性

复制

每个多区域配置包含两个指定为读写区域的区域,每个区域包含两个读写副本。其中一个读写区域被指定为“默认主要区域”,也就是说,它包含您的数据库的主要副本。Cloud Spanner 还将见证者副本放到称为见证者区域的第三个区域中。

每当客户端向您的数据库发出变更时,就会形成一个最小写票数,该最小写票数由默认主要区域中的一个副本和其他四个投票副本中的任意两个副本共同达成。(最小写票数可以由构成您的配置的两个或三个区域的副本达成,具体取决于有哪些其他副本参与了投票。)除了这 5 个投票副本之外,配置还可以包含用于处理低延迟读取的只读副本。包含只读副本的区域称为只读区域

通常情况下,多区域配置中的投票区域地理位置相近(相距不到一千英里),以便以低延迟达成最小写票数,从而实现快速写入(了解详情)。但是,为了避免协调故障,这些区域之间仍然保持足够远的距离(通常至少有几百英里)。

接下来的部分将更详细地介绍这些区域类型,并提供有关如何相应地放置写入和读取工作负载的指导。

区域类型

读写区域

如上所述,每个多区域配置包含两个读写区域,每个读写区域包含两个读写副本。其中一个读写地区被指定为默认主要地区。系统将在默认主要地区中的副本中为每个分片选择主要副本。在主要副本出现故障的情况下,默认主要地区中的其他副本会自动成为主要副本。事实上,主要副本会对自身进行运行状况检查,如果检测到运行状况不佳,则可以提前让出主要副本的身份。在默认主要地区中的副本都可用的正常情况下,默认主要地区包含主要副本,因此是首次处理写入的位置。

第二个读写地区包含有资格成为主要副本的其他副本。如果默认主要地区中的所有副本都丢失(这种情况不太可能发生),系统会从第二个读写地区中选择新的主要副本。

只读区域

只读区域包含只读副本,可以为读写区域之外的客户端处理低延迟读取。

见证者区域

见证者区域包含见证者副本,用于针对写入进行投票。在读写区域不可用的情况下(这种情况很少见),见证者会变得非常重要。

最佳做法

为了实现最佳性能,请遵循以下最佳做法:

  • 设计架构以防止出现热点和其他性能问题。
  • 将写入操作频繁的工作负载的计算资源布置在默认主要区域中或其附近,以尽可能减少写入延迟时间。
  • 使用至少 15 秒的过期设置,以使默认主要区域外的读取性能达到最佳。
  • 将重要的计算资源放到至少两个区域中,以免您的工作负载出现单区域依赖性。 最好将它们放置在两个不同的读写区域之间,确保任何区域中断都不会影响您的所有应用。
  • 预配足够的 Cloud Spanner 节点,使每个区域中的高优先级总 CPU 利用率保持在 45% 以下。

性能

每个 Cloud Spanner 配置的性能特征略有不同,具体取决于复制拓扑。

遵循上述最佳做法时,每个 Cloud Spanner 节点可以提供以下近似性能:

多区域配置 大致读取峰值(每个区域的 QPS) 大致写入峰值(总 QPS)
asia1 7000 1800
eur3 7000 1800
eur5 7000 1800
eur6 7000 1800
nam3 7000 1800
nam6 us-central1us-east1
中为 7000,us-west1us-west2 中为 3500 [1]
1800
nam7 7000 1800
nam8 7000 1800
nam9 7000 1800
nam10 7000 1800
nam11 7000 1800
nam12 7000 1800
nam-eur-asia1 7000 1000
  • [1]us-west1us-west2 仅提供 QPS 性能的一半,因为它们在每个区域包含一个副本而不是两个。

请注意,读取指导是按区域给的(因为可在任何位置处理读取),而写入指导则是针对整个配置。写入指导假设您每行写入 1 KB 大小的数据。

权衡:单区域配置与多区域配置

配置 可用性 延迟时间 费用 数据局部性
单区域 99.99% 单区域内的写入延迟时间较短。 费用较低;请参阅价格 支持按地理位置管理数据。
多区域 99.999% 多个地理区域的读取延迟时间较短。 费用较高;请参阅价格 数据分布在配置内的多个区域。

后续步骤