扩缩

扩缩集群是为集群添加或移除节点以响应集群工作负载或数据存储需求变化的过程。

您可以通过以下方式扩缩 Bigtable 集群:

在大多数情况下,请选择“自动扩缩”。为集群启用自动扩缩功能后,Bigtable 会持续监控集群,并根据您的设置自动调整节点数量。

您可以根据集群的 CPU 使用率等指标扩缩 Bigtable 集群。例如,如果集群的负载很高,并且其 CPU 使用率也很高,您可以向集群添加节点,直到其 CPU 使用率有所下降为止。您也可以将不常使用的节点从集群中移除,以节省资金。

节点扩缩比例

创建 Bigtable 集群时,您可以选择使用 2 倍节点扩缩因子配置集群。选择此配置后,Bigtable 会将两个标准节点视为一个更大的单个计算节点,并且集群始终以 2 个节点为增量进行扩缩。因此,集群中节点之间的计算边界会减少。根据工作负载的实际情况,2 倍节点扩缩的优势包括:

  • 提高了吞吐量和尾延迟时间稳定性
  • 更好地吸收热点

您可以使用 Google Cloud 控制台或 gcloud CLI 创建启用了 2 倍节点缩放因子的集群。

您可以使用自动扩缩或手动节点分配来配置 2 倍节点扩缩。

如需了解限制,请参阅节点缩放因子限制

小型集群

对于较大的工作负载,2 倍节点扩缩最为合适。如果您考虑从标准节点缩放(缩放系数为 1)改为 2 倍节点缩放,请考虑成本影响。对于较小的工作负载(例如在只有一个节点的集群上运行的工作负载),使用 2 倍节点扩缩功能的费用会翻倍。同样,如果将之前在 3 个节点的集群上运行的工作负载的节点规模扩大 2 倍,则费用会增加 33%。

另一方面,对于之前在大型集群(例如包含 50 个节点的集群)上运行的工作负载,节点扩缩因子为 2 的效果相对于节点数量而言较小。

如果您尝试在不受支持的区域中创建节点扩缩因子为 2 的集群,Bigtable 会返回错误。

限制

集群扩缩取决于节点可用性,需要一些时间才能完成,无法弥补不当的架构设计,并且必须逐步进行。以下部分介绍了这些限制,以及适用于 2 倍节点扩缩的限制。

节点可用性

无论集群启用了手动节点分配还是自动扩缩,节点配额都适用。如需了解详情,请参阅配额和节点可用性

节点重新均衡时出现延迟现象

将节点添加到集群后,负载繁重的集群可能需要长达 20 分钟的时间才能表现出性能显著提升。因此,如果您的工作负载涉及时间短暂的突发高负载活动,则根据 CPU 负载向集群添加节点并不会提升性能,因为等到 Bigtable 重新平衡数据时,这种短暂的活动已经结束。

若要规划此延迟时间,您可以先通过编程方式或通过 Google Cloud 控制台向集群添加节点,然后再增加集群的负载。这种方法可让 Bigtable 在工作负载增加之前有时间将您的数据重新平衡到增加的节点。在使用手动节点分配的集群上,更改节点数量。在使用自动扩缩功能的集群上,更改节点数下限。流量恢复正常后,请恢复原先的节点设置。

因纵向缩容过快而导致的延迟增加

当您减少集群中的节点数量进行纵向缩容时,请尽量不要在 10 分钟内将集群大小降低 10% 以上。如果集群中的剩余节点暂时不堪重负,则纵向缩容过快可能会导致性能问题,例如延迟增加。

架构设计问题

如果表的架构设计存在问题,则向 Bigtable 集群添加节点可能不会提升性能。例如,如果您要对表的单个行执行大量读取或写入操作,则所有读取或写入操作都将转至集群的同一节点,因此,添加节点并不会提升性能。相反,如果读取和写入操作均匀分布到表的各行中,则添加节点通常会使性能有所提升。

如需详细了解如何设计架构以有效调节 Bigtable 的规模,请参阅设计您的架构

节点扩缩比例限制

您无法将使用标准节点扩缩的集群转换为使用 2 倍节点扩缩;您必须创建一个新集群,并在创建时启用 2 倍节点扩缩。如需详细了解如何向实例添加集群,请参阅修改实例

您无法为 HDD 集群配置 2 倍节点扩缩。

您可以在每个 Bigtable 区域中创建配置为节点扩缩 2 倍的集群,但不能在每个可用区中创建。以下区域无法包含节点扩缩率为 2 倍的集群:

  • asia-south1-c
  • europe-central2-c
  • me-central2-b
  • me-central2-c
  • northamerica-northeast1-a
  • northamerica-northeast1-b
  • southamerica-east1-c
  • us-south1-b
  • us-south1-c

后续步骤