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

使用表存储故障转移的双区域 Web 应用程序

Azure Front Door
Azure 应用服务
Azure Functions
Azure 表存储
用于 Redis 的 Azure 缓存

解决方案构想

本文是一种解决方案构想。 如果你希望我们在内容中扩充更多信息,例如潜在用例、备用服务、实现注意事项或定价指南,请通过提供 GitHub 反馈来告知我们。

此体系结构为使用大量数据的 Web 应用程序提供高可用性解决方案。 次要区域充当主要区域的备用区域,从而提高可用性。 主要区域使用 Azure 存储的内置复制功能将其数据发送到次要区域。

数据存储在 Azure 表存储表中。 与任何 Azure 存储服务一样,表存储数据在主要区域中以同步方式复制三次。 若要使其可供备用,它还在次要区域中以异步方式复制三次。 有关 Azure 存储复制的信息,请参阅 Azure 存储冗余

体系结构包括表的缓存,以减少访问负载并改进应用程序响应。

注意

在某些情况下,应用程序可能需要多个存储帐户。 请参阅注意事项,了解详细信息。

可能的用例

该体系结构可能适用于任何使用必须始终可用的大量数据的应用程序。 示例包括可实现以下操作的应用:

  • 跟踪客户支出习惯和购物行为。
  • 预报天气。
  • 提供智能流量系统或实现智能流量系统,或使用智能技术来监视流量。
  • 分析制造业物联网 (IoT) 数据。
  • 显示智能计量数据或使用智能技术来监视计量数据。

体系结构

可以故障转移到备用区域的可复原系统的体系结构。

下载此体系结构的 Visio 文件

数据流

  1. 客户端通过 Microsoft Entra ID 进行身份验证,并被授予访问 Azure 应用程序服务上托管的 Web 应用程序的权限。
  2. 在发生区域性中断时,Azure Front Door(防火墙和第 7 层负载均衡器)将用户流量切换到备用区域。
  3. Azure 应用程序服务托管网站和 RESTful Web API。 浏览器客户端运行使用 API 的 AJAX 应用程序。
  4. Web API 委托函数应用来处理后台任务。 任务在 Azure 队列存储队列中排队。
  5. 由 Azure Functions 托管的函数应用执行由排队消息触发的后台任务。
  6. Azure Cache for Redis 缓存函数应用的表数据。 这减轻了数据库活动的负载,加快了函数应用和 Web 应用的速度。
  7. Azure 表存储保存 Web 应用程序使用的数据。
  8. 表存储支持跨区域中可用性区域同步复制数据,以减少数据中心中断。 它还使用异步复制在不同 Azure 区域复制数据,以修正区域中断并提高应用程序可用性。

组件

  • Microsoft Entra ID 是一种多租户标识和访问管理服务,可以与本地目录同步。
  • Azure DNS 是用于 DNS 域的高可用性托管服务,为应用提供快速 DNS 查询和 DNS 记录的快速更新。 管理 Azure DNS 就像管理其他 Azure 服务一样,并且使用相同的凭据、API、工具和计费。
  • Azure Front Door 是一个安全的内容分发网络 (CDN) 和具有即时故障转移的负载均衡器。 它在靠近用户的边缘运行,加速内容交付,同时保护应用、API 和网站免受网络威胁。
  • Azure 应用程序服务是用于构建、部署和扩展 Web 应用的完全托管服务。 可以使用.NET、.NET Core、Node.js、Java、Python 或 PHP 来构建应用。 应用可以在容器中或者在 Windows 或 Linux 上运行。 在大型机迁移中,前端屏幕或 Web 界面可以编码为基于 HTTP 的 REST API。 它们可以进行隔离,并且可以是无状态的,以编排基于微服务的系统。 有关 Web API 的详细信息,请参阅 RESTful Web API 设计
  • Azure Functions 提供了一个无需建立应用程序基础结构即可运行小段代码(称为函数)的环境。 可将其用于处理大量数据、集成系统、使用 IoT 以及生成简单的 API 和微服务。 借助微服务,你可以创建连接到 Azure 服务并始终保持最新状态的服务器。
  • Azure 存储,它是适用于数据、应用和工作负载的一组云服务,可以大规模缩放,并且很安全。 其中包括 Azure 文件存储Azure 表存储Azure 队列存储。 Azure 文件存储通常是迁移大型机工作负载的有效工具。
  • Azure 队列存储提供简单、经济高效、持久的消息队列,适用于大型工作负载。
  • Azure 表存储是一种用于使用大型半结构化数据集进行快速开发的 NoSQL 键值存储。 表是无架构的,可随着需求的变化随时进行调整。 对于许多类型的应用程序,访问快速且经济高效,通常成本低于其他类型的键控存储。
  • Azure Cache for Redis 是一种完全托管的内存中缓存服务和消息中转站,用于在计算资源之间共享数据和状态。 它提供开放源代码 Redis 和 Redis 实验室提供的一款商业产品作为托管服务。 要提高高吞吐量联机事务处理应用程序的性能,可以将其设计为可缩放并利用内存中数据存储(如 Azure Cache for Redis)。

备选方法

  • Azure 流量管理器根据你选择的流量路由方法来跨全球 Azure 区域引导传入的 DNS 请求。 它还提供自动故障转移和性能路由。
  • Azure 内容分发网络在边缘服务器中缓存静态内容以实现快速响应,并使用网络优化来加快对动态内容的响应。 如果用户群遍布全球,内容分发网络特别有用。
  • Azure Kubernetes 服务 (AKS),这是一项完全托管的 Kubernetes 服务,用于部署和管理容器化应用程序。 可使用它实现微服务体系结构,其组件按需独立缩放。
  • Azure 容器实例提供一种快速简单的运行任务的方式,无需管理基础结构。 在开发期间或对于运行非计划任务,它非常有用。
  • Azure 服务总线是一种可靠的云消息传递服务,可以实现简单的混合集成。 在此体系结构中,它可以用来代替队列存储。 有关详细信息,请参阅存储队列和服务总线队列 - 比较与对照

注意事项

  • 有些表存储的性能限制可通过添加存储帐户来克服。 以下情况可能需要其他帐户:

    • 实现多租户以支持多个客户
    • 支持事务率较高的客户
    • 支持有大型数据集的客户
    • 通过跨多个存储帐户分布数据来加快数据访问速度
    • 将数据隔离到热层、冷层和存档层
    • 针对备份和报告目的创建数据副本

    有关详细信息,请参阅表存储的可伸缩性和性能目标

  • 表存储复制在某些 Azure 区域中不可用。

  • 次要区域中的数据具有最终的一致性,这意味着在主要区域中发生更新的时间和在次要区域中显示更新的时间之间存在滞后。 由于从主要区域到次要区域的复制是异步的,因此如果主要区域失败且未恢复,则可能会丢失数据。 目前,没有关于将数据复制到次要区域需要多长时间的服务级别协议 (SLA)。 有关详细信息,请参阅 Azure 存储冗余

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

  • Nabil Siddiqui | 云解决方案架构师 - 数字和应用程序创新

后续步骤