【云应用架构】Azure 云设计模式概览

简介: 【云应用架构】Azure 云设计模式概览

这些设计模式对于在云中构建可靠、可扩展、安全的应用程序很有用。

每个模式都描述了该模式解决的问题、应用该模式的注意事项以及一个基于 Microsoft Azure 的示例。大多数模式都包含代码示例或代码片段,它们展示了如何在 Azure 上实现该模式。但是,大多数模式都与任何分布式系统相关,无论是托管在 Azure 上还是其他云平台上。

云开发面临的挑战

数据管理

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

设计与实施


好的设计包括组件设计和部署的一致性和连贯性、简化管理和开发的可维护性以及允许组件和子系统在其他应用程序和其他场景中使用的可重用性等因素。在设计和实施阶段做出的决策对云托管应用程序和服务的质量和总拥有成本产生巨大影响。

消息

云应用程序的分布式特性需要一个连接组件和服务的消息传递基础架构,理想情况下以松散耦合的方式来最大化可扩展性。异步消息传递被广泛使用,并提供了许多好处,但也带来了诸如消息排序、毒消息管理、幂等性等挑战。

模式目录

模式 总结 类别
Ambassador 创建代表消费者服务或应用程序发送网络请求的辅助服务。 Design and Implementation,

Operational Excellence
Anti-Corruption Layer 在现代应用程序和遗留系统之间实施外观或适配器层。 Design and Implementation,

Operational Excellence
Asynchronous Request-Reply 将后端处理与前端主机解耦,后端处理需要异步,但前端仍然需要清晰的响应。 Messaging
Backends for Frontends 创建单独的后端服务以供特定前端应用程序或接口使用。 Design and Implementation
Bulkhead 将应用程序的元素隔离到池中,以便如果一个失败,其他元素将继续运行。 Reliability
Cache-Aside 按需将数据从数据存储加载到缓存中 Data Management,

Performance Efficiency
Choreography 让每个服务决定何时以及如何处理业务操作,而不是依赖于中央协调器。 Messaging,

Performance Efficiency
Circuit Breaker 处理连接到远程服务或资源时可能需要不同时间才能修复的故障。 Reliability
Claim Check 将大消息拆分为声明检查和有效负载,以避免消息总线不堪重负。 Messaging
Compensating Transaction 撤消由一系列步骤执行的工作,这些步骤共同定义了最终一致的操作。 Reliability
Competing Consumers 允许多个并发消费者处理在同一消息传递通道上接收到的消息。 Messaging
Compute Resource Consolidation 将多个任务或操作合并到一个计算单元中 Design and Implementation
CQRS 使用单独的接口将读取数据的操作与更新数据的操作分开。 Data Management,

Design and Implementation,

Performance Efficiency
Deployment Stamps 部署应用程序组件的多个独立副本,包括数据存储。 Reliability,

Performance Efficiency
Event Sourcing 使用仅附加存储来记录描述对域中数据执行的操作的完整系列事件。 Data Management,

Performance Efficiency
External Configuration Store 将配置信息从应用程序部署包中移到一个集中位置。 Design and Implementation,

Operational Excellence
Federated Identity 将身份验证委托给外部身份提供者。 Security
Gatekeeper 使用专用主机实例保护应用程序和服务,该主机实例充当客户端与应用程序或服务之间的代理,验证和清理请求,并在它们之间传递请求和数据。 Security
Gateway Aggregation 使用网关将多个单独的请求聚合成一个请求。 Design and Implementation,

Operational Excellence
Gateway Offloading 将共享或专用服务功能卸载到网关代理。 Design and Implementation,

Operational Excellence
Gateway Routing 使用单个端点将请求路由到多个服务。 Design and Implementation,

Operational Excellence
Geodes 将后端服务部署到一组地理节点中,每个节点都可以为任何区域的任何客户端请求提供服务。 Reliability,

Operational Excellence
Health Endpoint Monitoring 在外部工具可以通过暴露的端点定期访问的应用程序中实施功能检查。 Reliability,

Operational Excellence
Index Table 在查询经常引用的数据存储中的字段上创建索引。 Data Management,

Performance Efficiency
Leader Election 通过选举一个实例作为负责管理其他实例的领导者,协调分布式应用程序中一组协作任务实例执行的操作。 Design and Implementation,

Reliability
Materialized View 当数据的格式不适合所需的查询操作时,生成一个或多个数据存储中数据的预填充视图。 Data Management,

Operational Excellence
Pipes and Filters 将执行复杂处理的任务分解为一系列可重复使用的独立元素。 Design and Implementation,

Messaging
Priority Queue 对发送到服务的请求进行优先级排序,以便接收和处理具有较高优先级的请求比具有较低优先级的请求更快。 Messaging,

Performance Efficiency
Publisher/Subscriber 使应用程序能够异步向多个感兴趣的消费者宣布事件,而无需将发送者与接收者耦合。 Messaging
Queue-Based Load Leveling 使用队列作为任务和它调用的服务之间的缓冲区,以平滑间歇性重负载。 Reliability,

Messaging,

Resiliency,

Performance Efficiency
Retry 通过透明地重试以前失败的操作,使应用程序能够在尝试连接到服务或网络资源时处理预期的临时故障。 Reliability
Scheduler Agent Supervisor 跨一组分布式服务和其他远程资源协调一组操作。 Messaging,

Reliability
Sequential Convoy 以定义的顺序处理一组相关的消息,而不阻塞其他组消息的处理。 Messaging
Sharding 将数据存储划分为一组水平分区或分片。 Data Management,

Performance Efficiency
Sidecar 将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装。 Design and Implementation,

Operational Excellence
Static Content Hosting 将静态内容部署到基于云的存储服务,该服务可以将它们直接交付给客户端。 Design and Implementation,

Data Management,

Performance Efficiency
Strangler Fig 通过逐渐用新的应用程序和服务替换特定的功能,逐步迁移遗留系统。 Design and Implementation,

Operational Excellence
Throttling 控制应用程序实例、单个租户或整个服务使用的资源消耗。 Reliability,

Performance Efficiency
Valet Key 使用为客户端提供对特定资源或服务的受限直接访问的令牌或密钥。 Data Management,

Security
相关文章
|
5天前
|
设计模式 Java API
Java 可扩展 API 设计:打造灵活的应用架构
【4月更文挑战第27天】设计可扩展的 API 是构建灵活、易于维护的应用程序架构的关键。Java 提供了丰富的工具和技术来实现这一目标,使开发者能够构建具有高度可扩展性的应用程序。
23 4
|
2天前
|
Cloud Native 安全 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第1天】 随着数字化转型的深入,云原生技术以其灵活性、可扩展性和敏捷性成为现代企业IT架构的核心。本文将探讨云原生架构的关键组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps实践,并分析它们如何共同塑造企业的运营模式。同时,文章还将讨论在采纳云原生过程中企业可能遇到的挑战,如安全性问题、技术复杂性以及组织文化的转变,并提出应对策略。
16 8
|
3天前
|
前端开发 JavaScript 安全
【TypeScript技术专栏】TypeScript在微前端架构中的应用
【4月更文挑战第30天】微前端架构通过拆分应用提升开发效率和降低维护成本,TypeScript作为静态类型语言,以其类型安全、代码智能提示和重构支持强化这一架构。在实践中,TypeScript定义公共接口确保跨微前端通信一致性,用于编写微前端以保证代码质量,且能无缝集成到构建流程中。在微前端架构中,TypeScript是保障正确性和可维护性的有力工具。
|
4天前
|
Cloud Native Devops 持续交付
构建未来应用:云原生架构在现代企业中的实践与挑战
【4月更文挑战第29天】 随着数字化转型的加速,企业正迅速转向云计算以支撑其业务敏捷性和创新。云原生技术,作为推动这一转型的关键因素,正在重新定义软件开发和运维模式。本文将深入探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps文化,并分析这些技术如何帮助企业实现弹性、可扩展和高效的应用部署。同时,我们将讨论在采纳云原生实践中所面临的挑战,包括安全性、治理和人才缺口等问题。
|
4天前
|
消息中间件 PHP 数据库
【PHP开发专栏】PHP在微服务架构中的应用
【4月更文挑战第29天】微服务架构将大型应用拆分成独立小服务,PHP在其中可作为API网关、微服务提供者,参与服务发现、消息队列处理和事件驱动。最佳实践包括选择合适PHP框架、使用容器化技术、定义服务契约、采用分布式缓存、实现服务发现、监控和日志收集、优化数据库设计以及注重安全性。遵循这些实践,PHP开发者能构建高效、可扩展的微服务应用。
|
4天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【4月更文挑战第29天】 随着数字化转型的不断深入,企业的IT架构正经历着根本性的变革。云原生技术以其独特的弹性、可扩展性和敏捷性成为这一转型的关键驱动力。本文将探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps实践,并分析这些技术如何帮助企业实现快速迭代和高效运营。同时,我们也将识别在采纳云原生技术过程中可能遇到的挑战,并提出相应的解决策略。通过实际案例分析,本文旨在为决策者提供实施云原生架构的洞见,以加速其业务创新和市场响应速度。
|
4天前
|
Cloud Native 安全 Devops
构建未来:云原生架构在现代企业中的应用与挑战
【4月更文挑战第29天】 随着数字化转型的不断深入,云原生架构已成为支撑企业敏捷性、可扩展性和创新能力的关键。本文将深入探讨云原生技术的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps文化,并分析其在不断变化的商业环境中实现快速迭代和资源优化的能力。同时,文章还将讨论企业在采纳云原生架构时面临的挑战,如技术选型、团队技能培养、安全性考虑及成本管理,并提出相应的解决策略。
|
4天前
|
运维 Cloud Native Devops
构建未来应用:云原生架构的演进与实践
【4月更文挑战第29天】在数字化转型的浪潮中,企业亟需灵活、高效的技术支撑来应对市场的快速变化。云原生架构以其独特的设计理念和技术栈,成为推动这一变革的关键力量。本文深入探讨了云原生的核心概念、关键技术和实施策略,旨在为企业提供一个清晰的云原生转型蓝图,助力其构建更加动态、可扩展的应用系统。
|
4天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【4月更文挑战第29天】 随着数字化转型的加速,云原生技术正成为推动企业IT架构现代化的关键力量。本文深入探讨了云原生架构的核心组件、实施策略以及面临的主要挑战。通过分析容器化、微服务、DevOps和持续集成/持续部署(CI/CD)等关键技术,揭示了云原生架构如何助力企业提高敏捷性、优化资源利用和加强安全性。文中还将提供针对企业在采用云原生实践中遇到的难题,如服务治理、复杂性和技能缺口等,提出切实可行的解决方案。
|
4天前
|
Kubernetes Cloud Native 持续交付
构建未来:云原生架构在现代企业中的应用与实践
【4月更文挑战第29天】 随着数字化转型的浪潮席卷各行各业,企业对于信息技术基础设施的要求日益提高。传统的IT架构已难以满足快速迭代、灵活扩展和持续创新的需求。本文聚焦于云原生架构,一种为云计算环境量身打造的设计理念和技术集合,旨在帮助企业构建更加灵活、可靠和高效的系统。通过对云原生核心组件的解析、实施策略的探讨以及成功案例的分析,我们揭示了云原生架构如何助力企业在竞争激烈的市场中保持领先地位。