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

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

记录应用请求日志

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

限制

柔性环境和标准环境共享相同的服务和版本限制。例如,如果一个应用中同时有标准版和柔性版,则这些版本会计入同一限制。如需了解详情,请参阅“配额和限制”标准 | 柔性