如需在 App Engine 上存储数据和文件,您可以使用 Google Cloud 服务,或使用受您的语言支持并可从 App Engine 实例访问的任何其他存储服务。这些第三方数据库可以托管在 Compute Engine、其他云服务商或本地,也可以由第三方供应商管理。
Google Cloud 存储服务
对于在柔性环境中运行的 App Engine 应用,我们推荐使用以下任一 Google Cloud 存储服务:
- Datastore 模式的 Firestore:用于将数据存储在 NoSQL 数据库中。请注意,Datastore 模式 Firestore 适用于所有运行时(.NET 运行时除外)。
- Cloud SQL for MySQL:用于将数据存储在 MySQL 数据库中。
- Cloud SQL for PostgreSQL:用于将数据存储在 PostgreSQL 数据库中。
- Cloud Storage:用于在运行时环境中读取和写入文件,以及存储和传送静态文件(例如影片、图片或其他静态内容)。
如需查看 Google Cloud 存储产品的完整列表,请参阅 Cloud Storage 产品页面。
在 Compute Engine 上托管
App Engine 实例和 Compute Engine 实例属于同一专用内部网络。 您的 App Engine 应用可以与同一项目中的 Compute Engine 上托管的服务通信,而无需借助公共互联网。在许多情况下,您的应用使用实例的内部 IP 地址连接到服务,而无需为数据库分配外部公共 IP 地址。如有需要,您可以分配公共 IP 地址以允许从 Google Cloud 外部访问数据库。
您可以使用 Google Cloud Marketplace 将 Redis、MongoDB、PostgreSQL、Cassandra、Hadoop 和 Microsoft SQL Server 等多种常见的第三方数据库快速部署到 Compute Engine。如需详细了解如何部署 MySQL 或 PostgreSQL,请参阅以下指南。
其他云服务商
App Engine 应用可以连接到其他公有云上托管的外部数据库,前提是这些数据库服务器和您的防火墙已正确配置,可以接受连接。您的 App Engine 应用使用该外部服务的公共 IP 地址通过互联网进行连接。
由第三方供应商管理的数据库
很多供应商都提供代管式数据库服务,例如 mLab 提供 MongoDB 服务,而 Redis Labs 提供托管式 Redis 缓存服务。这些供应商会处理数据库的托管、配置和维护。App Engine 可以通过互联网连接到这些外部服务,具体方式与其他公有云使用这些服务的公共 IP 地址进行连接时相同。
本地
如果您希望 App Engine 应用可以访问您的现有本地数据库,可以配置内部网络和防火墙,为数据库提供一个公共 IP 地址,也可以使用 VPN 进行连接。
设置 Cloud VPN 后,您的 App Engine 应用可访问本地网络,而无需将数据库服务器直接暴露在公共互联网上。由于 App Engine 和 Compute Engine 使用相同的网络基础架构,因此您可以使用数据库服务器的内部 IP 地址在 App Engine 应用和本地数据库之间建立 VPN 连接。
生产注意事项
App Engine 可配置为根据各种指标自动横向扩缩应用。与 Web 应用不同,数据库通常需要进行大幅度的调整来响应扩缩要求。在生产应用中,App Engine 可能会在流量高峰期使数据库急速过载。在配置和部署数据库时,您应该考虑预期的平均流量负载及高峰期负载。