【云应用架构】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
相关文章
|
15天前
|
运维 持续交付 开发工具
深入浅出:GitOps在微服务架构中的应用
【10月更文挑战第26天】本文深入探讨了GitOps在微服务架构中的应用,介绍了其核心理念、自动化部署流程和增强的可观测性。通过实例展示了GitOps如何简化服务部署、配置管理和故障恢复,并推荐了一些实用工具和开发技巧。
|
6天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
6天前
|
网络协议 数据挖掘 5G
适用于金融和交易应用的低延迟网络:技术、架构与应用
适用于金融和交易应用的低延迟网络:技术、架构与应用
31 5
|
7天前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
5天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
5天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
13天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
52 1
|
15天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
51 1
|
18天前
|
前端开发 API UED
深入理解微前端架构:构建灵活、高效的前端应用
【10月更文挑战第23天】微前端架构是一种将前端应用分解为多个小型、独立、可复用的服务的方法。每个服务独立开发和部署,但共同提供一致的用户体验。本文探讨了微前端架构的核心概念、优势及实施方法,包括定义服务边界、建立通信机制、共享UI组件库和版本控制等。通过实际案例和职业心得,帮助读者更好地理解和应用微前端架构。

热门文章

最新文章

  • 1
    C++一分钟之-设计模式:工厂模式与抽象工厂
    42
  • 2
    《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
    46
  • 3
    C++一分钟之-C++中的设计模式:单例模式
    54
  • 4
    《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
    38
  • 5
    《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
    62
  • 6
    Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
    57
  • 7
    Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
    41
  • 8
    Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
    50
  • 9
    Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
    106
  • 10
    Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
    78