选择部署范式时,需要考虑应用程序对可用性(无论是一般情况还是服务中断时)、延迟、合规和费用的需求。没有一种“正确”的部署范式。本节探讨可用的体系结构,以帮助您满足部署需求。
在部署数据库时,您必须首先选择是部署到单个区域还是多个区域。下图显示了这些选项,下面将进一步解释:

单区域部署
单区域部署是最简单的部署选项。在单区域部署中,您的数据存储在提供商的某个区域(例如 AWS 的 us-west-2 或 Google 的 asia-northeast3)。对于有多个可用区的区域,Atlas 始终提供可用区级别的可用性,您的集群节点分布在单个区域内的各个可用区。因此,如果单个区域出现故障,您的数据在其他区域仍然可用。
注意
推荐的区域有三个可用区,并在 Atlas 用户界面中用星形图标标记。
单区域部署的简单性和较低成本带来了可用性较低和潜在延迟较高的风险,这取决于应用程序用户的分布。
多地区部署
A 多区域部署是一种更复杂的部署模式,与单区域部署相比,它在更大的地理范围内提供更高的可用性和更低的延迟。多区域部署有几种类型:
单一地理区域内的多区域:部署到由单个云提供商在单一地理区域内托管的多个区域,定义为像国家或大陆这样的大区域。这确保了如果任何给定区域发生故障时的可用性。
示例:您将集群部署到 AWS 区域
us-west-1和us-east-1,这两个区域都位于美国。如果us-east-1变得不可用,us-west-1将继续以接近正常性能接受读取和写入操作。跨多个地理区域的多区域部署:在两个或多个地理区域内的一个或多个区域进行部署。这可确保在任一区域故障或整个地理区域不可用时,系统仍保持可用。
例如,您在 AWS 区域
us-east-1和us-east-2部署集群,这两个区域都位于美国,并在欧洲的eu-west-2部署第三个集群。多云:部署到由多个云提供商托管的一个或多个地区。这提供了最高级别的可用性,确保在任何给定区域发生故障或整个云提供商发生故障时,您的数据仍然可用。
例如,您在AWS区域
us-west-1和 Google Cloud 区域us-east4部署集群。
可用性考虑因素
可用性通常被认为是您的集群对服务中断的弹性,而灾难恢复则是指系统从服务中断中恢复的速度(RTO)以及在服务中断中可能丢失的数据量(RPO)。由于所有 Atlas 实例始终拥有最新数据,因此故障转移不需要恢复备份。
Atlas 在您的部署中内置了复制功能,这意味着:
数据库实例之间保持紧密同步,通常在毫秒级范围内。
在发生服务中断事件时,数据库实例之间的故障转移是全自动的。它不需要人工干预,只需几秒钟。
当使用默认的 writeConcern 值
majority时,在故障转移期间不会发生数据丢失,因为所有数据都已写入多个位置,从而防止了数据丢失。此外,数据库驱动程序会自动重试所有正在执行的操作,以确保顺利完成。
这意味着 RTO、RPO 和数据复制频率实际上是相等的,并且只要大多数节点是健康的,您的 Atlas 集群就可以完全运行。
注意
在评估最大 RTO 和 RPO 时,应综合考虑整个集群以及应用程序的部署方式。考虑集群的全部工作负载,以确保其支持您的需求。
部署范式比较
要确定哪种部署模式适合您,请根据应用程序对您核心业务的重要性进行细分。应用程序越重要(换句话说,服务中断对公司的影响越大),您就越应该考虑采用能够自动处理任何服务中断的架构。
下表提供了对各种部署范式的比较,以帮助您确定最适合您需求的选择:
优先级 | 说明 | RTO | 部署模型 | 相对费用 |
|---|---|---|---|---|
0 层级 | 最高关键性应用程序。即使在区域性服务中断的事件中,也需要全自动故障转移。 | 0 | $$$ | |
1 层级 | 较低关键性应用程序。可能会经历一些停机或维护窗口,而不会对收入产生重大影响。 | 大于 1 小时且小于 8 小时 | $$ | |
2 层级 | 最低关键性的应用程序。可以在不显著影响收入的情况下停机24小时。 | > 8 小时 | $+ | |
非生产环境 | 非关键性应用程序。不直接产生收入且不面向客户的环境。通常是开发和测试环境。 | 不适用 | $0 及更高版本 |
注意
每种部署类型的费用取决于多个因素,包括您选择的提供商、所需的区域数量、存储量以及服务器的处理能力。有关最新定价信息,请参阅MongoDB Pricing。
用例
在选择部署模式时,首先要确定可以部署的最少区域数量,以便为地理分布最广的用户提供服务。然后,考虑根据您对可用性、性能和数据主权的要求,添加其他区域或云提供商。
请考虑以下使用案例,以帮助决定哪种部署模式最适合您的应用程序用户的地理分布:
用户主要集中在一个地理区域
如果您应用程序的大多数用户位于同一地理区域,我们建议您在该区域内部署到一个或多个区域。单区域部署可以防止单个可用区中的服务中断,而多区域部署则覆盖更大的地理区域,确保在区域和服务中断期间的可用性。为了实现更高的可用性,您可以跨多个区域进行部署。这些选项均支持低延迟,并简化了数据主权合规,因为所有用户数据均在同一地理区域进行访问和存储。
要了解更多关于这些部署范式的信息,请参阅以下范式页面:
用户分布在多个地理区域
如果您的应用程序用户分布在多个地理区域,例如美国和欧洲,我们建议您在每个地理区域部署一个或多个区域。在您为客户提供服务的每个地理区域部署一个区域,可以在发生区域性服务中断时确保低延迟和高可用性。您还可以通过对数据进行分区,使各地理区域的用户数据在本区域内托管,从而满足数据主权要求。
为了在不增加延迟或违反数据主权要求的情况下确保区域服务中断时的高可用性,您还可以部署到每个地理区域的多个区域。您可以通过将集群部署到多个地理区域的多个区域,实现多区域部署的最高可用性。
要了解更多关于这些部署范式的信息,请参阅以下范式页面:
用户遍布全球
如果您要向全球受众部署应用程序,我们建议您在考虑全球部署之前,先在多个地理区域进行多区域部署。几乎在所有情况下,多个地理位置的多区域部署可以满足您对高可用性、低延迟和数据主权的要求。在极少数情况下,您可能需要全球 Atlas 部署,这是最复杂的多区域部署范式,需要非常仔细的规划。
要了解有关这些部署范式的更多信息,请参阅以下页面: