你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
架构师通过集成平台服务、功能和代码来设计工作负载,以满足功能和非功能要求。 若要设计有效的工作负荷,必须了解这些要求,并选择解决工作负载约束挑战的拓扑和方法。 云设计模式为许多常见挑战提供了解决方案。
系统设计严重依赖于已建立的设计模式。 可以使用这些模式的组合来设计基础结构、代码和分布式系统。 这些模式对于在云中构建可靠、高度安全、成本优化、作高效且高性能的应用程序至关重要。
以下云设计模式与技术无关,这使得它们适合任何分布式系统。 可以在 Azure、其他云平台、本地设置和混合环境中应用这些模式。
云设计模式如何增强设计过程
云工作负载容易受到 分布式计算的故障影响,这种错误是分布式系统运行方式的常见但不正确的假设。 这些谬论的示例包括:
- 网络可靠。
- 延迟为零。
- 带宽是无限的。
- 网络是安全的。
- 拓扑不会更改。
- 有一个管理员。
- 组件版本控制很简单。
- 可观测性实现可能会延迟。
这些误解可能会导致工作负荷设计有缺陷。 设计模式不会消除这些误解,但有助于提高意识、提供补偿策略并提供缓解措施。 每个云设计模式都有权衡。 专注于为何应选择特定模式而不是如何实现它。
请考虑如何将这些行业标准设计模式用作设计良好的工作负载设计的核心构建基块。 Azure Well-Architected Framework 中的每个设计模式都表示其一个或多个支柱。 某些模式可能会引入影响其他支柱目标的权衡。
模式目录
本目录中的每个模式都描述了它解决的问题、应用该模式时的注意事项,以及基于 Microsoft Azure 服务和工具的示例。 某些模式包含了代码示例或代码片段,演示如何在 Azure 中实现该模式。
模式 | 总结 | Well-Architected 框架支柱 |
---|---|---|
代表 | 创建代表客户服务或应用程序发送网络请求的帮助程序服务。 | -可靠性 -安全 |
防损层 | 在现代应用程序与旧系统之间实施外观或适配器层。 | - 卓越运营 |
异步请求-答复 | 将后端处理与前端主机分离。 当后端处理必须是异步的,但前端需要明确且及时的响应时,此模式非常有用。 | - 性能效率 |
用于前端的后端 | 为特定的前端应用程序或接口创建单独的后端服务。 | -可靠性 -安全 - 性能效率 |
隔层 | 将应用程序的元素隔离到池中,这样,如果一个元素发生故障,其他元素可继续工作。 | -可靠性 -安全 - 性能效率 |
缓存端 | 将数据按需从数据存储加载到缓存中。 | -可靠性 - 性能效率 |
协调 | 让各个服务决定何时以及如何处理业务操作,而不是取决于中央协调器。 | - 卓越运营 - 性能效率 |
断路器 | 处理在应用程序连接到远程服务或资源时可能需要一定时间修复的错误。 | -可靠性 - 性能效率 |
声明检查 | 将大型消息拆分成声明检查和有效负载,以免消息总线过载。 | -可靠性 -安全 - 成本优化 - 性能效率 |
补偿事务 | 撤消通过一系列步骤执行的工作,这些步骤共同构成了最终一致的操作。 | -可靠性 |
竞争性使用者 | 允许多个并发使用者处理在同一消息通道上接收的消息。 | -可靠性 - 成本优化 - 性能效率 |
计算资源合并 | 将多个任务或操作合并到单个计算单元。 | - 成本优化 - 卓越运营 - 性能效率 |
CQRS | 通过使用不同的接口将读取数据的操作与更新数据的操作分开。 | - 性能效率 |
部署戳记 | 部署应用程序组件的多个独立副本,包括数据存储。 | - 卓越运营 - 性能效率 |
事件溯源 | 使用仅追加存储记录描述在域中对数据执行的操作的完整事件序列。 | -可靠性 - 性能效率 |
外部配置存储 | 将配置信息从应用程序部署包移到集中位置。 | - 卓越运营 |
联合标识 | 将身份验证委托给外部标识提供者。 | -可靠性 -安全 - 性能效率 |
网关聚合 | 使用网关可将多个单独请求聚合成一个请求。 | -可靠性 -安全 - 卓越运营 - 性能效率 |
网关卸载 | 将共享或专用服务功能卸载到网关代理。 | -可靠性 -安全 - 成本优化 - 卓越运营 - 性能效率 |
网关路由 | 使用单个终结点将请求路由到多个服务。 | -可靠性 - 卓越运营 - 性能效率 |
地理节点 | 跨地理分布式节点部署后端服务。 每个节点都可以处理来自任何区域的客户端请求。 | -可靠性 - 性能效率 |
运行状况终结点监视 | 在应用程序中实施可让外部工具通过公开终结点定期访问的功能检查。 | -可靠性 - 卓越运营 - 性能效率 |
索引表 | 在查询经常引用的数据存储字段上创建索引。 | -可靠性 - 性能效率 |
领导选拔 | 通过选举一个实例作为领导者来协调分布式应用程序中的操作。 领导者管理一组协作的任务实例。 | -可靠性 |
具体化视图 | 当数据的格式不适合所需的查询操作时,在一个或多个数据存储中的数据上生成预填充视图。 | - 性能效率 |
消息传送桥 | 构建中介以实现原本不兼容的消息传递系统之间的通信。 | - 成本优化 - 卓越运营 |
管道和筛选器 | 将一个执行复杂处理的任务分解为一系列可重复使用的单个元素。 | -可靠性 |
优先级队列 | 对发送到服务的请求进行优先级排序,以便优先级较高的请求得到更快处理。 | -可靠性 - 性能效率 |
发布者/订阅者 | 使应用程序能够异步向多个消费者宣布事件,而无需将发送方与接收方耦合。 | -可靠性 -安全 - 成本优化 - 卓越运营 - 性能效率 |
隔离 | 确保外部资产在工作负载使用之前达到团队商定的质量级别。 | -安全 - 卓越运营 |
基于队列的负载调控 | 使用在任务和服务之间创建缓冲区的队列来平缓间歇性的重负载。 | -可靠性 - 成本优化 - 性能效率 |
速率限制 | 通过控制资源消耗来避免或最大限度地减少限制错误。 | -可靠性 |
重试 | 通过重试失败的操作使应用程序能够处理预期的临时故障。 | -可靠性 |
Saga | 在分布式事务方案中跨微服务管理数据一致性。 | -可靠性 |
计划程序代理监督程序 | 跨分布式服务和资源协调一组操作。 | -可靠性 - 性能效率 |
顺序保护 | 按定义的顺序处理一组相关消息,而不阻塞其他消息组。 | -可靠性 |
分片 | 将数据存储划分为一组水平分区或分片。 | -可靠性 - 成本优化 |
挎斗 | 将组件部署到单独的进程或容器中以提供隔离和封装。 | -安全 - 卓越运营 |
静态内容托管 | 将静态内容部署到基于云的存储服务以直接向客户端交付。 | - 成本优化 |
Strangler Fig | 通过逐渐用新应用程序和服务替换功能片段来增量迁移旧系统。 | -可靠性 - 成本优化 - 卓越运营 |
限制 | 控制来自应用程序、租户或服务的资源消耗。 | -可靠性 -安全 - 成本优化 - 性能效率 |
附属密钥 | 使用令牌或密钥为客户端提供对特定资源或服务的受限直接访问。 | -安全 - 成本优化 - 性能效率 |
AI 代理编排模式
前面的云设计模式解决了分布式系统中的常见挑战,但使用多个自治代理的 AI 工作负载需要专门的协调方法。 像计划程序代理监督程序或编排这样的传统模式提供了基本概念。 但是,AI 代理引入了独特的挑战,例如不确定的输出、动态推理功能,以及对专用组件之间智能交接的需求。
有关包含多个自治代理的 AI 工作负载,请参阅 AI 代理业务流程模式。 这些模式通过解决智能自治组件的特定协调要求来补充此目录中的云设计模式,这些组件协同工作以实现复杂结果。
后续步骤
从模式寻求优化的架构良好的框架支柱的角度审查设计模式。