Google Cloud 系统设计注意事项

本部分架构框架介绍了特定的 Google Cloud 功能和服务,您可以通过不同的方式组合这些功能和服务,以针对您的业务需求优化部署。

框架由以下系列文章组成:

地理区域和地区

地区是独立的地理位置,由多个区域组成。区域是地区中用于部署 Google Cloud 资源的位置。区域应被视为地区中的一个故障网域。如需部署具备高可用性的容错应用,请跨单个地区中的多个区域部署应用,或者在不同地区中的多个区域部署应用,以防范预期停机时间和意外停机时间。

Google Cloud 服务和资源可以是区域性的、地区性的、由 Google 跨多个地区进行管理的或全球性的:

区域资源

区域资源在单个区域内运作。如果某个区域变为不可用,则除非服务恢复,否则该区域中的所有资源都不可用。虚拟机和本地永久性磁盘就是区域资源的例子。

地区资源

地区资源是跨某个地区中的所有区域以冗余方式部署的。因此,与区域资源相比,地区资源具有较高的可用性。App Engine 和地区 Cloud Storage 存储分区就是地区资源的例子。

多地区资源

Google 服务是分布在相同地区内和不同地区之间的冗余服务。这些服务有助于优化可用性、性能和资源效率。因此,它们需要在延迟时间和一致性之间进行权衡。如需了解具体权衡,请参阅与特定产品相关的文档。

全球资源

Google 服务是分布在相同地区内和不同地区之间的冗余服务。这些服务与某一个或某一组给定地区无关。负载平衡器、Pub/Sub 和 Speech-to-Text 就是全球资源的例子。

设计问题

  • 您的应用的用户位于哪些地理地区?
  • 哪些 Google Cloud 地区距离您的用户最近?
  • 您是否有任何基于地理位置的监管要求?
  • 您是否需要进行全球部署,或者,地区部署能否满足您的要求?

建议

  • 选择与最终用户地理位置最接近的一个或一组地区,以便在向外部用户传送流量时最大限度地缩短延迟时间。
  • 选择一个或一组特定的地区以满足任何地理位置要求。
  • 使用负载平衡器提供一个 IP 地址,该地址将在您为全球用户群提供服务时路由到您的应用。
  • 通过 Cloud Interconnect 将您的本地或对接网络连接到 Google Cloud,以实现高速专用网络连接。

资源

资源管理

Google Cloud 提供“组织”、“文件夹”和“项目”等资源容器,可用于对 Google Cloud 资源进行分组和分层整理。这种分层整理方式让您可以管理资源的常见方面,例如访问权限控制、配置设置和政策。Resource Manager 提供了对资源容器的程序化访问方式。

下图展示了 Google Cloud 资源层次结构:

Google Cloud 资源层次结构

Google Cloud 资源层次结构有两个用途:

  • 提供所有权层次结构,该层次结构将资源的生命周期绑定到层次结构中该资源的直接父级。
  • 为访问权限控制和组织政策提供连接点与继承机制。

Google Cloud 资源层次结构允许您将组织结构映射到 Google Cloud。该层次结构还为身份和访问权限管理 (IAM) 政策(管理对资源的访问权限)以及组织政策提供了逻辑连接点。IAM 和组织政策均通过层次结构继承,层次结构中每个节点的有效政策是对该节点应用的政策与从其祖先继承而来的政策组合的结果。

资源是构成所有 Google Cloud 服务的最低级层基本组成部分。资源的例子包括 Compute Engine 虚拟机、Pub/Sub 主题、Cloud Storage 存储分区和 App Engine 实例。所有这些较低级别的资源都必须存在于项目中。项目代表了 Google Cloud 资源层次结构的第一个群组级别。

组织节点是层次结构的顶级节点,没有父级。属于组织的所有资源都会在组织节点下进行分组。组织节点可让您集中查看和控制属于组织的每个资源。

文件夹是基于项目的额外分组机制。 您必须拥有组织资源,然后才能创建文件夹。

设计问题

  • 您组织中的哪些角色需要访问您的 Google Cloud 基础架构?
  • 每个角色的成员对 Google Cloud 资源有哪些访问权限要求?
  • 您的组织结构将如何映射到 Google Cloud 资源层次结构?
  • 您是否有针对资源标签的管理规范?

建议

  • 在您的网域中创建组织节点。
  • 定义与您的 Google Cloud 业务需求相对应的资源层次结构。
  • 定义项目结构。例如:
    • 对项目名称中的信息进行匿名处理。
    • 遵循项目命名模式,例如 {company-initial-identifier}-{environment}-{app-name},其中占位符是唯一的,但不会显示公司或应用名称。
  • 自动创建项目、委托结算和设置 IAM 管理。
  • 利用项目安全锁防止意外删除。
  • 确定并规划工作负载的区域部署、地区部署和多地区部署。

资源

身份和访问权限管理

身份和访问权限管理是 Google Cloud 部署的基石,因为它提供对 Google Cloud 资源的授权控制。使用 IAM,您可以管理员工、客户和其他身份,以及他们各自的访问授权。

Google Cloud 为您提供了一系列企业级 IAM 服务,以帮助您保护对数据的访问、通过智能技术简化管理,以及放心地迁移到云端。

在 IAM 中,您可以为成员授予访问权限。成员可以是某一下列类型。

Google 帐号

Google 帐号代表开发者、管理员或与 Google Cloud 进行交互的任何其他人员。

服务帐号

服务帐号是属于应用(而不是某个最终用户)的帐号。

Google 群组

Google 群组是 Google 帐号和服务帐号的指定集合。

G Suite 网域

G Suite 网域代表在组织的 G Suite 帐号中创建的所有 Google 帐号的虚拟组。

Cloud Identity 网域

Cloud Identity 网域就像 G Suite 网域,因为它代表了组织中所有 Google 帐号的虚拟组。

授权

当经过身份验证的成员尝试访问资源时,IAM 会检查该资源的 IAM 政策,以确定是否允许该操作。下面介绍了授权流程中涉及的实体和概念。

资源

您可以向用户授予对 Google Cloud 资源的访问权限。资源的一些例子包括项目、Compute Engine 实例、Cloud Storage 存储分区等等。某些服务(例如 Compute Engine 和 Cloud Storage)支持授予比项目级更精细的 IAM 权限。

权限

权限决定了可以对资源执行的操作。在 IAM 领域中,权限以 service.resource.verb 的形式表示。您不能直接向用户分配权限。 但是,您可以为他们分配包含一项或多项权限的角色。

角色

一个角色对应一组权限。为用户授予一个角色就是授予该角色包含的所有权限。IAM 中有三种角色:

  • 原初角色。Owner、Editor、Viewer。
  • 预定义角色。预定义角色是可提供比原初角色更精细的访问权限控制的 IAM 角色。
  • 自定义角色。您创建的角色,用于在预定义角色无法满足您的需求时根据组织的需要度身定制权限。

IAM 政策

要为用户授予角色,您可以创建 IAM 政策,这是一组定义谁拥有何种访问权限的语句集合。政策与资源关联,用于在每次资源访问时强制执行访问权限控制。IAM 政策由 IAM 政策对象表示。

政策层次结构

您可以在资源层次结构中的任何级别(组织级别、文件夹级别、项目级别或资源级别)设置 IAM 政策。资源会继承父级资源的政策。请将组织级别的政策设置为其所有子文件夹和子项目都自动继承该政策。请将项目级政策设置为项目的所有子资源都继承该政策。资源的有效政策是为该资源设置的政策及其从层次结构中更高层级沿用而来的政策的集合。

设计问题

  • 您将如何管理身份?
  • 您是否将从现有的身份源联合?
  • 您打算如何授予管理员访问权限?
  • 您是否有用于创建、更新和审核访问权限控制的管理流程?
  • 您是否对用户进行分组并根据访问敏感度强制执行多重身份验证 (MFA)?

建议

  • 保护组织管理员访问。
  • 将您的身份提供商与 Google Cloud 联合。
  • 如果您没有身份提供商,请使用 Cloud Identity 作为用户帐号身份。
  • 对每个用户使用 Google 帐号和适当的 IAM 政策。
  • 创建您自己的自定义服务帐号,将 IAM 权限限制为最小权限。
  • 迁移非代管式帐号。
  • 通过最小权限保护对资源的访问。
  • 使用群组和服务帐号。
  • 使用群组命名惯例。
  • 审核群组成员资格请求工作流。
  • 尽量强制执行 MFA,尤其是对具有较高访问权限的用户。
  • 审核超级用户访问权限。
  • 利用服务帐号并审核访问权限及其使用情况。
  • 移除默认的 IAM 组织政策。
  • 定期审核访问权限管理变更情况。

关键服务

Cloud Identity 统一了身份、应用和设备管理,以最大限度地提高用户效率、保护公司数据以及将您的公司过渡到数字化工作环境。

Identity Platform 为您的应用和服务添加了身份和访问权限管理功能,有助于保护用户帐号。

采用高度可用的安全强化型 Google Cloud 服务,Managed Service for Microsoft Active Directory (AD) 可以管理 AD 相关工作负载、自动执行 AD 服务器维护和安全配置,以及将本地 AD 网域连接到云端。

资源

概念 | IAM 文档
使用资源层次结构实现访问权限控制 | IAM 文档

计算

大多数解决方案都会以某种形式使用计算资源,因此选择适合您应用需求的计算至关重要。在 Google Cloud 上,计算是以 Compute Engine、App Engine、Google Kubernetes Engine (GKE)、Cloud Functions、Cloud Run 提供的。您应该评估自己的应用需求,然后选择以下计算方案之一。

Compute Engine 提供了可添加到虚拟机实例的图形处理单元 (GPU)。您可以使用这些 GPU 加快实例上特定工作负载(例如机器学习和数据处理)的速度。

一般而言,App Engine 是托管前端应用的理想之选,因为它可让您专注于应用开发,而不是维护基础架构运营。App Engine 还支持容器部署,可让迁移过程变得更轻松、更快速。App Engine 可以支持托管具有多项服务的微服务架构。

当您需要更多管理控制时,建议使用 Google Kubernetes Engine。GKE 非常适合需要额外服务(例如 Istio)来控制服务网格的复杂微服务架构。

如果 App Engine 和 GKE 都无法满足您的需求,您可以使用 Compute Engine 部署应用,因为您可以构建和运行任何自定义虚拟机映像。

Cloud Functions 可让您构建短时间内有效并且能够以可扩缩的方式执行操作的自动化代码。您可以使用 Cloud Functions 将各种应用拼接在一起,而无需担心基础架构管理。

设计问题

  • 您打算如何使用计算?
  • 您的应用是否已容器化?它们是否有任何旧版依赖项?
  • 您的应用是有状态应用还是无状态应用?
  • 您是否有复杂的分布式服务部署(高速节点间网络)?
  • 如何管理实例访问权限(包括 SSH 密钥)?

建议

  • 选择距离您的用户群最近的 Google Cloud 地区,或者根据合规性要求选择 Google Cloud 地区。
  • 评估工作负载的延迟时间要求。
  • 确定应用端用户延迟时间要求,并选择单地区或多地区部署策略。
  • 确保实例未配置为使用对所有 Cloud API 拥有完整访问权限的默认服务帐号。
  • 确保未在实例上启用 IP 转发(除非确实需要)。
  • 确保 Compute Engine 实例在不需要时没有公共 IP 地址。请改用 NAT 网关。

关键服务

Compute Engine 提供的虚拟机全都运行在 Google 先进的数据中心和覆盖全球的光纤网络之中。Compute Engine 的工具可让您从单一实例扩容到覆盖全球的负载平衡基础架构。Compute Engine 虚拟机启动速度快,不仅具有高性能的永久性磁盘和本地磁盘选项,还能提供稳定的性能。我们的虚拟服务器提供了许多配置选项(包括预定义大小),并且包含用于创建自定义机器类型(这些类型可针对您的特定需求进行优化)的选项。灵活的价格模式和自动生效的持续使用折扣,使 Compute Engine 能够灵活地满足您的价格和性能要求。

Google Kubernetes Engine 提供了一个强大的集群管理器和编排系统,可用于运行您的 Docker 容器。GKE 可将您的容器安排为集群,确保其运行状况良好,并根据您指定的要求(如 CPU 和内存)自动进行管理。GKE 基于 Kubernetes(开源容器编排系统)。使用基于开放源代码的平台,您可以灵活地在 GKE 上、本地或其他公共云基础架构中部署容器。GKE 为您提供了一个代管式 Kubernetes 控制层面,可帮助您专注于开发应用并缓解管理 Kubernetes 部署的麻烦。GKE 可帮助您根据需要部署区域级或地区级集群,同时支持专用集群和 Knative。

App Engine 是专为构建可扩缩的 Web 应用以及移动和 IoT 后端而设计的平台。App Engine 提供在大部分应用中都通用的内置服务和 API,比如 NoSQL 数据存储区、Memcache 以及一个用户身份验证 API。App Engine 可以自动扩缩您的应用以适应其收到的流量,因此您只需为使用的资源付费。您只需上传自己的代码,Google 就会管理您的应用的可用性 - 您不需要预配或维护任何服务器。

Cloud Functions 是一种用于构建和连接云服务的无服务器执行环境。借助 Cloud Functions,您可以编写单一用途的简单函数,并将您的云基础架构和服务发出的事件关联到这些函数。当所监控的事件发生时,您的函数就会被触发。 您的代码将在全代管式环境中执行。您无需预配任何基础架构,也不必费心管理任何服务器。

Cloud Run 是一款代管式计算平台,供您运行可通过 Web 请求或 Pub/Sub 事件调用的无状态容器。Cloud Run 采用无服务器设计:您不用管理基础架构,因此可全力专注于最重要的工作,构建出色的应用。它基于 Knative 构建而成,可让您选择使用 Cloud Run 全代管式运行容器,或者使用 Cloud Run for Anthos on Google Cloud 在 GKE 集群中运行容器。

资源

网络

Google 的专用网络将我们的地区位置连接到 100 多个全球网络入网点。Google Cloud 采用了软件定义网络和分布式系统技术,可以在全球范围内尽快托管并提供您的服务。Google 的全球 VPC 使用 Google 拥有的全球高速网络,以私密且可靠的方式跨地区链接您的应用。如果每减少一毫秒的延迟时间对您都十分重要,Google 可以在 BBR 拥塞控制智能的帮助下确保以最高的吞吐量传送您的内容。

网络设计是另一个关键组成部分,如果正确完成,它可以帮助您优化性能并保护应用与内部和外部服务的通信方式。当您选择网络服务时,请务必根据您的应用需求以及应用之间的通信方式提前考虑一些步骤。有些组件需要使用全球服务,而有些组件可能需要置于特定的地区。请选择靠近用户的部署地区,以获得更好的性能。

设计问题

  • 您的应用服务连接部署的复杂程度如何?
  • 您的应用间部署有哪些网络要求?
  • 如果您有外部服务,您将如何连接到 Google Cloud 网络?
  • 如果连接您的 VPC 和本地网络,您需要多少带宽?
  • 如何对您的网络进行细分和访问权限控制?基于应用?团队?
  • 您是否有用于创建新的网络部署或更新现有网络部署的管理流程?您的审核频率如何?
  • 您是否拥有针对敏感应用的单独网络?如何监控和限制访问权限?

建议

  • 记录您的网络设计:跨项目或混合部署。使用网络拓扑图验证连接。
  • 对服务帐号、网络标记和防火墙规则等服务使用清晰一致的命名惯例。
  • 在子网级别授予网络用户角色。
  • 选择合适的项目:
    • 如果资源需要多个网络接口,请使用单个宿主项目。
    • 为每个项目创建单个 VPC 以将 VPC 配额映射到项目。
    • 如果资源需求超出单个项目的配额,请使用多个宿主项目。
    • 如果需要为每个 VPC 使用单独的管理政策,请使用多个宿主项目。
  • 为每个自主团队创建一个 VPC,并在公用 VPC 中使用共享服务。
  • 将敏感数据隔离在自己的 VPC 或项目中。
  • 在使用 VPC 网络对等互连时,请评估您是否不会超出网络对等互连配额限制(转发规则、防火墙规则、路由等等)。
  • 使用多 NIC 虚拟设备通过云端设备来控制 VPC 之间的流量。
  • 使用 VPC 管理多个工作组。
  • 如果多个 VPC 需要访问公共资源但不互相访问,请创建一个共享服务 VPC。
  • 尽量使用动态路由。
  • 集中控制网络。
  • 尽量使用专用 DNS 区域执行名称解析。
  • 经常审核网络访问权限和控制。
  • 确保来自互联网的 SSH/RDP 访问受到限制。
  • 为关键项目启用 VPC 流日志。

关键服务

虚拟私有云 (VPC) 可为 Compute Engine 虚拟机实例、GKE 集群和 App Engine 柔性环境实例提供网络功能。VPC 为云端资源和服务提供了全球化、可扩缩、灵活的网络。VPC 网络是一种全球化资源,它由数据中心内的一系列地区性虚拟子网组成,所有子网通过全球广域网连接。在 Google Cloud 中,VPC 网络在逻辑上彼此隔离。

通过共享 VPC,组织可以将多个项目中的资源连接到一个公用 VPC 网络,让它们能够通过该网络使用内部 IP 地址安全高效地相互通信。在使用共享 VPC 时,您将某个项目指定为宿主项目,并将一个或多个其他服务项目连接到该项目。宿主项目中的 VPC 网络称为共享 VPC 网络。

借助 Cloud Load Balancing,您可以将负载平衡计算资源分配到一个或多个地区、满足高可用性要求、将您的资源置于单个任播 IP 地址后,以及利用智能自动扩缩功能来扩缩资源。Cloud Load Balancing 已与 Cloud CDN 完全集成,可实现最优化的内容分发机制。Google Cloud 提供了全球负载平衡器和地区负载平衡器以及内部负载平衡器,以帮助优化提供您的应用。

Cloud CDN(内容分发网络)可利用 Google 的全球分布式边缘入网点,在您用户的邻近位置缓存经过 HTTP(S) 负载平衡处理的内容。通过在 Google 的网络边缘缓存内容,您可以在降低传送费用的同时,更快地为用户分发内容。

Cloud DNS 是运行在 Google 基础架构上的可扩缩、可靠、代管式的权威域名系统 (DNS) 服务。它延迟时间短、可用性高,让您能以更经济实惠的方式将自己的应用和服务提供给用户。

Cloud Interconnect 通过高可用性、短延迟时间的连接将本地网络扩展到 Google 的网络。您可以使用 Cloud Interconnect - 专用互连直接连接到 Google,或使用 Cloud Interconnect - 合作伙伴互连通过支持的服务提供商来连接到 Google。

资源

存储

大多数部署都需要某种形式的数据存储。Google Cloud 服务可以归类为 blob 存储或磁盘存储。由于存储空间是通过网络连接到其他服务的,因此在选择存储类型时也要考虑 IOPS 要求。在 Google Cloud 中,IOPS 与存储空间捆绑在一起,并且会根据您的预配空间进行扩缩。某些存储类型(例如永久性磁盘)需要手动进行复制和备份,因为它们是区域性或地区性的。Cloud Storage 会以原生方式复制所选地区或多地区中的数据,可用性高。

在考虑 Google Cloud 存储选项时,请考虑适用于 blob 的 Cloud Storage、适用于块存储的永久性磁盘,以及适用于共享文件的 Filestore。Cloud Storage 是地区资源或多地区资源。所有 Cloud Storage 存储分区都具有内置冗余功能,可保护您的数据免受设备故障的影响,并通过数据中心维护事件确保数据可用性。系统会针对所有 Cloud Storage 操作计算校验和,因此 Google 可以确保您所读取的内容就是您所写入的内容。永久性磁盘是区域资源或地区资源,因此您必须执行额外的步骤来截取数据快照、备份数据或复制数据,以实现冗余。

最佳做法是在选择存储类型时确定应用性能需求和数据要求。

设计问题

  • 您需要多少存储空间?您需要哪些类型的存储空间?
  • 满足您要求的访问模式有哪些?
  • 您是需要活跃存储空间还是归档存储空间?
  • 您是否希望托管静态对象以进行网站托管?CDN?
  • 您是否存储和处理敏感数据?如何监控和管理访问权限?
  • 您是否有针对加密的流程和管理要求?

建议

  • 确定应用存储要求并选择适当的存储选项。
  • 使每个存储分区名称在整个 Cloud Storage 命名空间中保持唯一。请勿在存储分区名称中包含敏感信息。选择难以猜测的存储分区和对象名称。
  • 对将要发送到 Cloud Storage 的流量进行粗略估算,以计算转移时间。
  • 如果您要托管公共内容,请尝试使用 CDN 来最大限度地减少出站流量费用。
  • 请将数据存储在距离应用用户最近的地区。
  • 在选择用户数据的位置时,请牢记法规遵从要求。
  • 对于将按照高速率和高可用性标准传送的数据,请使用 Multi-Regional 存储空间或 Regional 存储空间类别。对于不经常访问且接受略低可用性的数据,请使用 Nearline 存储空间或 Coldline 存储空间类别。
  • 确保您的 Cloud Storage 存储分区不能匿名访问或公开访问。

关键服务

借助 Cloud Storage,您可以在全球范围内随时存储和检索任意数量的数据。您可以在一系列的场景中使用 Cloud Storage,包括提供网站内容、存储数据用于归档和灾难恢复,或者通过直接下载方式分发大型数据对象给用户。

Cloud Storage 提供四种存储类别:Multi-Regional 存储空间、Regional 存储空间、Nearline 存储空间和 Coldline 存储空间。所有存储类别都提供短延迟时间(通常只需要几十毫秒即可收到第一个字节)和高耐用性。这些类别的不同之处在于可用性、最短存储持续时间以及存储和访问价格。

永久性磁盘是适用于 Google Cloud 的持久耐用的高性能块存储。永久性磁盘提供 SSD 和 HDD 存储空间,两者都可以挂接到 Compute Engine 或 Google Kubernetes Engine 中运行的实例。存储卷可以透明地调整大小、快速备份,并支持多个读取者同时读取。

地区永久性磁盘可在同一地区中的两个区域之间提供持久耐用的存储和数据复制功能。如果您需要较高的 IOPS 和短延迟时间,Google Cloud 提供了本地 SSD。这些 SSD 以物理方式挂接到托管虚拟机实例的服务器。您可以将它们用作临时磁盘空间。

Filestore 是一种代管式文件存储服务,适合那些需要使用文件系统接口和共享文件系统来存储数据的应用。Filestore 为用户带来了简单易用的原生体验,让用户能够为其 Compute Engine 和 Google Kubernetes Engine 实例建立代管式网络附加存储 (NAS) 空间。由于用户可以对 Filestore 的性能和容量进行独立调优,因此基于文件的工作负载自然会获得性能提升。

资源

数据库

选择数据库是为应用选择组件的另一个关键步骤。一般来说,数据库分为关系型数据库和非关系型数据库。您可以选择使用 Compute Engine 虚拟机托管自己的数据库或数据库集群,但在选择安装自己的数据库时,最好评估 Google Cloud 代管式数据库服务。管理您自己的数据库或数据库集群会产生额外的开销,其中包括使用最新的补丁程序和更新对其进行维护,以及从事日常的运营活动(例如监控和备份)。Google Cloud 提供了多种数据库服务供您选择,具体取决于您的业务使用场景。选择条件包括短延迟时间访问、时间序列数据处理、灾难恢复或移动客户端同步等等。Cloud SQL 是一项地区服务,该服务支持远程地区中的读取副本、短延迟时间读取和灾难恢复。Cloud Spanner 是一款多地区产品,可提供外部一致性、全球复制和 99.999% 的服务等级协议 (SLA)。额外的系统包括 Bigtable、Memorystore、Firebase、Firestore。您还可以使用开源数据库(例如 MongoDB 和 MariaDB)。

与存储类似,请在选择数据库时考虑您的功能性和非功能性应用要求。请定义要求,并选择最符合要求的数据库。

当您将现有工作负载迁移到 Google Cloud 时,数据库迁移技术将成为启用和执行零停机时间迁移的重要组成部分。这一点非常重要,这样应用就可以在数据库迁移期间继续为最终用户提供服务。您可以使用多种数据库迁移技术

设计问题

  • 您运行的是哪些数据库?它们是如何使用的?
  • 您是否有任何特定要求(延迟时间、复制、一致性)?
  • 您是否有特定数据库或版本的任何旧版依赖项?
  • 在这些数据库中,有多少是结构化的或非结构化的?
  • 如何管理对数据库的访问权限?在应用级别以及对于内部使用?

建议

  • 为您的表选择合适的架构。
  • 选择正确的键名以避免键 hotspotting,尤其是对于非关系型数据库。
  • 尽量对数据库实例进行分片。
  • 采用最佳连接管理做法,例如连接池和指数退避算法。
  • 避免非常大型的事务。
  • 设计并测试应用对数据库维护更新的响应。
  • 保护并隔离与数据库的连接。

特定于 Cloud SQL 的建议

  • 使用专用 IP 网络 (VPC)。

    • 进一步提高安全性:
      • 将 Cloud SQL 代理与专用网络搭配使用。
      • 限制公共 IP 访问 (constraints/sql.restrictPublicIp)
  • 如果您需要公共 IP 网络:

    • 使用具有有限/范围狭小 IP 地址列表的内置防火墙,并确保 Cloud SQL 实例要求传入连接使用 SSL。
    • 进一步提高安全性:
      • 不在白名单中列出任何内容并使用 Cloud SQL 代理。
      • 限制授权网络 (constraints/sql.restrictAuthorizedNetworks)。
  • 尽量使用 Cloud SQL 代理。

  • 为数据库用户授予有限的权限。

  • 确保 Cloud SQL 数据库实例要求所有传入连接都使用 SSL。

  • 确保 Cloud SQL 数据库实例未向所有人开放。

  • 确保您的 MySQL 数据库实例不允许任何人以管理权限进行连接。

关键服务

Cloud SQL 是一种全代管式数据库服务,让您可以轻松地在云端设置、维护、管理和控制关系型 PostgreSQL、MySQL 和 SQL Server 数据库。Cloud SQL 可提供出色的性能、扩容潜力和便利性,Cloud SQL 托管在 Google Cloud 上,可为任何位置运行的应用提供数据库基础架构。

Cloud Bigtable 是稀疏填充的表,可以扩容到数十亿行和数千列,可让您存储 TB 级甚至是 PB 级的数据。每行中都会有一个被编入索引的值;这个值称为行键。Cloud Bigtable 非常适合以极短的延迟时间存储大量单键数据。它可以较短的延迟时间支持高读写吞吐量,是 MapReduce 操作的理想数据源。

Cloud Spanner 是专为云端打造的首款具备强一致性且可扩缩的全球分布式企业级数据库服务,融合了关系型数据库结构与非关系型数据库横向扩容能力的优势。这种优势上的融合可以跨行、跨地区、跨洲实现高性能事务和强一致性。服务等级协议 (SLA) 承诺的可用性高达 99.999%,领先业界水平。该服务没有计划内停机时间,同时具备企业级安全性。

Memorystore for Redis 是 Google Cloud 的一种全代管式 Redis 服务。通过利用高扩缩能力、高可用性且高度安全的 Redis 服务,在 Google Cloud 上运行的应用可实现卓越性能,且不必管理复杂的 Redis 部署。

Firestore 是一个 NoSQL 文档数据库,能够自动扩缩、具备出色的性能,并且易于进行应用开发。虽然 Firestore 界面具有许多与传统数据库相同的功能,但作为 NoSQL 数据库,它与传统数据库在描述数据对象间关系的方式方面有所不同。

Firebase 实时数据库是一种托管在云端的数据库。数据以 JSON 格式存储并实时同步到每个连接的客户端。当您使用我们的 Android、iOS 和 JavaScript SDK 构建跨平台应用时,所有的客户端共享一个实时数据库实例,并自动接收包含最新数据的更新。

开源数据库。各个合作伙伴提供不同的开源数据库,包括 MongoDB、MariaDB、Redis 等等。

资源

分析

大多数企业都希望分析其数据并从中收集数据洞见。Google Cloud 为您提供了各种代管式工具,可帮助您专注于编写 ETL 流水线,同时 Google 为您管理底层基础架构。根据您的业务需求以及您希望实现的目标,Google Cloud 提供以下服务来提取、处理、转换、分析和查看您的数据。

选择合适的服务是一项棘手的工作,但如果您确定了自己的专业知识和舒适度,就可以更轻松地做出选择。例如,Dataflow 允许您编写复杂的转换,但您必须熟悉如何编写脚本。Dataprep 允许您直观呈现数据以及构建自定义配方以转换数据。

BigQuery 非常适合数据仓库,因为它是一项全代管式服务,可自动帮助您节省长期存储费用。如果您的某个表连续 90 天未曾修改,则该表的存储价格会自动下降 50%。请始终对数据进行分区并优化 BigQuery 查询。

设计问题

  • 如何提取和分析数据?
  • 您目前是否设置了 ETL 流水线?它的情况如何?
  • 您通常分析哪些类型的数据?是否采用了专有的数据格式?
  • 您是否估算过现有的数据和预期增长情况?
  • 您是否进行任何机器学习?您打算使用代管式服务还是非代管式服务?
  • 您是否有针对作业或工作流的服务等级协议 (SLA)?如何监控它们?

建议

  • 确定您的应用是需要“正好一次”还是“有保证的一次”传送流水线。
  • 使用 Pub/Sub 作为缓冲区将 ETL 函数分离为小函数,以使流水线可扩缩。
  • 使用 Jobs API 扩缩 Dataproc 集群,这有助于通过在现有集群中运行作业来减少费用。
  • 评估查询性能并对 BigQuery 数据集进行分区,以最大限度地减少查询费用。

关键服务

Pub/Sub 简单、可靠、可扩缩,可以用作数据流分析和事件驱动型计算系统的基础。您可以在独立的应用之间发送和接收消息,并在云、本地或混合环境中运行的项目和应用之间整合数据。利用 Pub/Sub 的灵活性,您可以使托管在 Google Cloud 或互联网上其他位置的各个系统和组件相分离。Pub/Sub 旨在以短延迟时间实现“至少一次”传送,并可按需扩容到每秒发送数千万条消息。

Dataflow 是一种全代管式服务,用于以流式传输(实时)模式和批量(历史)模式对数据进行转换并丰富数据内容,同时保持同等的可靠性和表现力。得益于 Dataflow 的无服务器方式,您无需再费心于容量规划、资源管理和性能优化等运营任务,而只需为所用资源付费。此外,Dataflow 不仅可与 Google 的数据提取、数据仓储和机器学习产品搭配使用,而且可与 Apache Spark 和 Apache Beam 等第三方工具搭配使用。

Dataprep by Trifacta 是一项智能的数据服务,让您可以直观地探索、清理和准备结构化数据及非结构化数据,以备分析之用。Dataprep 是一款无服务器工具,您可以处理任意规模的数据,而无需部署或管理任何基础架构。Dataprep 会根据您在界面中的每项输入,建议和预测接下来最合适的数据转换操作,您无需编写代码。此外,借助自动架构、数据类型、潜在联接和异常检测功能,您可以跳过耗时的数据剖析工作,专注于数据分析。

Datalab 是一款强大的交互式工具,可用于在 Google Cloud 上浏览、分析、转换和直观呈现数据,以及构建机器学习模型。它是基于 Jupyter 的交互式笔记本,与 BigQuery 和 AutoML 相集成,让您可以轻松使用关键的数据处理服务。借助 TensorFlow 或 AutoML,您可以轻松地将数据转换为部署好的机器学习模型,随时用于预测。

Dataproc 是一项快速、简单易用的全代管式云服务,为您提供了一种更简单、更经济实惠的方式来运行 Apache Spark 和 Apache Hadoop 集群。过去需要几个小时或几天的操作,现在只需几秒或几分钟即可完成,而且您只需为使用的资源付费(按秒计费)。Dataproc 与 Google Cloud 产品的各项存储、计算和监控服务集成,为您提供一个强大且完整的数据处理平台。

Cloud Data Fusion 是一项全代管式云原生数据集成服务,可帮助用户高效地构建和管理 ETL/ELT 数据流水线。借助图形界面以及由预配置的连接器和转换组成的庞大开源库,Data Fusion 可让组织将工作重点放在获取洞见和采取行动上,而非代码和集成。

BigQuery 是 Google 推出的全代管式低成本无服务器数据仓库,可根据您的存储和计算能力需求进行扩缩。BigQuery 提供列式 ANSI SQL 数据库,能够快速完成数 TB 乃至数 PB 数据的分析。在 BigQuery GIS 中,您可以使用熟悉的 SQL 语言分析地理空间数据;而借助 BigQuery ML,您可以使用简单的 SQL 代码,基于大规模结构化或半结构化数据快速构建机器学习模型并将其付诸应用;此外,您还可以利用 BigQuery BI Engine 支持实时交互式信息中心,实现不到一秒的查询延迟时间。BigQuery 还提供数据转移服务、灵活的数据提取和“用多少,付多少”的价格模式。

Cloud Composer 是一项全代管式工作流编排服务,您可以利用它编写、安排和监控跨越多个云环境和本地数据中心的流水线。Cloud Composer 在备受欢迎的 Apache Airflow 开源项目基础上构建而成,通过 Python 编程语言操作,易于使用且没有供应商锁定。此外,得益于针对 Google Cloud 工作负载的端到端集成,您可以使用 Google Cloud 的所有大数据产品来编排完整的流水线。

Data Catalog 是一项可扩缩的全代管式元数据管理服务,组织可以使用该服务在 Google Cloud 中快速发现、管理和理解其所有数据。它拥有简单易用的数据发现搜索界面和灵活而强大的编目系统(用于捕获技术元数据和业务元数据),通过集成 Cloud Data Loss Prevention (DLP) 和 Cloud Identity and Access Management,可提供坚实的安全性和合规性基础。

Google 数据洞察是一款全代管式直观分析服务,可以帮助您组织中的任何人通过易于创建的交互式信息中心从数据中汲取洞见,从而制定更明智的业务决策。如果将 Google 数据洞察与内存中分析服务 BigQuery BI Engine 结合使用,在对海量数据集执行数据探索和可视化互动操作时,速度可以达到亚秒级。

资源