网站托管

Last reviewed 2023-02-28 UTC

本文介绍如何在 Google Cloud 上托管网站。Google Cloud 为网站服务提供了一个强大、灵活、可靠且可扩缩的平台。Google 构建 Google Cloud 时所采用的基础架构与其从 Google.com、YouTube 和 Gmail 等网站传送内容时所用的基础架构相同。您可以使用最适合自己需求的基础架构类型和设计来托管网站的内容。

如果您符合以下条件,那么本文可能会对您有所帮助:

  • 了解如何创建网站,并且以前部署并运行过某个网站托管基础架构。
  • 正在评估是否以及如何将您的网站迁移到 Google Cloud。

如果您想要构建一个简单的网站,请考虑使用 Google 协作平台,这是一个结构化的 Wiki 和网页创建工具。如需了解详情,请访问协作平台帮助

选择方案

如果您刚开始使用 Google Cloud,那么从您已经熟悉的技术种类入手会是个不错的选择。例如,如果您目前使用硬件服务器或虚拟机来托管您的网站(可能使用其他云服务商或您自己的硬件),那么 Compute Engine 可为您提供熟悉的模式。如果您已在使用平台即服务 (PaaS) 产品(例如 Heroku 或 Engine Yard),那么最好的选择可能是从 App Engine 入手。如果您更喜欢无服务器计算,则 Cloud Run 可能是一个不错的选择。

进一步熟悉 Google Cloud 之后,您就可以开始探索 Google Cloud 提供的丰富产品和服务。例如,如果您首先使用的是 Compute Engine,则可以使用 Google Kubernetes Engine (GKE) 来扩充网站的功能,或者可以将部分或全部功能迁移到 App Engine 和 Cloud Run。

下表汇总了 Google Cloud 上的托管方案:

选项 产品 数据存储服务 负载平衡服务 可伸缩性 日志记录和监控
静态网站

Cloud Storage

Firebase 托管

Cloud Storage 存储分区

HTTP(S) 可选

自动

Cloud Logging

Cloud Monitoring

虚拟机 Compute Engine

Cloud SQL、Cloud Storage、Firestore 和 Bigtable,也可以使用其他外部存储空间服务。

基于硬盘的永久性磁盘(称为标准永久性磁盘)和固态永久性磁盘 (SSD)。

HTTP(S)

TCP 代理

SSL 代理

IPv6 终止

网络

跨区域

内部

根据代管式实例组自动扩缩

Cloud Logging

Cloud Monitoring

Monitoring 控制台

容器 GKE 类似于 Compute Engine,但与永久性磁盘的交互方式有所不同

网络

HTTP(S)

集群自动扩缩器

Cloud Logging

Cloud Monitoring

Monitoring 控制台

托管式平台

App Engine

Google Cloud 服务,例如 Cloud SQL、Firestore、Cloud Storage 和可访问的第三方数据库

HTTP(S)

由 Google 管理

由 Google 管理

Cloud Logging

Cloud Monitoring

Monitoring 控制台

无服务器

Cloud Run

Google Cloud 服务,例如 Cloud SQL、Firestore、Cloud Storage 和可访问的第三方数据库

HTTP(S)

由 Google 管理

由 Google 管理

Cloud Logging

Cloud Monitoring

Monitoring 控制台

本文可以帮助您了解可用于 Google Cloud 上的网站托管的主要技术,而且还可粗略了解这些技术的工作原理。准备就绪后,请通过本文中提供的链接查看完整文档、教程和解决方案文章,这会有助于您加深了解。

了解费用

由于存在太多的不确定因素,并且每种实现都有所不同,因此本文未对费用进行具体说明。如需了解 Google 的 Google Cloud 定价原则,请参阅价格页面。如需了解各项服务的价格,请参阅相应的产品价格部分。您还可以使用价格计算器估算您的 Google Cloud 用量。提供待使用服务的相关详细信息后,即可查看估算价格。

设置域名服务

通常,您将需要为您的网站注册一个域名。可使用公共域名注册商(例如 Google Domains)来为您的网站注册一个唯一的名称。如果您想要全面控制自己的域名系统 (DNS),可使用 Cloud DNS 作为 DNS 提供商。如需相关帮助信息,请参阅 Cloud DNS 文档中的快速入门

如果您想要使用现有 DNS 提供商,则通常需要创建几条包含该提供商的记录。对于诸如 example.com 之类的域名,您需要创建一条包含您的 DNS 提供商的 A 记录。对于 www.example.com 子网域,您需要为 www 创建一条 CNAME 记录,以使其指向 example.com 网域。A 记录用于将主机名映射到 IP 地址。CNAME 记录用于为 A 记录创建别名。

如果您的域名注册商也是您的 DNS 提供商,那么您可能只需执行这些操作即可。如果您使用的注册提供商和 DNS 提供商不同,请确保您的域名注册商具有与您的网域关联的正确域名服务器。

进行 DNS 更改后,传播记录更新可能需要一些时间,具体取决于您所在地区中的存留时间 (TTL) 值。如果这是新主机名,那么更改应该会很快生效,因为 DNS 解析器不会缓存以前的值,而是联系 DNS 提供商来获取路由请求所需的信息。

托管静态网站

如需通过 HTTP(S) 传送网站内容,最简单的方式是托管静态网页。通常,静态网页会使用 HTML 原样传送。如果您网站的网页在发布后很少会发生变化,例如博文或小型企业网站的网页,那么使用静态网站是一个不错的选择。静态网页可满足您的许多需求,但如果您需要网站通过服务器端代码与用户稳健互动,则应考虑本文中介绍的其他方案。

使用 Cloud Storage 托管静态网站

如需在 Cloud Storage 中托管静态网站,您需要创建一个 Cloud Storage 存储分区、上传内容,并对新网站进行测试。您可以直接从 storage.googleapis.com 传送数据,也可以验证域名所有权并使用自己的域名。

无论您如何选择,都可以创建静态网页。例如,您可以使用 HTML 和 CSS 手动创建页面,然后使用静态网站生成器(如 JekyllGhostHugo)来创建内容。借助静态网站生成器,您可以采用 markdown 编写内容并提供模板和工具来创建静态网站。网站生成器通常会提供一个可用于预览内容的本地 Web 服务器。

静态网站运行后,您可以使用自己偏好的任何流程来更新静态网页。该流程可以简单到只是将更新的网页手动复制到存储分区。您可以选择使用一种自动化程度更高的方法,例如,将内容存储在 GitHub 上,然后使用 webhook 运行用于更新存储分区的脚本。更高级的系统可能使用持续集成/持续交付 (CI/CD) 工具(如 Jenkins)来更新存储分区中的内容。Jenkins 拥有一个 Cloud Storage 插件,该插件可提供用于将构建工件发布到 Cloud Storage 的 Google Cloud Storage Uploader 构建后步骤。

如果您的 Web 应用需要传送静态内容或用户上传的静态媒体,那么使用 Cloud Storage 不但可以经济高效地托管并传送这些内容,还可以减少对 Web 应用的动态请求量。

此外,Cloud Storage 可以直接接受用户提交的内容。 通过这项功能,用户可直接且安全地上传大型媒体文件,而无需通过您的服务器进行代理。

如需了解如何获得静态网站的最佳性能,请参阅 Cloud Storage 最佳做法

如需了解详情,请参阅以下页面:

使用 Firebase Hosting 托管静态网站

Firebase Hosting 为您的 Web 应用提供快速、安全的静态托管服务。借助 Firebase Hosting,您可以使用单一命令将 Web 应用和静态内容部署到全球内容分发网络 (CDN)。

使用 Firebase Hosting 有诸多好处,具体如下:

  • Firebase 托管中内置了零配置的 SSL。可免费在自定义网域上预配 SSL 证书。
  • 您的所有内容都会通过 HTTPS 传送。
  • 您的内容可以从世界各地的 CDN 边缘分发给您的用户。
  • 利用 Firebase CLI,您可以在短短几秒钟内启动并运行您的应用。您可以借助命令行工具将部署目标添加到构建流程中。
  • 可获享发布管理功能,例如新资源原子化部署、全面版本控制和一键式回滚。
  • Firebase 托管会提供一项适用于单页应用和其他类似应用的网站的配置
  • Firebase 托管可与其他 Firebase 功能无缝搭配使用。

如需了解详情,请参阅以下页面:

将虚拟机与 Compute Engine 搭配使用

对于基础架构即服务 (IaaS) 用例,Google Cloud 提供了 Compute Engine。Compute Engine 可提供强大的计算基础架构,但您必须选择并配置要使用的平台组件。使用 Compute Engine 时,您需要负责系统的配置、管理和监控工作。Google 将负责确保资源的可用性和可靠性,让您可以随时使用,但您需要自行预配和管理这些资源。这种分工的好处在于,您可以完全控制系统并获得无限的灵活性。

借助 Compute Engine,您可以根据自己的需求设计和部署几乎所有网站托管系统。您可以使用虚拟机(称为实例)来构建应用,具体方法与使用自己的硬件基础架构大致相同。 Compute Engine 可提供各种机器类型,让您能够根据自己的需求和预算自定义配置。您可以选择自己偏好的操作系统、开发堆栈、语言、框架、服务和其他软件技术。

使用 Google Cloud Marketplace 自动设置

部署完整的网站托管栈的最简单方法是使用 Google Cloud Marketplace。通过“Google 一键部署”或 Bitnami,只需点击几下即可部署 100 多个已完整实现的解决方案中的任何一个。

Cloud Marketplace

例如,您可以使用 Cloud Marketplace 设置 LAMP 堆栈WordPress。只需几分钟,系统便可在单个实例上部署一个完整、有效的软件堆栈。 在部署前,Cloud Marketplace 会向您显示运行网站的费用估算情况,让您清楚地了解它会为您安装哪些软件组件版本;您可以自定义配置,例如,更改组件实例名称、选择机器类型和选择磁盘大小。部署完成后,您可以完全控制 Compute Engine 实例、实例配置和软件。

手动设置

您还可以在 Compute Engine 上手动创建基础架构:从头开始构建配置或基于 Google Cloud Marketplace 部署进行构建。例如,您可能希望使用不是由 Cloud Marketplace 提供的软件组件版本,或者您可能想自行完成所有安装和配置。

本文不提供设置网站方面的完整框架和最佳做法。但从较高层面来看,如需在 Compute Engine 上设置网站托管基础架构,您必须满足以下技术方面的要求:

  • 了解要求。如果您要构建新的网站,请务必了解所需的各个组成部分,例如实例、存储需求和网络基础架构。如果您是从现有解决方案迁移您的应用,那么您可能已经了解这些需求,但您需要仔细考虑现有设置如何与 Google Cloud 服务对应。
  • 规划设计。仔细考虑您的架构并记录您的设计。需要尽可能的明确。
  • 创建组件。对于通常所说的物理资源组件(如计算机和网络交换机),应通过 Compute Engine 中的服务提供。例如,如果您需要一台计算机,则必须创建一个 Compute Engine 实例。如果您需要一个永久性普通硬盘,也必须创建一个这样的实例。 基础架构即代码工具(例如 Terraform)让这一过程变得简单且可重复。
  • 配置和自定义。具备所需的组件后,您需要对其进行配置、安装和配置软件,以及编写和部署所需的任何自定义代码。您可以通过运行 shell 脚本来复制配置,这有助于加快未来部署的速度。 Terraform 可以提供灵活的声明性配置模板来自动部署资源,因此它也可助力您实现此目的。您还可以利用 PuppetChef 等 IT 自动化工具。
  • 部署资源。一般说来,您会拥有网页和图片。
  • 测试。验证一切是否按预期运行。
  • 部署到生产环境。开放您的网站以供全世界用户查看和使用。

为了帮助您开始使用 Compute Engine 并了解如何手动设置 Compute Engine 实例,请尝试学习以下一个或多个教程:

使用 Compute Engine 存储数据

大多数网站都需要某种类型的存储服务。需要存储服务的原因多种多样,例如保存用户上传的文件,当然,还要保存您的网站使用的资源。

Google Cloud 提供了各种托管存储服务,包括:

  • Cloud SQL 中的 SQL 数据库,这是一种适用于 MySQL、PostgreSQL 和 SQL Server 的全代管式关系型数据库服务。
  • 两种 NoSQL 数据存储方案:FirestoreBigtable
  • Memorystore,适用于 Redis 和 Memcached RedisMemcached 的全代管式内存数据存储服务。
  • Cloud Storage 中的一致、可扩缩、大容量对象存储服务。 Cloud Storage 有多种类别:
    • Standard 类别提供最高可用性。
    • Nearline 类别是一种费用低廉的存储方案,非常适合每月访问次数不足一次的数据。
    • Coldline 类别是一种低成本存储方案,非常适合每季度访问次数不足一次的数据。
    • Archive 类别是费用最低的存储方案,适合进行归档、备份和灾难恢复。
  • Compute Engine 上的永久性磁盘,适合用作实例的主存储服务。Compute Engine 可提供基于硬盘的永久性磁盘(称为标准永久性磁盘)和固态永久性磁盘 (SSD)。您还可以选择在 Compute Engine 上使用永久性磁盘设置偏好的存储技术。例如,您可以将 PostgreSQL 设置为 SQL 数据库,或将 MongoDB 设置为 NoSQL 存储服务。如需了解 Google Cloud 上的各种存储服务及其优势,请参阅选择存储方案

使用 Compute Engine 实现负载平衡

大规模运营的网站通常都需要使用负载平衡技术将工作负载分发到各个服务器。您可以通过多种方式在 Compute Engine 上设计负载平衡 Web 服务器的架构,具体如下:

负载平衡部署非常灵活,您可以将 Compute Engine 与现有解决方案结合使用。例如,一种可能的解决方案是可以利用使用 Nginx 的 HTTP(S) 负载平衡来替代 Compute Engine 负载平衡器。

使用 Compute Engine 分发内容

对于任何网站来说,响应时间都是一个基本指标,因此通常需要使用 CDN 来降低延迟并提高性能,尤其是对于具有全球 Web 流量的网站。

Cloud CDN 使用 Google 的全球分布式边缘接入点,从离用户最近的缓存位置传送内容。Cloud CDN 可与 HTTP(S) 负载平衡搭配使用。如需从单个 IP 地址通过 Google Compute Engine 和/或 Google Cloud Storage 将内容发出,请为 HTTP(S) 负载平衡器启用 Cloud CDN

使用 Compute Engine 实现自动扩缩

您可以将架构设置为根据需求的变化添加和移除服务器。这种方法既能有助于确保您的网站在高峰负载下保持良好的性能,又能保证非高峰期的费用受到控制。Compute Engine 提供了一个可实现此目的的自动扩缩器。

自动扩缩是代管式实例组的一项功能。 代管式实例组是根据一个公用实例模板创建的同构虚拟机实例池。自动扩缩器会在代管式实例组中添加或移除实例。虽然 Compute Engine 同时提供了代管式实例组和非代管式实例组,但只有代管式实例组可以使用自动扩缩器进行扩缩。如需了解详情,请参阅在 Compute Engine 上实现自动扩缩

如需深入了解如何构建可扩缩的弹性 Web 应用解决方案,请参阅构建可扩缩的弹性 Web 应用

使用 Compute Engine 实现日志记录和监控

使用 Google Cloud 包含的功能,您可以密切监控自己网站的运行情况。

Cloud Logging 从 Google Cloud 上的应用和服务中收集并存储日志。您可以使用 Logging 代理来查看或导出日志,以及集成第三方日志。

日志记录

Cloud Monitoring 可为您的网站提供信息中心和提醒。您可以使用 Google Cloud 控制台配置 Monitoring。您可以查看云端服务、虚拟机和常见开源服务器(如 MongoDB、Apache、Nginx 和 Elasticsearch)的性能指标。此外,您还可以使用 Cloud Monitoring API 来检索监控数据并创建自定义指标。

Cloud Monitoring 还提供正常运行时间检查,它会向您的网站发送请求,查看其是否响应。通过部署提醒政策,以便在正常运行时间检查失败时创建突发事件,可以监控网站的可用性。

使用 Compute Engine 管理 DevOps

如需了解如何使用 Compute Engine 管理 DevOps,请参阅以下文章:

将容器与 GKE 搭配使用

您可能已在使用 Docker 等容器。容器在网站托管方面具有多项优势,具体如下:

  • 组件化。您可以使用容器来分隔 Web 应用的各种组件。例如,假设您的网站运行一个 Web 服务器和一个数据库。您可以在不同的容器中运行这些组件,如此一来,修改和更新一个组件就不会影响另一个组件。随着您的应用设计变得更加复杂,容器便成为面向服务的架构(包括微服务)的理想方案。这种设计支持可扩缩性以及其他目标。
  • 可移植性。容器包含其运行所需的一切内容,也就是说,您的应用及其依赖项会捆绑在一起。您可以在各种平台上运行容器,而无需担心底层系统详情。
  • 快速部署。在需要部署时,由于您的系统是根据一组定义和映像构建的,因此这些部分可以快速、可靠、自动进行部署。容器通常规模较小;与虚拟机等内容相比,容器部署速度会更快。

Google Cloud 上的容器计算服务在网站托管方面具有更多优势,具体如下:

  • 编排GKE 是一项以 Kubernetes 为基础构建而成的代管式服务,而 Kubernetes 是 Google 推出的开源容器编排系统。借助 GKE,您的代码可以在容器中运行,这些容器属于由 Compute Engine 实例组成的集群。您可以通过 GKE(采用您定义的配置)自动管理集群,而无需管理单个容器或手动创建和关停各个容器。
  • 映像注册Container RegistryArtifact Registry 可为 Google Cloud 上的 Docker 映像提供专用存储空间。您可以通过 HTTPS 端点访问注册表,因此可从任何机器中拉取映像,无论该机器是 Compute Engine 实例还是您自己的硬件。该注册表服务在您的 Google Cloud 项目的 Cloud Storage 中托管您的自定义映像。默认情况下,这种方法可确保您的自定义映像仅可供有权访问您的项目的主账号访问。
  • 移动性。这意味着您可以灵活地移动工作负载并将工作负载与其他云服务商组合使用,或者将云计算工作负载与本地实现混合搭配使用,从而创建混合解决方案。

使用 GKE 存储数据

由于 GKE 在 Google Cloud 上运行并使用 Compute Engine 实例作为节点,因此可供您选用的存储方案与 Compute Engine 上的存储服务有很多共同之处。您可以通过 Cloud SQL、Cloud Storage、Firestore 和 Bigtable 的 API 访问这些服务,也可以使用自己选择的其他外部存储空间服务。但是,GKE 将以与正常 Compute Engine 实例不同的方式与 Compute Engine 永久性磁盘交互。

Compute Engine 实例会挂接一个磁盘。使用 Compute Engine 时,只要存在实例,磁盘卷就会保留在实例中。您甚至可以分离该磁盘并将其用于其他实例。但在容器中,磁盘文件属于临时文件。当容器重启时(例如在发生崩溃之后),磁盘文件将会丢失。Kubernetes 可以借助存储类别抽象来解决这个问题。一种存储类别是 GCE PD。这意味着,在使用 GKE 时,您可以将 Compute Engine 永久性磁盘与容器搭配使用,以防止您的数据文件被删除。

如需了解卷的特性和优势,建议您先了解一下 pod。 您可以将 pod 看成是用于运行一个或多个容器的应用专属逻辑主机。pod 在节点实例上运行。如果容器是 pod 的成员,那么它们可以共享多项资源,包括一组共享存储卷。这些卷可确保数据在容器重启后继续留存,并在 pod 内的各容器之间共享。当然,您也可以在 pod 中使用单个容器和卷,但 pod 是为这些资源建立逻辑连接所必不可少的抽象。

如需查看示例,请参阅将永久性磁盘与 WordPress 和 MySQL 搭配使用教程。

使用 GKE 实现负载平衡

许多大型网站托管架构都需要运行多个服务器,以便共担流量需求。由于您可以使用 GKE 创建和管理多个容器、节点和 Pod,因此它本身就适合用于负载均衡网站托管系统。

使用网络负载平衡

若要在 GKE 中创建负载平衡器,最简单的方法是使用 Compute Engine 的网络负载平衡功能。 网络负载平衡功能可以根据传入的互联网协议数据(例如地址、端口和协议类型)平衡系统负载。网络负载平衡采用转发规则。这些规则指向目标池,其中列有哪些实例可用于负载平衡。

借助网络负载平衡功能,您可以对其他基于 TCP/UDP 的协议(如 SMTP 流量)进行负载平衡,并且您的应用可以直接检查数据包。

如需部署网络负载平衡,只需将 type: LoadBalancer 字段添加到服务配置文件即可。

使用 HTTP(S) 负载平衡

如果您需要更高级的负载平衡功能(例如 HTTPS 负载平衡、基于内容的负载平衡或跨区域负载平衡),则可以将 GKE 服务与 Compute Engine 的 HTTP/HTTPS 负载平衡功能相集成。Kubernetes 可提供 Ingress 资源,该资源封装了一组用于将外部流量路由到 Kubernetes 端点的规则。在 GKE 中,Ingress 资源可处理 Compute Engine HTTP/HTTPS 负载平衡器的预配和配置任务。

如需详细了解如何在 GKE 中使用 HTTP/HTTPS 负载平衡,请参阅使用 Ingress 设置 HTTP 负载平衡

使用 GKE 进行扩缩

您可以利用集群自动扩缩器来实现集群大小的自动调整。此功能会定期检查是否有任何 pod 未被安排并且正在等待具有可用资源的节点。如果存在此类 pod,并且调整节点池的大小可以使处于等待状态的 pod 得到安排,那么自动扩缩器会执行此项调整操作。

集群自动扩缩器还可监控所有节点的使用情况。如果长时间不需要某节点,并且它的所有 pod 都可以安排到其他位置,则该节点会被删除。

如需详细了解集群自动扩缩器及其限制和最佳做法,请参阅集群自动扩缩器文档

使用 GKE 进行日志记录和监控

与在 Compute Engine 上一样,LoggingMonitoring 可提供日志记录和监控服务。 Logging 会从应用和服务中收集日志并进行存储。您可以使用 Logging 代理来查看或导出日志,以及集成第三方日志。

Monitoring 可为您的网站提供信息中心和提醒。您可以使用 Google Cloud 控制台配置 Monitoring。您可以查看云端服务、虚拟机和常见开源服务器(如 MongoDB、Apache、Nginx 和 Elasticsearch)的性能指标。此外,您还可以使用 Monitoring API 来检索监控数据并创建自定义指标。

使用 GKE 管理 DevOps

使用 GKE 时,您已经可以享受大多数人在谈到 DevOps 时所能想到的众多好处。在封装、部署和管理的便利性方面尤为如此。您的 CI/CD 工作流需求可以利用专为云构建的工具,例如:Cloud BuildCloud Deploy 或 Jenkins 等常用工具。有关详细信息,请参阅以下文章:

在采用 App Engine 的托管式平台上构建网站

Google Cloud 可提供一项托管式的平台即服务 (PaaS),称为 App Engine。在 App Engine 上构建网站时,您可以专注于编写功能代码,让 Google 来管理支持基础架构。App Engine 提供了各种各样的功能,让您可以更加轻松地实现扩缩能力、负载平衡、日志记录、监控和安全(与您自行构建和管理这些方面相比)。利用 App Engine,您可以使用各种编程语言进行编码,并且可以使用其他各种 Google Cloud 服务。

App Engine 提供了标准环境,可让您在安全的沙盒化环境中运行应用。App Engine 标准环境会将请求分发到多个服务器上,并会根据流量需求来扩缩服务器。您的应用将在其专属的安全、可靠环境中运行,该环境独立于服务器的硬件、操作系统或物理位置。

Web 应用使用 App Engine 及其他组件

App Engine 还提供了柔性环境,让您拥有更多选择。 使用柔性环境时,您的应用将在可配置的 Compute Engine 实例上运行,但 App Engine 会为您管理托管环境。这意味着,您可以使用其他运行时(包括自定义运行时)来实现更多的编程语言选择。您还可以利用 Compute Engine 所具备的一些灵活性,例如,可选择各种 CPU 和内存选项。

编程语言

App Engine 标准环境提供了默认运行时,您可以使用受支持编程语言的特定版本来编写源代码。

在柔性环境中,您可以使用受支持编程语言的任何版本来编写源代码。您可以自定义这些运行时,也可以为自己的运行时提供自定义 Docker 映像或 Dockerfile。

如果使用的编程语言是首要关注点,那么您需要确定 App Engine 标准环境提供的运行时是否满足您的要求。如果不满足要求,则应考虑使用柔性环境。

如需确定哪种环境最符合您的应用需求,请参阅选择 App Engine 环境

入门教程(按语言)

如需开始使用 App Engine 标准环境,请参阅以下教程:

如需开始使用柔性环境,请参阅以下教程:

使用 App Engine 存储数据

App Engine 为您提供了多种数据存储方案:

名称 结构 一致性
Firestore 无架构 具备强一致性。
Cloud SQL 关系型 具备强一致性。
Cloud Storage 文件及其关联的元数据 具备强一致性(为获取存储分区或对象列表而执行 list 操作时除外)。

在标准环境中,您还可以使用多个第三方数据库

如需详细了解 App Engine 中的存储服务,请参阅选择存储方案,然后选择您偏好的编程语言。

使用柔性环境时,您不但仍然可以使用标准环境下提供的所有存储方案,而且还可利用更广泛的第三方数据库。如需详细了解柔性环境中的第三方数据库,请参阅使用第三方数据库

使用 App Engine 实现负载平衡和自动扩缩

默认情况下,App Engine 会自动将传入请求路由到相应的后端实例,并为您执行负载平衡。但是,如果要使用 Google Cloud 功能全面的企业级 HTTP(S) 负载平衡功能,则可以使用无服务器网络端点组

对于扩缩,App Engine 可以在流量波动时自动创建和关停实例,您也可以指定运行的实例数,而不考虑流量。

使用 App Engine 进行日志记录和监控

在 App Engine 中,请求会自动记录,您可以在 Google Cloud 控制台中查看这些日志。App Engine 还可与具备日志记录功能的特定语言版本的标准库搭配使用,并将日志条目转发到 Google Cloud 控制台中的日志。例如,在 Python 中,您可以使用标准 Python 日志记录模块;在 Java 中,您可以将 Logback 附加器或 java.util.logging 与 Cloud Logging 集成。此方法支持 Cloud Logging 的全部功能,并且只需几行 Google Cloud 专用代码即可。

Cloud Monitoring 具备监控 App Engine 应用的功能。通过 Google Cloud 控制台,您可以监控突发事件、拨测和其他详细信息。

使用 Cloud Run 在无服务器平台上构建

Google Cloud 的无服务器平台让您可以按照自己的方式编写代码,而无需操心底层基础架构。您可以使用 Google Cloud 的存储、数据库、机器学习等构建全栈无服务器应用。

对于容器化网站,除了使用 GKE 之外,您还可以将它们部署到 Cloud Run。Cloud Run 是一个全代管式无服务器平台,可让您在 Google Cloud 上运行可扩缩性极强的容器化应用。您只需为代码运行的时间付费。

通过将容器与 Cloud Run 搭配使用,您可以利用成熟的技术(例如 Nginx、Express.js 和 Django)来构建网站、在 Cloud SQL 上访问 SQL 数据库以及渲染动态 HTML 页面。

如需相关帮助信息,请参阅 Cloud Run 文档中的快速入门

使用 Cloud Run 存储数据

Cloud Run 容器是临时性的,您需要了解它们的配额和限制。文件可以临时存储在容器实例中进行处理,但这种存储空间超出了该服务的可用内存,如运行时合同中所述。

对于与 App Engine 类似的永久性存储空间,您可以选择 Google Cloud 的服务,例如 Cloud Storage、Firestore 或 Cloud SQL。此外,您也可以使用第三方存储解决方案。

使用 Cloud Run 实现负载平衡和自动扩缩

默认情况下,当您在 Cloud Run 上构建应用时,它会自动将传入请求路由到相应的后端容器并为您执行负载平衡。但是,如果要使用 Google Cloud 功能全面的企业级 HTTP(S) 负载平衡功能,则可以使用无服务器网络端点组

借助 HTTP(S) 负载平衡,您可以启用 Cloud CDN处理来自多个区域的流量。此外,您还可以使用中间件(例如 API 网关)来增强您的服务。

对于 Cloud Run,Google Cloud 会为您管理容器实例自动扩缩。每个修订版本都会根据处理所有传入请求所需的容器实例数量而自动扩缩。当修订版本未收到任何流量时,它默认会缩容到零个容器实例。但是,如果需要,您可以使用实例数下限设置来更改此默认值,以将实例指定为保持空闲或备用状态。

使用 Cloud Run 进行日志记录和监控

Cloud Run 提供两种类型的日志,这些日志会自动发送至 Cloud Logging

  • 请求日志:用于记录发送到 Cloud Run 服务的请求。这些日志是系统自动创建的。
  • 容器日志:这些日志由容器实例发出(通常来自您自己的代码),并将写入受支持的位置(请参阅写入容器日志)。

您可以通过以下几种方式查看服务的日志:

  • 使用 Google Cloud 控制台中的 Cloud Run 页面。
  • 使用 Google Cloud 控制台中的 Cloud Logging 日志浏览器。

这两种查看方法都会检查 Cloud Logging 中存储的相同日志,但日志浏览器提供了更多详细信息和更多过滤功能。

Cloud Monitoring 提供 Cloud Run 性能监控、指标正常运行时间检查,还提供提醒功能,以便在超过特定指标阈值时发送通知。Google Cloud Observability 价格适用,这意味着 Cloud Run 全托管式版本上的指标不收取任何费用。请注意,您还可以使用 Cloud Monitoring 自定义指标

Cloud Run 会与 Cloud Monitoring 集成,无需任何设置或配置。这意味着系统会在 Cloud Run 服务运行时自动捕获其指标。

构建内容管理系统

托管网站意味着管理您的网站资产。Cloud Storage 可为这些资源提供一个全局代码库。一种常见的架构是先将静态内容部署到 Cloud Storage,然后再同步到 Compute Engine 以呈现动态页面。Cloud Storage 可与许多第三方内容管理系统搭配使用,例如 WordPressDrupalJoomla。此外,Cloud Storage 还提供与 Amazon S3 兼容的 API,因此任何适用于 Amazon S3 的系统都适用于 Cloud Storage。

下图是内容管理系统的示例架构。Google Cloud 上的内容管理系统

后续步骤