应用配置文件

应用配置文件中存储的设置可让您的 Cloud Bigtable 实例了解如何处理从应用传入的请求。当您的其中一个应用连接到 Cloud Bigtable 实例时,该应用可以指定某个应用配置文件,Cloud Bigtable 会使用该应用配置文件来处理应用通过该连接发送的任何请求。

应用配置文件会影响您的应用与使用复制功能的实例之间通信的方式。因此,应用配置文件对于包含 2 个或以上集群的实例特别有用。即使您的实例只有 1 个集群,您也可以为您运行的每个应用或单个应用中的不同组件使用各自不同的应用配置文件。然后,您可以分别查看每个应用配置文件对应的 Cloud Bigtable 指标图

本页面介绍了应用配置文件所控制的设置,以及应用配置文件如何与您的应用配合使用。有关可用以实现常见使用场景的设置示例,请参阅复制功能设置示例。如需详细了解如何创建和管理应用配置文件,请参阅配置应用配置文件

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

应用配置文件中的设置

应用配置文件定义了 Cloud Bigtable 使用的路由政策。此外,它还控制着是否允许单行事务

路由政策

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

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

  • 多集群路由会自动将请求路由到实例中最近的集群。如果该集群不再可用,则流量将自动故障转移到最近的可用集群。Cloud Bigtable 会将同一个区域中的各集群视为等距离,即使这些集群位于不同地区也是如此。

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

单行事务

在 Cloud Bigtable 中,行级读取和写入操作始终属于原子操作。 对于行级以上的操作,Cloud Bigtable 不提供原子性;例如,Cloud Bigtable 不支持以原子方式更新多个行的事务。

但是,Cloud Bigtable 也支持某些需要在其他数据库中执行事务的写入操作:

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

实际上,Cloud Bigtable 使用单行事务来完成这些操作。这些操作同时包括读取和写入操作,且所有读取和写入均以原子方式执行,但仍然只是在行级的原子操作。

单行事务之间的冲突

Cloud Bigtable 实例中的每个集群都是主集群,它既接受读取,也接受写入。因此,启用复制功能时,需要执行单行事务的操作可能会引发问题。例如,假设某一单元格包含 ABC 值,并且您将两项附加操作发送到不同的集群:一项附加操作用于将值更改为 ABCDEF,另一项附加操作用于将值更改为 ABCXYZ。Cloud Bigtable 应如何解决这个冲突?

为了帮助您避免遇到这些问题,Cloud Bigtable 会要求您必须在每个应用配置文件中指定是否允许单行事务。另外,它还会阻止您在使用多集群路由的应用配置文件中启用单行事务,因为没有可靠的方法可以同时启用这两项功能。

如果您在使用单集群路由并且指向不同集群的两个不同应用配置文件中启用了单行事务,则 Cloud Bigtable 也会向您发出警告。如果您选择创建此类配置,则必须确保不会将冲突的读取-修改-写入 (read-modify-write) 或检查并更改 (check-and-mutate) 请求发送到 2 个不同的集群。

应用配置文件的工作原理

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

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

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

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

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

默认应用配置文件

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

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

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

自定义应用配置文件

您可以为每个实例创建许多不同的自定义应用配置文件。使用自定义应用配置文件,您可以控制每个应用或一个应用中的每个不同功能与实例的交互方式。例如,您可以将一个应用配置文件用于批处理应用,以将该应用的流量隔离到单个集群,并使用另一个不同的应用配置文件来为其他应用提供高可用性。

后续步骤