App Engine 标准环境具有两代运行时环境。第二代运行时显著改进了 App Engine 的功能,并消除了第一代运行时的一些限制。本页面介绍了第一代和第二代运行时之间的相似之处和不同之处。
第二代 | 第一代 | |
---|---|---|
支持的语言 |
Python 3 Java 11+ Node.js PHP 7/8 Ruby Go 1.12+ |
Python 2.7 Java 8 PHP 5.5 Go 1.11 |
语言扩展和系统库支持 | 任何扩展或库 | Python 2.7、PHP 5.5:使用许可名单的扩展程序和库 Java 8、Go 1.11:任何扩展程序或库 |
支持的 API |
如需访问功能全面的 Google Cloud 服务,请使用开源 Cloud 客户端库。 更新到 Python 3、Java 11+ 或 Go 1.12+ 运行时时,您可以继续使用许多 App Engine 捆绑服务。如需了解详情,请参阅 Python 3、Java 11+ 和 Go 1.12+ 指南了解详情。 |
Cloud 客户端库和 App Engine 捆绑服务 |
对于大型 blob 文件存储,请使用 Cloud Storage 或继续使用 App Engine Blobstore API 捆绑服务。 |
App Engine Blobstore API | |
如需实现数据持久性,请使用 Datastore 模式 Firestore 和 Cloud SQL 进行关系存储。或者,您可以继续使用 App Engine Datastore API 捆绑服务。 |
App Engine Datastore API | |
对于延迟任务的执行,请继续使用 Deferred API (Python)、DeferredTask API (Java) 和 Delay API (Go)。PHP 用户可以继续通过 Task Queues API 捆绑服务指定延迟执行。或者,您可以使用 Cloud Tasks 实现延迟功能。 |
App Engine Deferred API | |
对于图片处理,您可以使用 Cloud Storage 直接传送图片,也可以使用第三方内容分发网络 (CDN) 或图片处理库。
或者,您可以继续使用 App Engine Images API 捆绑服务。 |
App Engine Images API | |
对于入站或出站邮件传递,请继续使用 App Engine Mail API 捆绑服务。或者,对于出站邮件传递,您可以使用第三方邮件提供程序,例如 SendGrid、Mailgun 或 Mailjet。 目前没有推荐的第三方入站消息传递替代方案。 |
App Engine Mail API | |
对于缓存应用数据,您可以并使用无服务器 VPC 访问通道创建一个 Memorystore 实例,将其连接到您的应用。 或者,继续使用 App Engine Memcache API 捆绑服务。 | App Engine Memcache API | |
对于可搜索的文档索引,您可以托管任何全文搜索数据库,例如 Compute Engine 上的 Elasticsearch,并通过您的服务访问该数据库。Google Cloud Marketplace 还提供了基于 SaaS 的 Elasticsearch 服务。 或者,继续使用 App Engine Search API 捆绑服务。 | App Engine Search API | |
如需运行外部任务,请继续使用 App Engine Task Queues API 捆绑服务来处理推送和拉取队列,或者将推送队列迁移到 Cloud Tasks, 将拉取队列迁移到 Pub/Sub。 |
App Engine Task Queue API | |
对于用户身份验证,请继续使用 App Engine Users API 捆绑服务,或迁移到用户身份验证选项中所述的任何身份验证服务。 | App Engine Users API | |
外部网络访问 | 完全访问 | Python 2.7、PHP 5.5:通过网址提取 API Java 8、Go 1.11:完整访问权限。 |
文件系统访问 | 拥有对 /tmp 的读/写访问权限 |
Python 2.7、PHP 5.5:无 Java 8、Go 1.11:拥有对 /tmp 的读/写访问权限 |
语言运行时 | 未修改的开源运行时 | 针对 App Engine 进行了修改 |
隔离机制 | 基于 gVisor 的容器沙盒 | 基于 gVisor 的容器沙盒 |
App Engine 第一代运行时支持
App Engine 第一代运行时已终止支持。Google 将不再对已终止支持的运行时环境组件应用安全更新或补丁。
如需详细了解第一代运行时的支持方案,请参阅对旧版运行时的支持和运行时生命周期。
第一代和第二代运行时之间的相似之处
- 扩增时间近乎即时,从而可以应对流量高峰
- 应用使用相同的构建过程进行构建
- 正式版服务的服务等级协议 (SLA) 相同
gcloud
命令支持相同,并且 GCP Console 界面相同- 免费层级
从第一代到第二代运行时的迁移资源
长期支持页面上提供了每种语言运行时的迁移指南。