App Engine 标准环境具有两代运行时环境。第二代运行时显著改进了 App Engine 的功能,并消除了第一代运行时的一些限制。本页面介绍了第一代和第二代运行时之间的相似之处和不同之处。
第二代 | 第一代 | |
---|---|---|
支持的语言 |
Python 3 Java 11/17(预览版) Node.js PHP 7+ 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/17 或 Go 1.12+ 运行时时,您可以继续使用许多 App Engine 捆绑服务。如需了解详情,请参阅 Python 3、Java 11 和 Go 1.12+ 指南了解详情。 |
Cloud 客户端库和专有 App Engine API |
为了实现数据永久性,请使用 Datastore(Python 开发者还可以使用 Cloud NDB)、Firestore(需要新项目)或 Cloud SQL。 |
App Engine Datastore API | |
对于处理图片,建议使用 Imgix。
如果您喜欢享受免费层级服务,请使用 Rethumb。 |
App Engine Images API | |
对于发送电子邮件,您可以使用第三方邮件提供程序,例如 SendGrid、Mailgun 或 Mailjet。 | App Engine Mail API | |
对于缓存应用数据,您可以并使用无服务器 VPC 访问通道创建一个 Memorystore 实例,将其连接到您的应用。 | App Engine Memcache API | |
对于可搜索的文档索引,您可以托管任何全文搜索数据库,例如 Compute Engine 上的 ElasticSearch,并通过您的服务访问该数据库。 | App Engine Search API | |
对于推送队列,您可以使用 Cloud Tasks。 对于拉取队列,您可以使用 Pub/Sub。 |
App Engine Task Queue API | |
对于用户身份验证,您可以使用任何基于 HTTP 的身份验证系统,例如 OAuth 2.0 或 Firebase 身份验证。 | 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 第一代运行时。第二代运行时代表 App Engine 的未来发展方向;但是,使用第一代运行时的开发者和客户将可继续获得支持和所学的系统更新。
如需详细了解第一代运行时的支持方案,请参阅对旧版运行时的长期支持。
第一代和第二代运行时之间的相似之处
- 扩增时间近乎即时,从而可以应对流量高峰
- 应用使用相同的构建过程进行构建
- 正式版服务的服务等级协议 (SLA) 相同
gcloud
命令支持相同,并且 GCP Console 界面相同- 免费层级
从第一代到第二代运行时的迁移资源
长期支持页面上提供了每种语言运行时的迁移指南。