App Engine 概览

区域 ID

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

详细了解区域 ID

App Engine 应用由包含一项或多项服务的单个应用资源组成。每项服务都可以配置为使用不同的运行时和性能设置。在每项服务中,您都可以部署该服务的“版本”,而每个版本可以在一个或多个“实例”中运行,具体取决于您为它配置处理多少流量。

应用的组件

当您创建应用资源时,系统会在您的 Google Cloud 项目下创建 App Engine 应用。App Engine 应用是一个顶层容器,用于容纳构成应用的服务、版本和实例资源。当您创建 App Engine 应用时,所有的资源都将在您选择的区域中创建,包括应用代码以及一系列设置、凭据和应用的元数据。

每个 App Engine 应用至少包含一项服务,即 default 服务,这项服务可以保存许多版本,具体取决于应用的结算状态。如需了解详情,请参阅下面的限制

下图说明了运行多项服务的 App Engine 应用的层次结构。在此图中,应用具有两项包含多个版本的服务,并且其中两个版本正在多个实例上活跃运行:

应用服务、版本和实例的层次结构图

其他 Google Cloud 服务(例如 Datastore)将在您的 App Engine 应用中共享。如需了解详情,请参阅设计 Web 服务的结构

服务

使用 App Engine 中的“服务”将大型应用分解为可以安全共享 App Engine 功能并相互通信的逻辑组件。通常情况下,App Engine 服务的行为类似于微服务。因此,您可以在单项服务中运行整个应用,也可以设计并部署多项服务以作为一组微服务运行。

举例来说,用于处理客户请求的应用可以包含若干项服务,各自处理不同的任务,例如:

  • 来自移动设备的 API 请求
  • 内部的管理类请求
  • 结算流水线和数据分析等后端处理

App Engine 中的每项服务都包含来自应用的源代码以及相应的 App Engine 配置文件。部署到某服务的一组文件代表该服务的一个“版本”,每向该服务部署一次,就会在其中创建一个新的版本。

版本

通过在每项服务中包含应用的多个版本,您可以在该应用的不同版本之间快速切换,以执行回滚、测试或其他临时活动。您可以通过迁移拆分流量,将流量路由到应用的一个或多个特定版本。

实例

您可以在一个或多个“实例”上运行服务中的各个版本。默认情况下,App Engine 会扩缩您的应用资源规模,使其与负载匹配。您的应用可以增加运行实例数来保障性能,也能够缩减实例数来最大限度地减少空闲实例并降低费用。如需详细了解实例,请参阅实例的管理方式

在 App Engine 柔性环境中,实例由 Compute Engine 资源提供支持。App Engine 柔性环境中的实例使用的一些资源(例如磁盘、CPU 和内存)会计入项目的 Compute Engine API 配额。如需详细了解 App Engine 如何使用 Compute Engine 资源,请参阅 App Engine 柔性环境概览

应用请求

应用的每项服务以及这些服务中的每个版本都必须具有唯一的名称。然后您可以用这些唯一名称来确定网址,并将流量分配到对应的特定资源,例如:

https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

请注意,VERSION-dot-SERVICE-dot-PROJECT_ID 的组合长度(其中 VERSION 是版本名称,SERVICE 是服务名称,PROJECT_ID 是项目 ID)不得超过 63 个字符,且首尾不能使用连字符。如果组合长度超过 63 个字符,您可能会看到错误 DNS address could not be found.

传入的用户请求将被路由到配置为处理流量的服务或版本。您还可以选择将符合某些条件的请求路由到指定的服务和版本。如需了解详情,请参阅在服务之间通信

记录应用请求日志

当应用处理请求时,它还可以将自己的日志记录消息写入 stdoutstderr。如需详细了解应用的日志,请参阅写入应用日志

限制

每个应用的服务、版本和实例(对于采用手动扩缩方式的服务)数量都有限制:

说明 限制
每个应用的服务数上限 5
每个应用的版本数上限 5 *
每个手动扩缩版本的实例数上限 20

*后端服务(例如外部 HTTP 负载均衡器使用的后端服务)可能会计入版本数上限。

应用网址中的字符数也存在限制。

说明 限制
VERSION-dot-SERVICE-dot-PROJECT_ID 网址的项目网址中的字符数上限 63

并非所有项目都具有上述限制。随着您越来越多地使用 Google Cloud Platform,各上限值可能会相应地增加。如果您预计使用量即将显著增加,则可以在 Google Cloud 控制台的“App Engine 配额”页面中主动提出调整申请。