复制配置示例

本页面介绍了 Bigtable 复制的一些常见使用场景,并介绍了可用于为这些使用场景提供支持的设置。

本页面还介绍了如何决定将哪些设置用于其他用例

在阅读本页内容之前,您应先熟悉 Bigtable 复制功能概览

在将集群添加到实例之前,您需要了解更改复制表的垃圾回收政策时的适用限制。

在大多数情况下,请为实例的集群启用自动扩缩。自动扩缩功能使 Bigtable 能够根据工作负载自动在集群中添加和移除节点。

如果您选择手动节点分配,请在实例中的每个集群中预配足够多的节点,以确保每个集群除了能够处理从应用收到的负载之外,还可以处理复制。如果集群没有足够的节点,复制延迟可能会增加,并且集群可能会因内存累积而遇到性能问题,并且对实例中其他集群的写入操作可能会被拒绝。

本文档中的示例介绍了如何创建实例,但您也可以向现有实例添加集群。

隔离批量分析工作负载与其他应用

如果您使用同一个集群运行一个执行大量大型读取操作的批量分析作业和一个执行混合读写操作的应用,那么大型批量作业会拖慢该应用的用户体验到的速度。通过复制,您可以通过设置单集群路由的应用配置文件,将批量分析作业流量和应用流量路由到不同的集群,确保批量作业不会影响到应用的用户。

要隔离两个工作负载,请执行以下操作:

  1. 创建一个包含两个集群的实例。

  2. 创建两个应用配置文件,分别是 live-trafficbatch-analytics

    如果您的集群 ID 是 cluster-acluster-b,则 live-traffic 应用配置文件应将请求路由到 cluster-a,而 batch-analytics 应用配置文件应将请求路由到 cluster-b。此配置会为使用相同应用配置文件的应用提供读己所写 (read-your-writes) 一致性,但不会为使用不同应用配置文件的应用提供这种一致性。

    如有必要,您可以在 live-traffic 应用配置文件中启用单行事务。无需在 batch-analytics 应用配置文件中启用单行事务(假设该应用配置文件仅用于读取操作)。

  3. 使用 live-traffic 应用配置文件运行实时流量工作负载。

  4. 在实时流量工作负载运行时,使用 batch-analytics 应用配置文件运行只读的批量工作负载。

如需将两个较小的工作负载与一个较大的工作负载隔离开,请执行以下操作:

  1. 创建一个包含三个集群的实例。

    这些步骤假设您的集群使用 ID cluster-acluster-bcluster-c

  2. 创建以下应用配置文件:

    • live-traffic-app-a:从您的应用到 cluster-a 的单集群路由
    • live-traffic-app-b:从您的应用到 cluster-b 的单集群路由
    • batch-analytics:从批量分析作业到 cluster-c 的单集群路由
  3. 使用 live-traffic 应用配置文件来运行实时流量工作负载。

  4. 在实时流量工作负载运行时,使用 batch-analytics 应用配置文件运行只读的批量工作负载。

创建高可用性 (HA)

如果实例只有一个集群,则数据的耐用性和可用性将受限于该集群所在的可用区。复制功能可在多个可用区或区域中分别为您的数据存储一份副本,并可在需要时自动在多个集群之间进行故障切换,从而提高了数据的耐用性和可用性。

如需为实例配置高可用性 (HA) 用例,请创建新的应用配置文件以使用多集群路由,或更新默认应用配置文件以使用多集群路由。这一配置可提供最终一致性。您将无法启用单行事务,因为在使用多集群路由时,单行事务可能会导致数据冲突

用于提高可用性的配置包括以下情形。

  • 三个或更多不同区域中的集群(推荐配置)。建议的高可用性配置是具有 N+2 个集群的实例,这些集群分别位于不同区域。例如,如果传送数据所需的最少集群数量为 2,则您需要一个包含四个集群的实例来保持高可用性。即使在两个区域不可用的极少数情况下,这种配置也能确保正常运行时间。我们建议您将集群分布在多个大洲。

    配置示例:

    • 位于爱荷华州 us-central1-a 可用区的 cluster-a
    • 位于比利时 europe-west1-d 可用区的 cluster-b
    • 位于台湾 asia-east1-b 可用区的 cluster-c
  • 两个集群位于同一区域但位于不同可用区。此方案可提供区域可用性内的高可用性、无需故障切换即可进行跨区域复制费用的功能,并且不会增加故障切换的延迟时间。只要复制的 Bigtable 实例所在的任何可用区可用,该实例中的数据即可用。

    配置示例:

    • 位于悉尼 australia-southeast1-a 可用区的 cluster-a
    • 位于悉尼 australia-southeast1-b 可用区的 cluster-b
  • 两个集群位于不同区域。这种多区域配置提供与上述多可用区配置类似的高可用性,但即使您无法连接到其中一个区域,您的数据也可用。

    在区域之间复制写入需要付费。

    配置示例:

    • 位于东京 asia-northeast1-c 可用区的 cluster-a
    • 位于香港 asia-east2-b 可用区的 cluster-b
  • 两个集群位于区域 A,第三个集群位于区域 B。即使您无法连接到其中一个区域,此选项也可使您的数据可用,并且它在区域 A 中提供额外的容量。

    在区域之间复制写入需要付费。如果您写入区域 A,您需要付费一次,因为区域 B 只有一个集群。如果您写入区域 B,则需要支付两次费用,因为区域 A 中有两个集群。

    配置示例:

    • 位于比利时 europe-west1-b 可用区的 cluster-a
    • 位于比利时 europe-west1-d 可用区的 cluster-b
    • 位于芬兰 europe-north1-c 可用区的 cluster-c

提供近乎实时的备份

在某些情况下(例如,您不能冒所读取的数据过时的风险),您始终需要将请求路由至一个集群。但是,您仍然可以使用复制功能,即使用一个集群处理请求,而保留另一个集群作为近乎实时的备份。如果生产集群不可用,您可以手动故障切换至备份集群,从而最大程度地减少停机时间。

如需针对此使用场景配置您的实例,请创建一个使用单集群路由的应用配置文件,或更新默认应用配置文件以使用单集群路由。您在应用配置文件中指定的集群会处理传入请求。另一个集群将充当备份,以供在需要进行故障切换时使用。这一配置有时称为“活跃-非活跃”配置,它可同时提供高度一致性和读己所写一致性。如有必要,您可以在应用配置文件中启用单行事务

如需实现这一配置,请执行以下操作:

  1. 使用采用单集群路由的应用配置文件运行工作负载。

  2. 使用 Google Cloud 控制台监控实例的集群并确认只有一个集群正在处理传入请求。

    另一个集群仍将使用 CPU 资源执行复制和其他维护任务。

  3. 更新应用配置文件,使其指向您实例中的另一个集群。

    您收到有关失去读己所写一致性的警告,这也意味着您将失去高度一致性。

    如果您启用了单行事务,则还会收到有关可能丢失数据的警告。如果您在故障切换期间发送有冲突的写入,则会丢失数据。

  4. 继续监控您的实例。您应该会看到另一个集群正在处理传入请求。

保持高可用性和区域弹性

假设您的客户集中分布在一个大洲的两个不同区域。您希望尽可能通过靠近客户的 Bigtable 集群为每个集中区域中的客户提供服务。您希望每个区域内的数据高度可用,还可能希望当一个或多个集群不可用时使用故障切换选项。

对于此使用场景,您可以创建一个实例,使其在区域 A 和区域 B 中包含两个集群。此项配置在您无法连接到一个 Google Cloud 区域时也可提供高可用性。它还提供区域弹性,即使某个可用区变得不可用,其所在区域的另一个集群仍然可用。

您可以根据业务需要选择针对此用例使用多集群路由还是单集群路由。

如需针对此使用场景配置您的实例,请执行以下操作:

  1. 创建一个 Bigtable 实例,其中包含四个集群:两个位于区域 A,两个位于区域 B。同一区域中的集群必须位于不同的可用区。

    配置示例:

    • 位于孟买 asia-south1-a 可用区的 cluster-a
    • 位于孟买 asia-south1-c 可用区的 cluster-b
    • 位于东京 asia-northeast1-a 可用区的 cluster-c
    • 位于东京 asia-northeast1-b 可用区的 cluster-d
  2. 在每个区域附近布置一台应用服务器。

您可以根据业务需要选择针对此用例使用多集群路由还是单集群路由。如果您使用多集群路由,则 Bigtable 会自动处理故障切换。如果使用单集群路由,则您可以根据自己的判断来决定何时故障切换到其他集群。

单集群路由选项

如果您不希望 Bigtable 集群在可用区或区域不再可用时自动故障切换,则可以针对此使用场景使用单集群路由。如果您想要管理 Bigtable 开始在远程区域之间路由流量时可能产生的费用和延迟,或者您希望根据自己的判断或业务规则做出故障切换决策,则此选项是一个不错的选择。

要实现这一配置,请至少创建一个应用配置文件,该应用配置文件会为向实例发送请求的每个应用使用单集群路由。您可以将应用配置文件路由到 Bigtable 实例中的任何集群。例如,如果您在孟买运行三个应用,并在东京运行六个应用,则可以为孟买应用配置一个应用配置文件以路由到 asia-south1-a,并配置两个应用配置文件以路由到 asia-south1-c。对于东京应用,配置三个应用配置文件以路由到 asia-northeast1-a,并另外配置三个应用配置文件以路由到 asia-northeast1-b

使用此配置时,如果一个或多个集群不再可用,您可以执行手动故障切换,或者选择让该可用区的数据暂时不可用,直到该可用区再次可用为止。

多集群路由选项

如果您要实现此使用场景,并且希望 Bigtable 在您的应用无法访问某个区域时自动故障切换到另一个区域,请使用多集群路由

如需实现这一配置,请创建新的应用配置文件以便为每个应用使用多集群路由,或更新默认应用配置文件以使用多集群路由。

这一配置可提供最终一致性。 如果某个区域不再可用,则 Bigtable 请求将会自动发送到其他区域。发生这种情况时,您需要为流往其他区域的网络流量付费,由于距离较远,您的应用可能会遇到较长时间的延迟。

将数据存储在您的用户附近

如果您的用户遍布全球,则可以通过在用户附近运行应用并尽可能将数据储存在应用附近来减少延迟时间。借助 Bigtable,您可以创建一个实例并使其包含多个 Google Cloud 区域中的集群,您的数据会自动在每个区域中复制。

对于此用例,请使用设置单集群路由的应用配置文件。由于集群之间存在距离,因此多集群路由不适用于此用例。如果某个集群不再可用,而其多集群应用配置文件自动开始跨远距离重新路由流量,则您的应用可能会遇到不可接受的延迟,并导致出乎预料的额外网络费用。

如需针对此使用场景配置您的实例,请执行以下操作:

  1. 创建一个在三个不同的地理区域(例如美国、欧洲和亚洲)包含集群的实例。

  2. 在每个区域附近布置一台应用服务器。

  3. 创建类似如下所示的应用配置文件:

    • clickstream-us:到美国集群的单集群路由
    • clickstream-eu:到欧洲集群的单集群路由
    • clickstream-asia:到亚洲集群的单集群路由

在此设置中,您的应用将应用配置文件用于最近的集群。写入任何集群的内容都会自动复制到其他两个集群。

其他使用场景

对于此页面中没有介绍的用例,请考虑以下问题来决定如何配置您的应用配置文件:

  • 您是否需要执行单行事务,例如读取-修改-写入操作(包括增量和附加操作)以及检查并更改操作(也称为条件更改或条件写入)?

    如果需要执行单行事务,您的应用配置文件必须使用单集群路由以防止数据丢失,同时您必须手动处理故障切换

  • 您是否希望 Bigtable 自动处理故障切换?

    如果您希望这样,您的应用配置文件必须使用多集群路由。如果集群无法处理传入请求,则 Bigtable 将自动故障切换到其他集群。详细了解自动故障切换

    为防止数据丢失,使用多集群路由时不能启用单行事务了解详情

  • 您是否想要保留一个备份或备用集群以防主集群不可用?

    如果您希望这样,请在应用配置文件中使用单集群路由,并在需要时手动故障切换到备份集群

    这种配置还可让您在必要时使用单行事务

  • 您是否想要将不同类型的流量发送到不同集群?

    如果您希望如此,请在应用配置文件中使用单集群路由,并将每种类型的流量引导至各自的集群。 如有必要,请手动在各集群之间进行故障切换

    您可以根据需要在应用配置文件中启用单行事务

后续步骤