区域 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 文件,分别表示每个版本的配置。
Eclipse Jetty 9 和 Java 8 运行时使用 YAML 格式的配置文件。
文件结构取决于您使用的 Java 运行时。您可能需要 WAR 文件或 JAR 文件,每个文件对应应用中的一项服务。如需了解详情,请参阅相应的 Java 运行时开发者指南。
为保证实例正常运行的设计注意事项
硬件或软件故障可能会毫无征兆地出现,导致实例提前终止或频繁重启,这些故障可能需要相当长的时间才能解决。 您的应用应该能够应对此类故障。
以下实用策略可帮助您避免因实例重启带来的停机时间:
- 减少重启实例或启动新实例所需的时间。
- 对于长时间运行的计算,应定期创建检查点,确保您可以从该状态继续。
- 您的应用应该是“无状态”的,实例上不存储任何内容。
- 使用队列来执行异步任务。
- 将实例配置为手动扩缩时,需执行以下操作:
- 在多个实例间使用负载平衡。
- 除了处理正常流量所需的实例以外,再多配置一些实例。
- 编写回退逻辑,以便在手动扩缩实例不可用时使用缓存结果。
如需详细了解实例,请参阅实例的管理方式。
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 服务,例如 Datastore、Cloud SQL 和 Cloud Storage。
您也可以选择使用外部数据库或第三方数据库,前提是您使用的语言支持该数据库,并且可从您的 App Engine 实例对其进行访问。
如需详细了解如何在 Google Cloud 中或在外部存储文件,请参阅了解数据和文件存储。您还可以选择如何传送静态内容。您可以直接从 App Engine 中的应用本身传送其静态内容、在 Google Cloud 产品(如 Cloud Storage)上托管您的静态内容或者使用第三方内容分发网络 (CDN)。如需详细了解如何传送静态内容,请参阅传送静态文件。
后续步骤
如果您使用多项服务并希望将它们一起部署,请参阅部署多项服务的步骤。