组织配置文件

区域 ID

REGION_ID 是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r 包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。

详细了解区域 ID

请阅读以下文档,了解如何设计 App Engine 应用的服务和相关资源的结构。

目录结构

App Engine 服务的每个版本均在 app.yaml 配置文件中定义。对于简单应用,最低部署要求是定义一个 app.yaml 文件。app.yaml 文件充当部署描述符,并为特定版本的服务定义扩缩类型以及 CPU、磁盘和内存资源。如果要部署一项服务的多个版本,则可以在同一目录中创建多个 YAML 文件,以分别表示每个版本的配置。

在本地开发应用时,您可以在应用的根目录中为每项服务单独创建目录。如果您将应用托管在 GitHub 等版本控制系统 (VCS) 之外,还可以将应用的结构设计为在代码库中使用单独的目录,或者为每项服务使用单独的代码库。每个目录或代码库应代表单项服务,并包含该服务的 app.yaml 文件以及关联的源代码。

您可以选择为每个服务的 app.yaml 文件指定唯一的名称。例如,您可以使用服务的名称来命名配置文件,或使用唯一名称来表示该特定服务的每个版本,例如 service1.yamlapp.flexible.yaml

其他可选配置文件应保存在应用的 default 服务的根目录或代码库中。这些可选配置文件采用整个应用通用(而非针对某项具体服务)的设置,包括 dispatch.yamlindex.yamlcron.yaml 文件。

示例

以下示例展示了当您在本地开发应用时,一个含有三项服务的应用可能具有的结构。可选的 dispatch.yaml 已添加到该应用的根目录中。在根目录下还有三个目录,分别对应于应用的每项服务。service1 的子目录包含该服务的源文件和配置文件。同样,service2service3 均位于独立的目录中,这些目录分别包含对应服务的文件,而 service3 包含 YAML 配置文件的两个版本:

YAML 服务的层次结构图

单服务应用将仅包含 default 服务,并且所有文件均可位于该应用根目录下的同一目录中。以下示例演示了单服务应用可能具有的结构,此结构包含可选的 dispatch.yaml 配置文件以及分别表示该服务的不同版本的两个配置文件 service1.yamlservice2.yaml

小型 YAML 服务的层次结构图

关于实例正常运行时间的设计注意事项

硬件或软件故障可能会毫无征兆地出现,导致实例提前终止或频繁重启,这些故障可能需要相当长的时间才能解决。 您的应用应该能够应对此类故障。

以下实用策略可帮助您避免因实例重启带来的停机时间:

  • 减少重启实例或启动新实例所需的时间。
  • 对于长时间运行的计算,应定期创建检查点,确保您可以从该状态继续。
  • 您的应用应该是“无状态”的,实例上不存储任何内容。
  • 使用队列来执行异步任务。
  • 将实例配置为手动扩缩时,需执行以下操作:
    • 在多个实例间使用负载平衡。
    • 除了处理正常流量所需的实例以外,再多配置一些实例。
    • 编写回退逻辑,以便在手动扩缩实例不可用时使用缓存结果。

如需详细了解实例,请参阅实例的管理方式

default 服务

每个 App Engine 应用都包含一项 default 服务。您必须先将应用的初始版本部署到 default 服务,然后才能为应用创建和部署其他服务。

您可以选择性地在 app.yaml 中使用设置 service: default 指定默认服务。

从您的 Cloud 项目发送到您的应用的请求将传递给 default 服务,例如 https://PROJECT_ID.REGION_ID.r.appspot.com。如需详细了解如何定位到其他服务,请参阅在服务之间通信

可选配置文件

以下配置文件可以控制适用于个别应用中所有服务的可选功能。如需详细了解每个可选功能,请参阅以下主题:

  • dispatch.yaml 可以凌越路由默认规则,方法是根据网址中的路径或主机名将传入的请求发送到特定服务。
  • index.yaml 指定使用 Datastore 查询时您的应用需要哪些索引。
  • cron.yaml 配置在规定的时间或按固定时间间隔运行的计划任务。

数据和文件存储注意事项

您可以从 App Engine 轻松访问其他 Google Cloud 服务,例如 DatastoreCloud SQLCloud Storage

您也可以选择使用外部数据库或第三方数据库,前提是您使用的语言支持该数据库,并且可从您的 App Engine 实例对其进行访问。

如需详细了解如何在 Google Cloud 中或在外部存储文件,请参阅了解数据和文件存储

您还可以选择如何传送静态内容。您可以直接从 App Engine 中的应用本身传送其静态内容、在 Google Cloud 产品(如 Cloud Storage)上托管您的静态内容或者使用第三方内容分发网络 (CDN)。如需详细了解如何传送静态内容,请参阅传送静态文件

后续步骤

如果您使用多项服务并希望将它们一起部署,请参阅部署多项服务的步骤。