您可以使用柔性环境或标准环境在 App Engine 中运行应用。此外,您还可以同时用这两种环境运行您的应用,让您的服务同时利用这两种环境各自的优势。
App Engine 环境
App Engine 非常适合利用微服务架构设计的应用,您决定使用这两种环境时尤其如此。阅读以下部分,学习并了解哪种环境最符合您的应用需求。
何时选择标准环境
应用实例利用下列支持语言的运行时环境,在沙盒中运行。
需要处理快速扩缩的应用。
标准环境适合具有以下特征的应用:
-
源代码用支持的编程语言的特定版本编写:
- Python 2.7、Python 3.7、Python 3.8、Python 3.9(预览版)
- Java 8、Java 11
- Node.js 8、Node.js 10、Node.js 12 和 Node.js 14(预览版)
- PHP 5.5、PHP 7.2、PHP 7.3 和 PHP 7.4
- Ruby 2.5、Ruby 2.6 和 Ruby 2.7
- Go 1.11、Go 1.12、Go 1.13、Go 1.14、Go 1.15(预览版)
- 运行成本为零或非常低,您只需在需要时为实际所需付费。例如,当没有流量时,应用的实例可以缩减为 0。
- 突遇流量高峰,需要立即调节。
何时选择柔性环境
应用实例在 Compute Engine 虚拟机上的 Docker 容器中运行。
接收的流量一致但流量会定期波动的应用,或者能满足参数逐渐扩充和缩减的应用。
柔性环境适合具有以下特征的应用:
- 源代码用以下任一支持的编程语言版本编写:
Python、Java、Node.js、Go、Ruby、PHP 或 .NET - 在 Docker 容器中运行,其中 Docker 容器包含用其他编程语言编写的自定义运行时或源代码。
- 使用或依赖包含原生代码的框架。
- 访问位于 Compute Engine 网络的 Google Cloud 项目的资源或服务。
比较高级功能
下表总结了两种环境之间的差异:
功能 | 标准环境 | 柔性环境 |
---|---|---|
实例启动时间 | 数秒 | 数分钟 |
请求超时上限 | 取决于运行时环境和扩缩类型。 | 60 分钟 |
后台线程 | 是,但有限制 | 是 |
后台处理 | 否 | 是 |
SSH 调试 | 否 | 是 |
扩缩 | 手动、基本、自动 | 手动、自动 |
缩减至零 | 是 | 否,最少 1 个实例 |
写入本地磁盘 |
|
是,临时写入(每个虚拟机启动时的初始化磁盘) |
修改运行时 | 否 | 是(通过 Dockerfile) |
部署时间 | 数秒 | 数分钟 |
自动就地安装安全补丁 | 是 | 是(不包括容器映像运行时) |
访问 Google Cloud API 和服务,如 Cloud Storage、Cloud SQL、Memorystore、Tasks 等。 | 是 | 是 |
WebSocket | 没有 Java 8、Python 2 和 PHP 5 提供专有 Sockets API(测试版),但该 API 在较新的标准运行时环境中不可用。 |
是 |
支持安装第三方二进制文件 |
|
是 |
位置 | 北美洲、亚太地区或欧洲 | 北美洲、亚太地区或欧洲 |
价格 | 基于实例小时数计费 | 基于 vCPU、内存和永久性磁盘的使用情况计费 |
要深入比较柔性环境与标准环境,请参阅以下语言指南:Python、Java、Go 或 PHP。
比较柔性环境与 Compute Engine
App Engine 柔性环境与 Compute Engine 的不同之处如下:
柔性环境虚拟机实例每周重启一次。在重启期间,Google 的管理服务应用任何必要的操作系统和安全更新。
您始终可以访问 Compute Engine 虚拟机实例的根目录。默认情况下,SSH 对柔性环境中虚拟机实例的访问将停用。您可以视情况启用对应用虚拟机实例的根目录访问权限。
代码部署所需时间可能更长,因为容器映像通过使用 Cloud Build 服务构建。
柔性环境虚拟机实例的地理区域由您为 Cloud 项目的 App Engine 应用指定的位置确定。Google 的管理服务确保所有虚拟机实例位于同一位置,以实现最佳性能。
从标准环境迁移到柔性环境
如果您有在标准环境中运行的应用,您可能想将部分服务迁移至柔性环境。如需指导,请参阅有关 Python、Java、Go 和 PHP 的建议。
要迁移特定服务,请参阅有关 Python、Java、Go 和 PHP 的说明。