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

可缩放订单处理

Azure Cosmos DB
Azure HDInsight

本示例方案针对那些需要高度可缩放且复原性好的体系结构进行联机订单处理的组织。 可能的应用包括:电子商务和零售点、订单履行、库存预留和跟踪。

体系结构

可缩放订单处理管道的示例体系结构示意图。

下载此体系结构的 Visio 文件

数据流

此体系结构详细说明了订单处理管道的重要组件。 数据流经方案的情形如下所示:

  1. 事件消息进入系统时,可以通过面向客户的应用程序进入(通过 HTTP 同步进入),也可以通过各种后端系统进入(通过 Apache Kafka 异步进入)。 这些消息会传递到一个命令处理管道中。
  2. 每个事件消息都通过一个命令处理器微服务引入并映射到定义的一组命令中的一个。 命令处理器从事件流快照数据库中检索与执行该命令相关的任何最新状态。 然后会执行该命令,并将命令的输出以新事件的形式发出。
  3. 以命令输出的形式发出的每个事件会通过 Azure Cosmos DB 提交到一个事件流数据库。
  4. 每次将数据库插入或更新提交到事件流数据库时,Azure Cosmos DB 更改源都会引发一个事件。 下游系统可以订阅与该系统相关的任何事件主题。
  5. 来自 Azure Cosmos DB 更改源的所有事件也会发送到快照事件流微服务,后者会计算已发生事件导致的任何状态更改。 然后,新状态会提交到存储在 Azure Cosmos DB 中的事件流快照数据库。 快照数据库为所有数据元素的当前状态提供一个全局分布式的低延迟数据源。 事件流数据库提供已通过体系结构传递的所有事件消息的完整记录,因此可以进行可靠的测试、故障排除和灾难恢复。

组件

  • Azure Cosmos DB 是 Microsoft 推出的全球分布式多模型数据库,可以让解决方案跨任意数量的地理区域灵活且独立地缩放吞吐量与存储。 它通过综合服务级别协议 (SLA) 提供吞吐量、延迟、可用性和一致性保证。 本方案使用 Azure Cosmos DB 进行事件流存储和快照存储,并应用 Azure Cosmos DB 的更改源功能来确保数据一致性和故障恢复。
  • Apache Kafka on Azure HDInsight 是以托管服务方式实现的 Apache Kafka,是一种开源分布式流式处理平台,用于生成实时流数据管道和应用程序。 Kafka 还提供了类似于消息队列的消息中转站功能,用于发布和订阅命名数据流。 本方案使用 Kafka 在订单处理管道中处理出入事件和下游事件。

方案详细信息

本方案采用事件溯源方法,使用通过微服务实现的函数编程模型。 可以将每个微服务视为一个流处理器,所有业务逻辑都通过微服务实现。 此方法可以实现高可用性和复原性、异地复制和快速执行。

使用托管式 Azure 服务(例如 Azure Cosmos DB 和 HDInsight)可以利用 Microsoft 在全局分布式云规模数据存储和检索方面的专业技术,因此可以降低成本。 本方案专门针对电子商务或零售场景;若有其他的数据服务需求,则应查看 Azure 中提供的完全托管式智能数据库服务的列表。

可能的用例

其他相关用例包括:

  • 电子商务或零售点后端系统。
  • 零售或制造业的库存管理系统。
  • 订单履行系统。
  • 其他与订单处理管道相关的集成方案。

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

进行实时消息引入、数据存储、流处理、分析数据存储以及分析和报告时,有许多技术选项。

微服务已成为一种流行的体系结构类型,可用于构建可复原、高度可缩放、可独立部署且能快速演变的云应用程序。 微服务需要利用不同的方法来设计和生成应用程序。 有关如何生成并运行基于微服务的体系结构的指南,请参阅在 Azure 上设计微服务

可用性

本方案的事件溯源方法允许将系统组件松散地耦合在一起,在部署时这些组件可以彼此独立。 Azure Cosmos DB 提供高可用性,可以帮助组织管理与一致性、可用性和性能相关的权衡因素,这些都有相应的保证。 Apache Kafka on HDInsight 在设计时也考虑到了高可用性

Azure Monitor 提供了统一的用户界面,可用于监视各种 Azure 服务。 有关详细信息,请参阅在 Microsoft Azure 中进行监视。 事件中心和流分析均与 Azure Monitor 集成在一起。

有关其他可用性注意事项,请参阅可用性核对清单

可伸缩性

Kafka on HDInsight 可用于为 Kafka 群集配置存储和可伸缩性。 Azure Cosmos DB 提供快速的可预测性能,并且可以随着应用程序规模的增长进行无缝缩放。 使用本方案的基于事件溯源微服务的体系结构,还可以更轻松地缩放系统并扩展其功能。

若要了解其他可伸缩性注意事项,请参阅 Azure 体系结构中心提供的性能效率核对清单

安全性

安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述

Azure Cosmos DB 安全模型可以用来验证用户身份并访问其数据和资源。 有关详细信息,请参阅 Azure Cosmos DB 数据库安全性

有关设计安全解决方案的通用指南,请参阅 Azure 安全性文档

复原

本示例方案中的事件溯源体系结构和关联的技术使得本方案在出现故障时很容易进行复原。 若需可复原解决方案的通用设计指南,请参阅设计适用于 Azure 的可复原应用程序

成本优化

成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述

为了方便用户查看运行本方案的成本,我们已在成本计算器中预配置了所有服务。 若要了解自己的特定方案的定价变化情况,请按预期的数据量更改相应的变量。 就本方案来说,示例定价仅包括 Azure Cosmos DB 和一个 Kafka 群集,用于处理 Azure Cosmos DB 更改源引发的事件。 用于始发系统和其他下游系统的事件处理器和微服务未包括在内,其成本主要取决于这些服务的数量和规模,以及为实现它们而选择的技术。

Azure Cosmos DB 的货币是请求单位 (RU)。 借助请求单位,无需保留读取/写入容量或预配 CPU、内存和 IOPS。 Azure Cosmos DB 支持不同操作(范围从简单读取、写入到复杂图形查询等)的许多 API。 并非所有请求都是相同的,因此系统会根据请求所需的计算量为它们分配规范化数量的请求单位。 解决方案需要的请求单位数取决于数据元素大小以及每秒的数据库读写操作数。 有关详细信息,请参阅 Azure Cosmos DB 中的请求单位。 这些估价基于在两个 Azure 区域中运行的 Azure Cosmos DB。

我们已根据你预期的活动量提供了三个示例性的成本配置文件:

  • :此定价示例对应于 5 个保留的 RU 和 Azure Cosmos DB 中的 1 TB 数据存储,以及一个小型 (D3 v2) Kafka 群集。
  • :此定价示例对应于 50 个保留的 RU 和 Azure Cosmos DB 中的 10 TB 数据存储,以及一个中型 (D4 v2) Kafka 群集。
  • :此定价示例对应于 500 个保留的 RU 和 Cosmos DB 中的 30 TB 数据存储,以及一个大型 (D5 v2) Kafka 群集。

作者

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

主要作者:

后续步骤

本示例方案基于此体系结构的一个更广泛的版本,该版本由 jet.com 针对其端到端订单处理管道而构建。 有关详细信息,请参阅 jet.com 技术方面的客户配置文件jet.com 在 Build 的演示文稿

查看其他内容:

请参阅相关的体系结构内容: