本示例方案详述了如何使用 Azure 平台即服务 (PaaS) 工具实现一个电子商务前端。
体系结构
下载此体系结构的 Visio 文件。
数据流
本方案介绍如何通过某个电子商务站点购票。数据流经方案的情形如下所示:
- Azure 流量管理器会将用户的请求路由到托管在 Azure 应用服务中的电子商务站点。
- Azure CDN 为用户提供静态图像和内容。
- 用户通过 Azure Active Directory B2C 租户登录到应用程序。
- 用户使用 Azure 搜索来搜索音乐会。
- 网站从 Azure SQL 数据库拉取音乐会详细信息。
- 网站引用 Blob 存储中的已购票的图像。
- 系统将数据库查询结果缓存在 Azure Cache for Redis 中,以改进性能。
- 用户提交订票单和音乐会评价,系统将其放入队列中。
- Azure Functions 处理订单付款和音乐会评价。
- 认知服务对音乐会评价进行分析,确定其情绪(正面或负面)。
- Application Insights 提供用于监视 Web 应用程序运行状况的性能指标。
组件
- Azure CDN 从靠近用户的位置提供静态缓存内容,以便减轻延迟。
- Azure 流量管理器控制不同 Azure 区域中服务终结点的用户流量分配。
- 应用服务 - Web 应用托管的 Web 应用程序可以实现自动缩放和高可用性,无需管理基础结构。
- Azure Active Directory B2C 是一项标识管理服务,用于自定义和控制客户在应用程序中的注册、登录和管理配置文件的方式。
- 存储队列存储大量可供应用程序访问的队列消息。
- Functions 是无服务器计算选项,可以让应用程序按需运行,不需管理基础结构。
- 认知服务 - 情绪分析使用机器学习 API,可让开发人员轻松地在应用程序中添加智能功能 - 例如情绪和视频检测;面部、语音与视觉识别;语音与语言理解。
- Azure 搜索是一种搜索即服务云解决方案,它可以根据 Web、移动和企业应用程序中的专用异类内容提供丰富的搜索体验。
- 存储 Blob 最适合存储大量的非结构化数据,例如文本或二进制数据。
- Azure Cache for Redis 可以提高严重依赖于后端数据存储的系统的性能和可伸缩性,其方式是将经常访问的数据暂时复制到靠近应用程序的快速存储。
- Azure SQL 数据库是一种通用的关系数据库托管服务,支持关系数据、JSON、空间和 XML 等结构。
- Application Insights 旨在持续提高性能与可用性,其方式是通过内置的分析工具了解用户使用某个应用进行的操作,以便自动检测性能异常。
备选方法
可以通过许多其他技术来生成面向客户的应用程序,该应用程序侧重于大规模的电子商务。 这些技术涉及到应用程序的前端以及数据层。
其他适用于 Web 层和函数的选项包括:
- Azure Kubernetes 服务 - 一个平台,用于生成和部署基于容器的解决方案,这些方案可以用作微服务体系结构的某个实现。 该平台为应用程序的不同组件按照需求进行独立缩放,提供灵活性。
- Azure 容器实例 - 这是一种方法,可以快速地部署和运行生命周期短的容器。 部署此处的容器是为了运行快速处理作业,例如处理一条消息或执行一项计算,然后在它们完成后尽快取消预配。
- 服务总线可以用来替代存储队列。
可用于数据层的其他选项包括:
- Azure Cosmos DB:Microsoft 提供的全球分布式多模型数据库。 此服务提供的平台适合运行其他数据模型,例如 MongoDB、Cassandra、Graph 数据或简单的表存储。
方案详细信息
许多电子商务网站在一段时间过后都面临季节性和流量不稳定的问题。 对你的产品或服务的需求增加时(不管是可预见的还是不可预见的),可以通过 PaaS 工具自动应对客户数量和交易数量增加的情况。 另外,本方案只要求你支付所使用的容量,让你充分利用云经济。
本文档介绍各种 Azure PaaS 组件和注意事项,方便你部署示例性的电子商务应用程序 Relecloud Concerts,这是一个在线音乐会订票平台。
可能的用例
此解决方案针对零售行业进行了优化。 其他相关用例包括:
- 生成一个需要通过弹性缩放来应对不同时间的用户数突增的应用程序。
- 生成一个根据设计可以在全世界的不同 Azure 区域运行并可确保高可用性的应用程序。
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
可用性
- 考虑在生成云应用程序时,使用针对可用性的典型设计模式。
- 在适当的应用服务 Web 应用程序参考体系结构中审核可用性注意事项
- 若要针对可用性进行其他的考量,请参阅 Azure 体系结构中心的可用性核对清单。
可伸缩性
- 生成云应用程序时,请弄清楚针对可伸缩性的典型设计模式。
- 在适当的应用服务 Web 应用程序参考体系结构中审核可伸缩性注意事项
- 有关其他可伸缩性主题,请参阅 Azure 体系结构中心中提供的性能效率清单。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述。
- 考虑在适当情况下使用针对安全性的典型设计模式。
- 在适当的应用服务 Web 应用程序参考体系结构中审核安全性注意事项。
- 考虑跟进某个安全开发生命周期流程,帮助开发人员生成更安全的软件并解决安全符合性要求问题,同时减少开发成本。
- 查看蓝图体系结构,以确定 Azure PCI DSS 符合性。
复原
- 考虑在应用程序的某个部分不可用的情况下,使用断路器模式进行有效的错误处理。
- 审核针对复原的典型设计模式,考虑在适当情况下实施这些模式。
- 可以在 Azure 体系结构中心找到许多建议用于应用服务的做法。
- 考虑对数据层使用活动的异地复制,对图像和队列使用异地冗余存储。
- 有关复原的更深入讨论,请查看 Azure 体系结构中心的相关文章。
成本优化
成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述。
为了方便用户了解运行本方案的成本,我们已在成本计算器中预配置了所有服务。 若要了解自己的特定用例的定价变化情况,请按预期的流量更改相应的变量。
我们已根据你预期接收的流量提供了三个示例性的成本配置文件:
- 小:此定价示例表示生成最低生产级别实例所需的组件。 在这里,我们假定用户数量很少,每月只有数千。 此应用使用某个标准 Web 应用的单个实例,这对于启动自动缩放来说已足够。 其他组件都缩放成一个基本层,可以尽量减少成本,但仍可确保有 SLA 支持和足够的容量,可以处理生产级别的工作负荷。
- 中:此定价示例表示组件情况符合中等大小的部署。 在这里,我们估计一个月有大约 100,000 个用户使用此系统。 预计的流量在处于中等标准层的单个应用服务实例中处理。 另外,认知和搜索服务的中型层也会添加到计算器中。
- 大:此定价示例表示应用程序需进行大规模的处理,每月的用户数在百万级别,移动的数据量为数 TB。 对于这种级别的使用量,必须将高级层 Web 应用部署在多个区域,并且需前置一个流量管理器。 存储数据的存储空间、数据库和 CDN 均按 TB 级数据量进行配置。
部署此方案
若要部署本方案,可以按照此分步教程的说明操作,手动部署每个组件。 本教程还提供了 .NET 示例应用程序,该程序运行简单的购票应用程序。 此外还有一个资源管理器模板,可以自动部署大多数 Azure 资源。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
主要作者:
- Chris Mason | 软件工程高级经理