使用区域端点配置数据本地性

本页面介绍了如何配置 Cloud Firestore 客户端库以使用单区域或多区域端点。

使用 Cloud Firestore 客户端库时,您可以使用以下任一端点:

  • 全球端点:默认情况下,Cloud Firestore 客户端库会将 API 请求发送到名为 firestore.googleapis.com 的全球服务端点。全球服务端点会将请求路由到您的数据库。在路由期间,请求可能会通过数据库位置以外的位置中的服务器。

  • 区域性端点:区域性端点会实施限制,以确保在指定Google Cloud区域中传输、存储和处理数据。为确保服务端点在与数据库相同的区域中处理应用的 Cloud Firestore 请求,请在客户端库中指定区域端点

  • 多区域端点:多区域端点会实施限制,以确保在指定的多区域存储和处理数据。为确保服务端点在与数据库相同的多区域中处理应用的 Cloud Firestore 请求,请在客户端库中指定多区域端点

设置区域级或多区域级端点

配置区域级或多区域级端点的方法相同:在初始化客户端库时提供端点字符串。以下示例展示了如何使用区域性端点 (firestore.us-central1.rep.googleapis.com) 设置端点字符串。如需使用多区域端点,请提供与数据库位置对应的多区域端点字符串(例如,nam5 的端点字符串为 firestore.us.rep.googleapis.com)。

Java

如需详细了解如何安装和创建 Cloud Firestore 客户端,请参阅 Cloud Firestore 客户端库


import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.firestore.Firestore;
import com.google.cloud.firestore.FirestoreOptions;


/**
 * Demonstrate how to set a regional endpoint.
 */
public class RegionalEndpointSnippets {

  /**
   * Create a client with a regional endpoint.
   **/
  public Firestore regionalEndpoint(String projectId, String endpoint) throws Exception {
    FirestoreOptions firestoreOptions =
        FirestoreOptions.newBuilder()
            .setProjectId(projectId)
            .setCredentials(GoogleCredentials.getApplicationDefault())
            // set endpoint like firestore.us-central1.rep.googleapis.com:443
            .setHost(endpoint)
            .build();
    Firestore dbWithEndpoint = firestoreOptions.getService();

    return dbWithEndpoint;
  }

}

Python

如需详细了解如何安装和创建 Cloud Firestore 客户端,请参阅 Cloud Firestore 客户端库

ENDPOINT = "firestore.africa-south1.rep.googleapis.com"
client_options = ClientOptions(api_endpoint=ENDPOINT)
db = firestore.Client(client_options=client_options)

cities_query = db.collection("cities").limit(2).get()
for r in cities_query:
    print(r)

区域性端点和多区域端点语义

区域端点 (REP)

Cloud Firestore 支持此处列出的区域级位置的区域级端点Cloud Firestore 位置

请使用以下格式定义区域级端点:

Java

  firestore.REGION_NAME.rep.googleapis.com:443

确保端口号与端点一起定义。

Python

  firestore.REGION_NAME.rep.googleapis.com

Go

  firestore.REGION_NAME.rep.googleapis.com:443

确保端口号与端点一起定义。

REGION_NAME 替换为区域主机名的名称。

以下是一些主机名示例:

  • firestore.us-central1.rep.googleapis.com
  • firestore.europe-west1.rep.googleapis.com

多区域端点 (MREP)

对于多区域端点,请使用 us 表示位置 nam5nam7,使用 eu 表示位置 eur3(请参阅多区域位置)。

Java

  firestore.us.rep.googleapis.com:443
  firestore.eu.rep.googleapis.com:443

确保端口号与端点一起定义。

Python

  firestore.us.rep.googleapis.com
  firestore.eu.rep.googleapis.com

Go

  firestore.us.rep.googleapis.com:443
  firestore.eu.rep.googleapis.com:443

确保端口号与端点一起定义。

限制

位置端点(已弃用)

位置端点现已弃用。请改用区域级或多区域级端点。

Cloud Firestore 之前支持以下格式的位置端点:

Java

  REGION_NAME-firestore.googleapis.com:443

确保端口号与端点一起定义。

Python

  REGION_NAME-firestore.googleapis.com

Go

  REGION_NAME-firestore.googleapis.com:443

确保端口号与端点一起定义。

REGION_NAME 替换为区域或多区域主机名的名称。

以下是一些主机名示例:

  • eur3-firestore.googleapis.com
  • nam5-firestore.googleapis.com
  • europe-west6-firestore.googleapis.com
  • asia-northeast2-firestore.googleapis.com

如需查看多区域和区域主机名的完整列表,请参阅 Cloud Firestore 位置

限制全球 API 端点用量

为了帮助强制使用区域端点和多区域端点,请使用 constraints/gcp.restrictEndpointUsage 组织政策限制条件来阻止对全球 API 端点的请求。如需了解详情,请参阅限制端点用量