复制配置示例
本页介绍了 Bigtable 复制功能的一些常见用例,并展示了可供您用来为这些用例提供支持的设置。
此外,本页面还说明了如何确定适用于其他使用场景的设置。
在阅读本页内容之前,您应先熟悉 Bigtable 复制功能概览。
在将集群添加到实例之前,您需要了解更改复制表的垃圾回收政策时的适用限制。
在大多数情况下,请为实例的集群启用自动扩缩。借助自动扩缩功能,Bigtable 可以根据工作负载自动向集群添加和移除节点。
如果您改为选择手动节点分配,请在实例的每个集群中预配足够的节点,以确保除了从应用接收的负载之外,每个集群还可以处理复制操作。如果集群的节点不足,则复制延迟时间可能会增加,并且由于内存使用量增加,集群可能会遇到性能问题,并且写入实例中其他集群的操作可能会被拒绝。
本文档中的示例介绍了如何创建实例,但您也可以向现有实例添加集群。
隔离批量分析工作负载与其他应用
如果您使用同一个集群运行一个执行大量大型读取操作的批量分析作业和一个执行混合读写操作的应用,那么大型批量作业会拖慢该应用的用户体验到的速度。通过复制,您可以通过设置单集群路由的应用配置文件,将批量分析作业流量和应用流量路由到不同的集群,确保批量作业不会影响到应用的用户。
创建一个包含两个集群的实例。
创建 2 个应用配置文件,分别是
live-traffic
和batch-analytics
。如果您的集群 ID 是
cluster-a
和cluster-b
,则live-traffic
应用配置文件应将请求路由到cluster-a
,而batch-analytics
应用配置文件应将请求路由到cluster-b
。此配置会为使用相同应用配置文件的应用提供读己所写 (read-your-writes) 一致性,但不会为使用不同应用配置文件的应用提供这种一致性。如有必要,您可以在
live-traffic
应用配置文件中启用单行事务。无需在batch-analytics
应用配置文件中启用单行事务(假设该应用配置文件仅用于读取操作)。使用
live-traffic
应用配置文件运行实时流量工作负载。在实时流量工作负载运行时,使用
batch-analytics
应用配置文件运行只读的批量工作负载。
如需将两个较小的工作负载与一个较大的工作负载隔离开,请执行以下操作:
创建一个包含三个集群的实例。
这些步骤假设您的集群使用 ID
cluster-a
、cluster-b
和cluster-c
。创建以下应用配置文件:
live-traffic-app-a
:从您的应用到cluster-a
的单集群路由live-traffic-app-b
:从您的应用到cluster-b
的单集群路由batch-analytics
:从批量分析作业到cluster-c
的单集群路由
使用 live-traffic 应用配置文件来运行实时流量工作负载。
在实时流量工作负载运行时,使用
batch-analytics
应用配置文件运行只读的批量工作负载。
创建高可用性 (HA)
如果实例只有一个集群,那么您的数据的耐用性和可用性将受限于该集群所在的可用区。复制功能可在多个可用区或区域中分别为您的数据存储一份副本,并可在需要时自动在多个集群之间进行故障切换,从而提高了数据的耐用性和可用性。
如需为实例配置高可用性 (HA) 用例,请创建新的应用配置文件以使用多集群路由,或更新默认应用配置文件以使用多集群路由。这一配置可提供最终一致性。您将无法启用单行事务,因为在使用多集群路由时,单行事务可能会导致数据冲突。
用于提高可用性的配置包括以下情形。
位于 3 个或更多不同区域的集群(推荐配置)。 高可用性的推荐配置是具有 N+2 个集群,且每个集群位于不同区域的实例。例如,如果您需要处理数据的集群的最小数量为 2,则需要一个包含 4 个集群的实例才能保持高可用性。即使 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
- 位于比利时
提供近乎实时的备份
在某些情况下(例如,您不能冒所读取的数据过时的风险),您始终需要将请求路由至一个集群。但是,您仍然可以使用复制功能,即使用一个集群处理请求,而保留另一个集群作为近乎实时的备份。如果生产集群不可用,您可以手动故障切换至备份集群,从而最大程度地减少停机时间。
如需针对此使用场景配置您的实例,请创建一个使用单集群路由的新应用配置文件,或者更新默认应用配置文件以使用单集群路由。您在应用配置文件中指定的集群会处理传入请求。另一个集群将充当备份,以供在需要进行故障切换时使用。这一配置有时称为“活跃-非活跃”配置,它可同时提供高度一致性和读己所写一致性。如有必要,您可以在应用配置文件中启用单行事务。
如需实现这一配置,请执行以下操作:
使用采用单集群路由的应用配置文件运行工作负载。
使用 Google Cloud 控制台监控实例的集群并确认只有一个集群正在处理传入请求。
另一个集群仍将使用 CPU 资源执行复制和其他维护任务。
更新应用配置文件,使其指向您实例中的另一个集群。
您收到关于失去读己所写一致性的警告,这也意味着您还会失去高度一致性。
如果您启用了单行事务,您还将收到有关可能丢失数据的警告。如果您在故障切换期间发送有冲突的写入,您的数据则会丢失。
继续监控您的实例。您应该会看到另一个集群正在处理传入请求。
保持高可用性和区域弹性
假设您的客户集中分布在一个大洲的两个不同区域。您希望尽可能通过靠近客户的 Bigtable 集群为每个集中区域中的客户提供服务。您希望每个区域内的数据高度可用,还可能希望当一个或多个集群不可用时使用故障切换选项。
对于此使用场景,您可以创建一个实例,使其在区域 A 和区域 B 中分别包含两个集群。此项配置在您无法连接到一个 Google Cloud 区域时也可提供高可用性。它还提供区域弹性,即使某个可用区变得不可用,其所在区域的另一个集群仍然可用。
您可以根据业务需要选择针对此用例使用多集群路由还是单集群路由。
如需针对此使用场景配置您的实例,请执行以下操作:
创建一个 Bigtable 实例并使其包含 4 个集群(在区域 A 和区域 B 中分别包含 2 个集群)。同一区域中的集群必须位于不同的可用区。
配置示例:
- 位于孟买
asia-south1-a
可用区的cluster-a
- 位于孟买
asia-south1-c
可用区的cluster-b
- 位于东京
asia-northeast1-a
可用区的cluster-c
- 位于东京
asia-northeast1-b
可用区的cluster-d
- 位于孟买
在每个区域附近布置一台应用服务器。
您可以根据业务需要选择针对此用例使用多集群路由还是单集群路由。如果您使用多集群路由,则 Bigtable 会自动处理故障切换。如果使用单集群路由,则您可以根据自己的判断来决定何时故障切换到其他集群。
单集群路由选项
如果您不希望 Bigtable 集群在可用区或区域不再可用时自动故障切换,则可以针对此使用场景使用单集群路由。如果您想要管理 Bigtable 开始在远程区域之间路由流量时可能产生的费用和延迟,或者您希望根据自己的判断或业务规则做出故障切换决策,则此选项是一个不错的选择。
要实现这一配置,请至少创建一个应用配置文件,该应用配置文件会为向实例发送请求的每个应用使用单集群路由。您可以将应用配置文件路由到 Bigtable 实例中的任何集群。例如,如果您在孟买运行三个应用,并在东京运行六个应用,则可以为孟买应用配置一个应用配置文件以路由到 asia-south1-a
,并配置两个应用配置文件以路由到 asia-south1-c
。对于东京应用,配置三个应用配置文件以路由到 asia-northeast1-a
,并另外配置三个应用配置文件以路由到 asia-northeast1-b
。
使用此配置时,如果一个或多个集群不再可用,您可以执行手动故障切换,或者选择让该可用区的数据暂时不可用,直到该可用区再次可用为止。
多集群路由选项
如果您要实现此使用场景,并且希望 Bigtable 在您的应用无法访问某个区域时自动故障切换到另一个区域,请使用多集群路由。
如需实现这一配置,请创建新的应用配置文件以便为每个应用使用多集群路由,或更新默认应用配置文件以使用多集群路由。
这一配置可提供最终一致性。 如果某个区域不再可用,则 Bigtable 请求将会自动发送到其他区域。发生这种情况时,您需要为流往其他区域的网络流量付费,由于距离较远,您的应用可能会遇到较长时间的延迟。
将数据存储在您的用户附近
如果您的用户遍布全球,则可以通过在用户附近运行应用并尽可能将数据储存在应用附近来减少延迟时间。借助 Bigtable,您可以创建一个实例并使其包含多个 Google Cloud 区域中的集群,您的数据会自动在每个区域中复制。
对于此用例,请使用设置单集群路由的应用配置文件。由于集群之间存在距离,因此多集群路由不适用于此用例。如果某个集群不再可用,而其多集群应用配置文件自动开始跨远距离重新路由流量,则您的应用可能会遇到不可接受的延迟,并导致出乎预料的额外网络费用。
如需针对此使用场景配置您的实例,请执行以下操作:
创建一个在三个不同的地理区域(例如美国、欧洲和亚洲)包含集群的实例。
在每个区域附近布置一台应用服务器。
创建类似如下所示的应用配置文件:
clickstream-us
:到美国集群的单集群路由clickstream-eu
:到欧洲集群的单集群路由clickstream-asia
:到亚洲集群的单集群路由
在此设置中,您的应用将应用配置文件用于最近的集群。写入任何集群的内容都会自动复制到其他两个集群。
其他使用场景
对于此页面中没有介绍的用例,请考虑以下问题来决定如何配置您的应用配置文件:
您是否需要执行单行事务,例如读取-修改-写入操作(包括增量和附加操作)以及检查并更改操作(也称为条件更改或条件写入)?
您是否希望 Bigtable 自动处理故障切换?
如果您希望这样,您的应用配置文件必须使用多集群路由。如果集群无法处理传入请求,则 Bigtable 将自动故障切换到其他集群。详细了解自动故障切换。
您是否想要保留一个备份或备用集群以防主集群不可用?
如果您希望这样,请在应用配置文件中使用单集群路由,并在需要时手动故障切换到备份集群。
这种配置还可让您在必要时使用单行事务。
您是否想要将不同类型的流量发送到不同集群?
如果您希望如此,请在应用配置文件中使用单集群路由,并将每种类型的流量引导至各自的集群。 如有必要,请手动在各集群之间进行故障切换。
您可以根据需要在应用配置文件中启用单行事务。