云设计模式 - Azure Architecture Center

数据管理模式

数据管理是云应用程序的关键要素,影响大部分质量属性。 出于性能、可伸缩性或可用性等方面的原因,数据通常托管在不同的位置并跨多个服务器,这可能会带来一系列的挑战。 例如,必须维护数据一致性,通常需要跨不同的位置同步数据。

此外,数据应在静态下、传输中以及通过授权访问机制进行保护,以维持保密性、完整性和可用性的安全保证。 有关详细信息,请参阅 Azure 安全基准数据保护控制

模式 总结
缓存端 将数据按需从数据存储加载到缓存中
CQRS 使用独立接口将读取数据的操作与更新数据的操作分离。
事件溯源 使用只追加存储来记录描述域中数据采取的操作的完整系列事件。
索引表 基于数据存储中经常由查询引用的字段创建索引。
具体化视图 当未针对所需的查询操作完美设置数据的格式时,在一个或多个数据存储中基于数据生成预填充的视图。
分片 将数据存储划分为一组水平分区或分片。
静态内容托管 将静态内容部署到基于云的存储服务,再由后者将它们直接传送给客户端。
附属密钥 使用令牌或密钥,向客户端授予对特定资源或服务的受限直接访问权限。

设计和实现模式

反馈

优秀的设计包含许多要素,例如部件设计和部署中的一致性和连贯性、简化管理和开发的可维护性,以及允许部件和子系统在其他应用程序和方案中使用的可重用性。 在设计和实施阶段做出的决策对云托管应用程序和服务的质量和总拥有成本具有巨大影响。

模式 总结
代表 创建代表客户服务或应用程序发送网络请求的帮助程序服务。
防损层 在现代应用程序与旧系统之间实施外观或适配器层。
用于前端的后端 创建单独的后端服务,供特定的前端应用程序或接口使用。
CQRS 使用独立接口将读取数据的操作与更新数据的操作分离。
计算资源合并 将多个任务或操作合并到单个计算单元
边缘工作负载配置 由于车间系统和设备种类繁多,使得配置工作负载困难重重。
外部配置存储 将配置信息从应用程序部署包移出,移到一个集中的位置。
网关聚合 使用网关可将多个单独请求聚合成一个请求。
网关卸载 将共享或专用服务功能卸载到网关代理。
网关路由 使用单个终结点将请求路由到多个服务。
领导选择 通过选拔一个实例作为领导来负责管理其他实例,协调分布式应用程序中协作性任务实例集合所执行的操作。
管道和筛选器 将一个执行复杂处理的任务分解为一系列可重复使用的单个元素。
Sidecar 将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装。
静态内容托管 将静态内容部署到基于云的存储服务,再由后者将它们直接传送给客户端。
Strangler Fig 通过将特定的功能片断逐渐取代为新的应用程序和服务,逐步迁移旧系统。

消息传送模式

反馈

云应用程序的分布性要求消息基础结构在理想情况下能以松散耦合的方式连接组件和服务,从而将可伸缩性最大化。 异步消息受到广泛使用并提供了诸多好处,但也带来了许多挑战,如消息排序、有害消息管理和幂等性等。

模式 总结
异步请求-答复 在后端处理需要是异步处理但前端仍需要明确响应的情况下,将后端处理与前端主机分离。
声明检查 将大型消息拆分成声明检查和有效负载,以免消息总线过载。
协调 让每个系统组件都参与有关业务事务工作流的决策过程,而不是只依赖于控制中心点。
竞争性使用者 使多个并发使用者能够处理同一消息通道上收到的消息。
管道和筛选器 将一个执行复杂处理的任务分解为一系列可重复使用的单个元素。
优先级队列 为发送到服务的请求确定优先级,以便高优先级请求能够得到比低优先级请求更快速地接收和处理。
Publisher-Subscriber 使应用程序能够以异步方式向多个感兴趣的使用者公布事件,而无需将发送方与接收方耦合。
基于队列的负载调控 使用队列在任务与所调用的服务之间充当缓冲,从而缓解间歇性负载过大现象。
一系列事件 在分布式事务方案中跨微服务管理数据一致性。 Saga 是一系列事务,用于更新每项服务并发布消息或事件来触发下一个事务步骤。
计划程序代理监督程序 跨一组分布式服务和其他远程资源协调一组操作。
顺序保护 按定义的顺序处理一组相关的消息,不需阻止对其他消息组的处理。