应用配置文件

应用配置文件中存储的设置会告诉您的 Cloud Bigtable 实例如何处理从应用传入的请求。当一个应用连接到 Bigtable 实例时,该应用可以指定某个应用配置文件,Bigtable 会使用该应用配置文件来处理应用通过该连接发送的请求。应用配置文件定义了 Bigtable 使用的路由政策,并控制是否允许单行事务

应用配置文件对于具有两个或以上集群的实例特别有用。即使您的实例只有一个集群,您也可以为您运行的每个应用或单个应用中的不同组件使用各自不同的应用配置文件。然后,您可以分别查看每个应用配置文件对应的 Bigtable 指标图

本页面介绍了应用配置文件所控制的设置,以及应用配置文件如何与您的应用配合使用。

如果您要使用应用配置文件来配置路由政策,则应在阅读本页内容之前先熟悉 Bigtable 复制功能概览

路由政策

应用配置文件指定了 Bigtable 应对每个请求使用的路由政策:

  • 单集群路由会将所有请求路由到您实例中的一个集群。 如果该集群不再可用,您必须手动故障转移到另一个集群。

  • 多集群路由会自动将请求路由到实例中最近的集群。如果该集群不再可用,则流量将自动故障转移到最近的可用集群。即使单个区域中的各集群位于不同的可用区,Bigtable 也认为这些集群的距离相等。您可以配置应用配置文件以路由到实例中的任何集群,也可以指定集群组以告知应用配置文件仅路由到实例中的部分集群。

如需详细了解故障转移,请参阅故障转移。 如需了解如何完成故障转移,请参阅管理故障转移

单行事务

在 Bigtable 中,行级读取和写入操作始终属于原子操作。Bigtable 不支持以原子方式更新多个行的事务。

但是,Bigtable 支持某些需要在其他数据库中执行事务的写入操作。实际上,Bigtable 使用单行事务来完成这些操作。这些操作包括读取和写入操作,且所有读取和写入均以原子方式执行,但仍然只是在行级的原子操作:

  • 读取-修改-写入 (Read-modify-write) 操作(包括增量和附加)。在读取-修改-写入 (read-modify-write) 操作中,Cloud Bigtable 会读取现有值,对现有值进行增量或附加操作,并将更新后的值写入表中。
  • 检查并更改 (Check-and-mutate) 操作(也称为条件更改或条件写入)。在检查并更改 (check-and-mutate) 操作中,Bigtable 会对行进行检查以了解其是否符合指定条件。如果符合条件,Bigtable 则会将新值写入该行中。

单行事务之间的冲突

Bigtable 实例中的每个集群都是主集群,它既接受读取,也接受写入。因此,需要执行单行事务的操作可能会导致多集群实例出现问题

例如,假设您有一个用于存储票务系统数据的表。可以使用整数计数器存储已售门票数。每次出售一张门票后,您的应用都会发送读取-修改-写入操作,以将计数器递增 1。

如果您的实例有一个集群,则客户端应用可以同时出售门票,并且可增加计数器而不会丢失数据,因为请求以原子方式按照单个集群接收请求的顺序进行处理。

另一方面,如果您的实例有多个集群,并且您的应用配置文件是要允许多集群路由,则增加计数器的并发请求可能会发送到不同的集群,然后复制到该实例中的其他集群。如果您同时发送两个递增请求并路由到不同集群,则每个请求都会完成其事务,而不知道其他消息。每个集群上的计数器递增 1。当数据复制到另一个集群时,Bigtable 可能无法知道您打算递增 2。

为帮助您避免意外的结果,Bigtable 会执行以下操作:

  • 要求您必须在每个应用配置文件中指定是否允许单行事务。
  • 阻止您在使用多集群路由的应用配置文件中启用单行事务,因为没有可靠的方法可以同时启用这两项功能。
  • 如果您在使用单集群路由并且指向不同集群的两个或多个不同应用配置文件中启用了单行事务,则会向您发出警告。如果您选择创建此类配置,则必须确保不会将冲突的读取-修改-写入 (read-modify-write) 或检查并更改 (check-and-mutate) 请求发送到不同集群。

应用配置文件的工作原理

应用配置文件指定了 Bigtable 用来处理实例的传入请求的设置。

许多 Bigtable 用户都会将多个应用连接到同一实例。例如,您的一个应用可能用于为请求的客户提供数据,另一个应用可能用于偶尔运行批量作业来分析数据。为了处理这些不同的应用,您应创建多个应用配置文件(每个应用至少有一个),并为每个文件配置适用于该应用的设置。这种设置让您可以仅对一个应用的设置进行更改,而不影响其它应用。

您可能还有一个执行多种功能(例如查看当前数据和查询历史数据)的应用。为了处理这些不同的功能,您应为每个功能创建一个应用配置文件,这样您就可以对每个功能进行不同的配置,并可仅对一种功能的设置进行更新。

每个实例都有一个 default 应用配置文件,您也可以为每个实例创建自定义应用配置文件。以下部分介绍了 default 和自定义应用配置文件。

要使用某一应用配置文件,请在连接到您的实例时在代码中指定该配置文件。如果您没有指定应用配置文件,Bigtable 将使用该实例的默认应用配置文件。

默认应用配置文件

当您创建实例时,Bigtable 会自动为该实例创建一个默认应用配置文件。如果您的应用未指定应用配置文件,或者您使用 HBase shell 连接到实例,Bigtable 将使用默认应用配置文件中的设置。您可以随时查看和更改这些设置

实例的默认应用配置文件中的设置取决于您首次创建该实例时其中包含的集群数量:

  • 如果您创建的实例包含一个集群,则 default 应用配置文件会使用单集群路由,并启用单行事务。这样可确保在以后添加其他集群时现有应用的行为不会更改。
  • 如果您创建的实例包含 2 个或更多集群,则 default 应用配置文件会使用多集群路由。单行事务不得与多集群路由一起使用。

添加或移除集群时,默认应用配置文件不会更改。您必须手动更新默认应用配置文件才能更改其设置。 但最佳做法是,您应该创建并使用新的应用配置文件,而不是更改默认的应用配置文件。

自定义应用配置文件

自定义应用配置文件是您创建和配置的应用配置文件。一个实例最多可以有 2,000 个应用配置文件。

后续步骤