你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Cosmos DB 的全球分布式应用程序

Cosmos DB
流量管理器

使用 Microsoft 全球数据中心内置的高可用性和低延迟功能,保证世界各地的用户访问。

体系结构

体系结构图
下载 此体系结构的 SVG 版本。

数据流

  1. 用户通过专用客户端访问应用程序。
  2. Azure 流量管理器基于单个或嵌套路由配置文件,将用户连接路由到访问应用程序的最佳位置。
  3. 在托管应用程序的登陆区域,应用程序将处理会话和与数据库的连接。
  4. 此应用程序的范围可以从简单的静态页面开始,直到 Kubernetes 中托管的面向微服务的应用程序。
  5. 应用程序环境与 Cosmos DB 之间的连接是通过一个Azure Active Directory用户处理的,该用户可以在 Cosmos DB Key Vault。
  6. 使用 Azure Cosmos DB 的多宿主 API,应用程序始终知道最靠近的区域并将请求发送到该区域。 无需进行任何配置更改就能识别最靠近的区域。 向/从 Azure Cosmos 帐户添加和删除区域时,无需重新部署或暂停应用程序,它一直保持高可用性。 在外层下,Cosmos DB 将基于定义的区域数处理数据的全局分布和复制。 此外,还应受益于"自动故障转移"选项,在区域不可用时故障转移到故障转移优先级最高的区域,无需用户操作。 如果启用自动故障转移,则可修改区域优先级。

组件

备选方法

可以使用多个计算和无服务器选项来扩展此方案。

计算选项

  • Azure 虚拟机:在数Windows数 (VM) 创建 Linux 和虚拟机,并降低成本。
  • Azure Kubernetes 服务:适用于所有应用程序和微服务基础工作负荷的高度可用、安全且完全托管的 Kubernetes 服务。
  • 应用服务:快速创建适用于 Web 和移动的强大云应用。

无服务器选项

注意事项

可用性

数据库实例Cosmos取决于许多因素。 要复制到的区域Cosmos越大,应用程序的可用性就越大。 每个区域都包含 Azure Cosmos DB 容器的所有数据分区,并且默认情况下可以处理读取。 若要提高数据层的可用性,可以启用多区域写入。 这样做可提高数据层的可用性。 还可以采用较弱的一致性级别和可用性区域来增加可用性。

考虑上述方法时,如果在 Azure Cosmos DB 自动故障转移上实现高可用性,则要配置解决方案,使正在运行的应用程序保持尽可能高的 SLA。

对于应用程序层,流量管理员配置嵌套配置文件。 将此设计推送到最高级别时,可以缩放每个区域的不同应用程序选择。 每个区域部署还采用高可用性方法。

性能

系统性能受计算和数据库级别的许多因素影响。 应用服务计划或其他计算选项的 SKU 会影响每个区域可用的内存和核心。 此外,计算层部署到的区域数决定了其能够处理的规模。 部署其他位置会减轻现有区域的压力,并且应导致应用程序可以达到的最大吞吐量线性增加。

Cosmos配置数据库,以便它不会为计算层资源造成瓶颈。 Cosmos DB 中的每个数据库和容器都应配置为自动缩放,并且应提供一个最大请求单位值,Cosmos DB 不会限制请求。 若要确定每个数据库实体Cosmos最大请求单位值,可以针对应用程序运行接近最大吞吐量的负载测试。 与更强的一致性级别相比,较弱的一致性级别可提供更高的吞吐量和性能优势。

重要的是,在代码中实现从 Cosmos DB 读取和写入的逻辑时,无论是通过 SDK、Azure Functions 绑定等,都应使用逻辑,以便每个区域 API 将请求路由到最近的 Cosmos DB 区域。 PreferredLocations SDK 根据 Azure Cosmos DB 帐户配置、当前区域可用性和指定的首选项列表,选择最佳的终结点来执行读取和写入操作。 此过程可显著提高性能。

复原能力

为了增强复原能力,可以使用 Azure Cosmos DB 部署的可用性区域。 复原能力还取决于在数据库部署上所做的一Cosmos级别选择。 根据此一致性级别,你将实现不同级别的复原能力 (请参阅一致性、可用性和性能权衡,了解) 。

可伸缩性

缩放基于此图中的许多级别。 Azure Cosmos DB 专为弹性缩放和可预测性能而构建。 在应用程序级别,需要查看所使用的计算模型。 Azure Functions应用服务可以自动缩放。 对于 Azure 虚拟机,可以使用 Azure 虚拟机规模集。 了解此需求时,应始终考虑使用无服务器选项(如果可能)。

安全性

从安全角度来看,推动实现基于标识的系统,Azure Active Directory安全访问环境。 在后端,应用程序 (通过托管标识) 访问的最佳设计,但也可以考虑使用 Azure Active Directory 用户和 Azure Key Vault 来保护访问的方法。 此外,Cosmos DB 实例应进一步保护,这样,能够读取和写入数据库实例的唯一实体是部署到不同区域的各种后端。 可以使用内置防火墙 将 IP 限制应用到 帐户

我们还支持在 Azure Active Directory DB SQL API 上直接Cosmos RBAC。

后续步骤

有关 Azure Cosmos DB:

有关Azure 流量管理器:

相关解决方案理念:

相关完整体系结构:

相关的体系结构指南: