作为云架构师或决策者,当您计划在 Google Cloud 中部署应用时,您需要选择1适用于您的应用的部署原型。本指南介绍了六种部署原型(可用区级、区域级、多区域级、全球、混合和多云端),并介绍了每种部署原型的使用场景和设计注意事项。本指南还提供了比较分析,可帮助您选择满足可用性、费用、性能和操作效率要求的部署原型。
什么是部署原型?
部署原型是独立于提供商的抽象模型,您可以基于该模型构建可满足业务和技术要求的特定于应用的部署架构。每种部署原型都指定了可在其中运行应用的故障域的组合。这些故障域可以是一个或多个 Google Cloud 可用区或区域,并且可以进行扩展,以包含您的本地数据中心或其他云服务提供商中的故障域。
下图展示了在 Google Cloud 中部署的六个应用。每个应用都使用满足其特定要求的部署原型。
如上图所示,在使用混合或多云部署原型的架构中,云拓扑基于基本原型之一:可用区级、区域级、多区域级或全球。从这一点上讲,可以将混合和多云部署原型视为包含其中一种基本原型的复合部署原型。
选择部署原型有助于简化有关您应该使用的 Google Cloud 产品和功能的后续决策。例如,对于高可用性容器化应用,如果您选择区域级部署原型,则区域级 Google Kubernetes Engine (GKE) 集群比可用区级 GKE 集群更适合。
为应用选择部署原型时,您需要考虑可用性、费用和运营复杂性等因素之间的权衡取舍。例如,如果应用为多个国家/地区的用户提供服务并且需要高可用性,则您可以选择多区域级部署原型。但是,对于单个地理区域中的员工使用的内部应用,您可能会优先考虑费用而非可用性,因此选择区域级部署原型。
部署原型概览
以下标签页提供了部署原型的定义,并汇总了每种原型的应用场景和设计注意事项。
可用区级
您的应用在单个 Google Cloud 可用区中运行,如下图所示:
使用场景 |
|
---|---|
设计考虑事项 |
|
更多信息 | 请参阅以下各部分: |
单区域
您的应用在单个 Google Cloud 区域内的两个或多个可用区中独立运行,如下图所示:
使用场景 |
|
---|---|
设计考虑事项 |
|
更多信息 | 请参阅以下各部分: |
多区域级
您的应用在两个或多个 Google Cloud 区域之间的多个可用区中独立运行。您可以使用 DNS 路由政策将传入的流量路由到区域级负载均衡器。然后,区域级负载均衡器将流量分配到应用的可用区级副本,如下图所示:
使用场景 |
|
---|---|
设计考虑事项 |
|
更多信息 | 请参阅以下各部分: |
Global
您的应用以全球分布式(位置未知)栈或区域隔离式栈的形式在全球范围的 Google Cloud 区域中运行。全球任播负载均衡器会将流量分配到离用户最近的区域。应用栈的其他组件也可以是全球组件,例如数据库、缓存和对象存储。
下图展示了全球部署原型的全球分布式变体。全球任播负载均衡器会将请求转发到分布在多个区域并使用全球复制的数据库的应用栈。
下图展示了使用区域隔离式应用栈的全球部署原型的变体。全球任播负载均衡器会将请求转发到一个区域中的应用栈。所有应用栈都使用单个全球复制的数据库。
使用场景 |
|
---|---|
设计考虑事项 | 跨区域数据传输和数据复制的费用。 |
更多信息 | 请参阅以下各部分: |
混合
应用的某些部分部署在 Google Cloud 中,而其他部分在本地运行,如下图所示。Google Cloud 中的拓扑可以使用可用区级、区域级、多区域级或全球部署原型。
使用场景 |
|
---|---|
设计考虑事项 |
|
更多信息 | 请参阅以下各部分: |
多云端
应用的某些部分部署在 Google Cloud 中,其他部分部署在其他云平台中,如下图所示。每个云平台中的拓扑都可以使用可用区级、区域级、多区域级或全球部署原型。
使用场景 |
|
---|---|
设计考虑事项 |
|
更多信息 | 请参阅以下各部分: |
贡献者
作者: Kumar Dhanagopal | 跨产品解决方案开发者
其他贡献者:
- Anna Berenberg | 工程研究员
- Anshu Kak | 杰出工程师
- Jeff Welsch | 产品管理总监
- Marwan Al Shawi | 合作伙伴客户工程师
- Sekou Page | 对外产品经理
- Steve McGhee | 可靠性技术推广工程师
- Victor Morno | Cloud 网络产品经理
-
Anna Berenberg and Brad Calder, Deployment Archetypes for Cloud Applications, ACM Computing Surveys, Volume 55, Issue 3, Article No.: 61, pp 1-48 ↩