云设计模式:云应用程序的规范体系结构指南

Posted Wang-Junchao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云设计模式:云应用程序的规范体系结构指南相关的知识,希望对你有一定的参考价值。

云设计模式:云应用程序的规范体系结构指南


本指南包含24种设计模式和10个相关的指导主题,通过展示如何将每一项应用于云应用程序体系结构的全局图来阐明应用模式的好处。它还讨论了每种模式的好处和注意事项。大多数模式代码样例或者显示如何使用MicrosoftAzure的特性实现模式的片段。然而,本指南中描述的大多数主题与各种分布式系统同样相关,无论是在Azure上还是在其他云平台上。


【博文目录>>>】


设计模式

以下设计模式在云托管应用程序中非常有用。每个模式都以一种通用格式提供,该格式描述了上下文和问题、解决方案、应用该模式的问题和注意事项,以及一个基于Azure的示例。每个模式还包括指向其他相关模式的链接。每个项目顶部的图标表示问题领域与之相关的。有些模式有代码示例。你可以一次性下载所有代码样例。也可以单击代码示例图标下载与单个模式关联的代码示例。

【注】
我们的意图不是提供一个全面的模式集合。相反,我们选择了我们认为对云应用程序有用的模式–考虑到每个模式在用户中的受欢迎程度。这也不是关于Azure特征的详细指南。要了解Azure,请参阅:http://azure.microsoft.com.

缓存旁路模式(Cache-aside Pattern)

根据需要从数据存储区将数据加载到缓存中。这种模式可以提高性能,并有助于保持缓存中的数据与基础数据存储中的数据之间的一致性。

断路器型式(Circuit Breaker Pattern)

处理在连接到远程服务或资源时可能需要可变时间来纠正的故障。这种模式可以提高应用程序的稳定性和弹性。

补偿交易模式(Compensating Transaction Pattern)

如果一个或多个操作失败,则撤消一系列步骤执行的工作,这些步骤一起定义最终一致的操作。遵循最终一致性模型的操作通常在实现复杂业务流程和工作流的云托管应用程序中找到。

竞争消费者模式(Competing Consumers Pattern)

使多个并发使用者能够处理在同一消息通道上接收的消息。这种模式使系统能够同时处理多条消息,以优化吞吐量,提高可伸缩性和可用性,并平衡工作负载。

计算资源整合模式(Compute Resource Consolidation Pattern)

将多个任务或操作合并到一个计算单元中。这种模式可以提高计算资源利用率,并减少与在云托管应用程序中执行计算处理相关的成本和管理开销。

命令和查询责任隔离(CQRS)模式(Command and Query Responsibility Segregation (CQRS) Pattern)

使用单独的接口将读取数据的操作与更新数据的操作隔离开来。这种模式可以最大限度地提高性能、可伸缩性和安全性;通过更高的灵活性支持系统随时间的发展;并防止更新命令在域级别造成合并冲突。

事件源模式(Event Sourcing Pattern)

使用仅附加存储记录描述在域中对数据采取的操作的完整事件系列,而不是仅存储当前状态,以便可以使用存储来实现域对象。这种模式可以通过避免同步数据模型和业务域的要求,简化复杂领域中的任务;提高性能、可伸缩性和响应性;为事务性数据提供一致性;以及维护支持补偿操作的完整审计跟踪和历史记录。

外部配置存储模式(External Configuration Store Pattern)

将配置信息从应用程序部署包移到集中位置。这种模式可以为更容易地管理和控制配置数据,以及在应用程序和应用程序实例之间共享配置数据提供机会。

联邦标识模式(Federated Identity Pattern)

将身份验证委托给外部标识提供程序。这种模式可以简化开发,减少对用户管理的需求,并改善应用程序的用户体验。

守门模式(Gatekeeper Pattern)

通过使用专用主机实例保护应用程序和服务,该实例充当客户端和应用程序或服务之间的代理,验证和清除请求,并在它们之间传递请求和数据。这种模式可以提供额外的安全层,并限制系统的攻击面。

健康端点监测模式(Health Endpoint Monitoring Pattern)

在应用程序中实现功能检查,外部工具可以定期通过公开的端点访问。此模式可以帮助验证应用程序和服务是否正确执行。

索引表模式(Index Table Pattern)

在查询条件经常引用的数据存储中的字段上创建索引。通过允许应用程序更快地从数据存储区检索数据,此模式可以提高查询性能。

领导人选举模式(Leader Election Pattern)

通过选择一个实例作为负责管理其他实例的领导,协调分布式应用程序中的协作任务实例集合所执行的操作。这种模式可以帮助确保任务之间不发生冲突,导致共享资源的争用,或者无意中干扰其他任务实例正在执行的工作。

物化视图模式(Materialized View Pattern)

当数据以不利于所需的查询操作的方式格式化时,在一个或多个数据存储中对数据生成预先填充的视图。这种模式可以帮助支持高效的查询和数据提取,并提高应用程序的性能。

管道和过滤器模式(Pipes and Filters Pattern)

将执行复杂处理的任务分解为可重用的一系列离散元素。通过允许独立部署和缩放执行处理的任务元素,此模式可以提高性能、可伸缩性和可重用性。

优先级队列模式(Priority Queue Pattern)

优先处理发送给服务的请求,以便比低优先级的请求更快地接收和处理具有较高优先级的请求。这种模式在为不同类型的客户端提供不同服务级别保证的应用程序中非常有用。

基于队列的负载均衡模式(Queue-based Load Leveling Pattern)

使用队列作为任务和它调用的服务之间的缓冲区,以平滑间歇性的重负载,否则会导致服务失败或超时。这种模式可以帮助最小化需求高峰对任务和服务的可用性和响应性的影响。

重试模式(Retry Pattern)

允许应用程序在连接到服务或网络资源时通过透明地重新尝试操作来处理临时故障,期望故障是短暂的。这种模式可以提高应用程序的稳定性。

运行时重配置模式(Runtime Reconfiguration Pattern)

设计一个应用程序,以便可以重新配置它,而不需要重新部署或重新启动应用程序。这有助于保持可用性和最小化停机时间。

调度代理监控程序模式(Scheduler Agent Supervisor Pattern)

在一组分布式服务和其他远程资源之间协调一组操作,尝试在任何这些操作失败时透明地处理故障,或者在系统无法从故障中恢复时撤消所执行的工作的效果。此模式可以通过使分布式系统能够恢复和重试由于短暂异常、持久故障和进程故障而失败的操作,从而增加分布式系统的弹性。

切分模式(Sharding Pattern)

将数据存储划分为一组水平分区碎片。当存储和访问大量数据时,这种模式可以提高可伸缩性。

静态内容托管模式(Static Content Hosting Pattern)

将静态内容部署到基于云的存储服务中,该服务可以将这些内容直接交付给客户端。这种模式可以减少对潜在昂贵的计算实例的需求。

节流模式(Throttling Pattern)

控制应用程序实例、单个租户或整个服务所使用的资源的消耗。这种模式允许系统继续运行并满足服务级别协议,即使需求的增加会给资源带来极大的负担。

代客凭证模式(Valet Key Pattern)

使用令牌或密钥,为客户端提供对特定资源或服务的受限直接访问,以便从应用程序代码中卸载数据传输操作。这种模式在使用云托管存储系统或队列的应用程序中特别有用,并且可以最小化成本,最大限度地提高可伸缩性和性能。

原文链接

https://docs.microsoft.com/en-us/previous-versions/msp-n-p/dn568099(v=pandp.10)

以上是关于云设计模式:云应用程序的规范体系结构指南的主要内容,如果未能解决你的问题,请参考以下文章

点云数据

云原生制品那些事:容器镜像

腾讯云app品牌LOGO重塑设计大揭秘

云原生背景下故障演练体系建设的思考与实践—云原生混沌工程系列之指南篇

由多个电容组成的去耦旁路电路,电容怎么布局摆放,先大后小还是先小后大?

云原生背景下故障演练体系建设的思考与实践—云原生混沌工程系列之指南篇