「Azure架构风格」Azure云不同的 架构风格

news2024/9/23 1:36:42

架构风格是一系列具有某些共同特征的架构。例如,n层是一种常见的体系结构样式。最近,微服务体系结构开始受到青睐。架构风格不需要使用特定的技术,但是有些技术非常适合特定的架构。例如,容器自然适合于微服务。

我们已经确定了一组在云应用程序中常见的体系结构样式。每种风格的文章包括:

  1. 样式的描述和逻辑关系图。

  2. 建议何时选择这种风格。

  3. 好处、挑战和最佳实践。

  4. 推荐使用相关Azure服务进行部署。

快速浏览一下这些风格

本节将快速介绍我们已经确定的体系结构样式,以及使用它们的一些高级注意事项。阅读相关主题的更多细节。

n层

n层是企业应用程序的传统体系结构。依赖项是通过将应用程序划分为执行逻辑功能(如表示、业务逻辑和数据访问)的层来管理的。一个层只能调用它下面的层。然而,这种水平分层可能是一种不利因素。在不触及应用程序其余部分的情况下,在应用程序的一部分中引入更改是很困难的。这使得频繁的更新成为一个挑战,限制了新功能添加的速度。

N-tier非常适合迁移已经使用分层架构的现有应用程序。由于这个原因,n层最常出现在基础设施即服务(IaaS)解决方案中,或使用IaaS和托管服务组合的应用程序中。

Web-Queue-Worker

对于纯粹的PaaS解决方案,可以考虑web队列工作人员体系结构。在这种风格中,应用程序有一个处理HTTP请求的web前端和一个执行cpu密集型任务或长时间运行操作的后端工作者。前端通过异步消息队列与工作人员通信。

Web-queue-worker适用于一些相对简单的域,这些域具有一些资源密集型任务。与n层一样,体系结构很容易理解。托管服务的使用简化了部署和操作。但是对于复杂的域,可能很难管理依赖关系。前端和工作人员很容易变成大型的、难以维护和更新的单片组件。与N-tier一样,这可以减少更新频率并限制创新。

Microservices

如果您的应用程序具有更复杂的域,则考虑迁移到微服务体系结构。微服务应用程序由许多小型的独立服务组成。每个服务实现单个业务功能。服务是松散耦合的,通过API契约进行通信。

每个服务都可以由一个小型的、专注的开发团队构建。单个服务的部署不需要团队之间的大量协调,这鼓励了频繁的更新。微服务体系结构的构建和管理比n层或web队列工作人员更复杂。它需要成熟的开发和DevOps文化。但是如果处理得当,这种风格可以导致更高的发布速度、更快的创新和更有弹性的架构。

事件驱动架构

事件驱动的体系结构使用发布-订阅(发布-订阅)模型,生产者发布事件,消费者订阅事件。生产者独立于消费者,消费者相互独立。

考虑一个事件驱动的架构,用于以极低延迟摄取和处理大量数据的应用程序,如IoT解决方案。当不同的子系统必须对相同的事件数据执行不同类型的处理时,这种样式也很有用。

大数据,大计算

大数据和大计算是适用于特定配置文件的特定工作负载的特定体系结构样式。大数据将非常大的数据集划分为块,在整个集合上执行并行处理,用于分析和报告。大计算,也称为高性能计算(HPC),在大量(数千个)核上进行并行计算。领域包括模拟、建模和3-D渲染。

作为约束的体系结构样式

体系结构样式对设计施加约束,包括可以出现的元素集和这些元素之间允许的关系。约束通过限制选择的范围来指导架构的“形状”。当架构符合特定样式的约束时,就会出现某些需要的属性。

例如,微服务的约束包括:

  1. 服务代表单一职责。

  2. 每一种服务都是相互独立的。

  3. 数据对于拥有它的服务是私有的。服务不共享数据。

通过遵守这些约束,出现的是一个可以独立部署服务、隔离故障、可能频繁更新并且很容易将新技术引入应用程序的系统。

在选择体系结构样式之前,请确保了解该样式的基本原则和约束。否则,您可能最终得到的设计在表面上符合该风格,但并没有实现该风格的全部潜力。务实也很重要。有时候,放松约束比坚持建筑的纯粹性更好。

下表总结了每种样式如何管理依赖项,以及最适合每种样式的域类型。

架构风格依赖关系管理
N层按子网划分的水平层传统的业务领域。更新频率低

Web

-Queue-

Worker

前端和后端作业,通过

异步消息传递解耦

相对简单的领域与一些资

源密集型任务。

微服务

垂直(功能上)分解的服务通

过api相互调用。

复杂的领域。频繁的更新
事件驱动架构

生产者/消费者。每个子系

统的独立视图

物联网和实时系统
大数据

将一个庞大的数据集分

割成小块。局部数据集

的并行处理。

批量和实时数据分析。

使用ML进行预测分析。

大计算数据分配给数千个核心.计算密集领域,如仿真。 

考虑挑战和好处

约束也会带来挑战,因此在采用任何一种样式时,理解其中的利弊是很重要的。对于这个子域和有限的上下文,体系结构风格的好处是否大于挑战?

以下是一些选择架构风格时需要考虑的挑战类型:

  1. 复杂性。体系结构的复杂性是否适合您的领域?相反,这种风格对您的域来说太简单了吗?在这种情况下,您可能会得到一个“大泥球”,因为体系结构不能帮助您干净地管理依赖项。

  2. 异步消息传递和最终的一致性。异步消息传递可以用来解耦服务,提高可靠性(因为消息可以重试)和可伸缩性。然而,这也给处理最终的一致性以及重复消息的可能性带来了挑战。

  3. 服务间的通信。在将应用程序分解为单独的服务时,存在这样的风险:服务之间的通信将导致不可接受的延迟或造成网络拥塞(例如,在微服务体系结构中)。

  4. 可管理性。管理应用程序、监视、部署更新等有多难?

本文 :https://architect.pub/problem-docker-and-alpines-package-pinning
讨论:知识星球【首席架构师圈】或者加微信小号【ca_cto】或者加QQ群【792862318】
公众号

【jiagoushipro】
【架构师酒馆】
精彩图文详解架构方法论,架构实践,技术原理,技术趋势。
我们在等你,赶快扫描关注吧。
f8f54420549cf94c6821f6131f6779d8.jpeg
微信小号

【ca_cea】
50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化.

3dfffd7d5c8f998395fbfae63f57c2ac.jpeg

QQ群

【285069459】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。
加QQ群,有珍贵的报告和干货资料分享。

bf87bb8a023253ea1313fb4eace4a3a5.jpeg

视频号【架构师酒馆】
1分钟快速了解架构相关的基本概念,模型,方法,经验。
每天1分钟,架构心中熟。

bf649454bfa6ee06667ff8acc081b82d.jpeg

知识星球【首席架构师圈】向大咖提问,近距离接触,或者获得私密资料分享。

0574dde355fa49ccb91f3d2455be15e0.jpeg

喜马拉雅【超级架构师】路上或者车上了解最新黑科技资讯,架构心得。【智能时刻,架构君和你聊黑科技】
知识星球认识更多朋友,职场和技术闲聊。知识星球【职场和技术】
微博【架构师酒馆】智能时刻
哔哩哔哩【架构师酒馆】

3e754016ff6d8c2e35ab9664d583a1f6.jpeg

抖音【cea_cio】架构师酒馆

7865b19e209cb6a1a55b79057a0ea3ff.jpeg

快手【cea_cio_cto】架构师酒馆

c29c9407cd48080d12cefaa12cc7a408.jpeg

小红书【cea_csa_cto】架构师酒馆

8a1e7be61e93e559e1dd30462be128c8.jpeg

网站CIO(首席信息官)https://cio.ceo
网站CIO,CTO和CDOhttps://cioctocdo.com
网站架构师实战分享https://architect.pub   
网站程序员云开发分享https://pgmr.cloud
官网行天智能科技咨询公司https://xingtian.ai
网站开发者闲谈https://blog.developer.chat
网站CPO工作宝典https://cpo.work
网站首席安全官https://cso.pub    
网站CIO酷https://cio.cool
网站CDO信息https://cdo.fyi
网站CXO信息https://cxo.pub
网站首席架构师社区https://jiagoushi.pro

谢谢大家关注,转发,点赞和点在看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1311483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回溯算法第三篇(批处理作业调度、N皇后【基于排列树实现】、符号三角形问题)

目录 1. 批处理作业调度 2. N皇后【基于排列树实现】 3. 符号三角形问题 1. 批处理作业调度 题目描述:给定n个作业的集合 。每个作业 都有两项任务分别在两台机器上完成。每个作业必须先由机器1处理,再由机器2处理。作业 需要机器j的处理时间为 。对…

大数据技术13:HBase分布式列式数据库

前言:2007年Powerset的工作人员,通过google的论文开发出了BigTable的java版本,即HBASE。2008年HBASE贡献给了Apache。HBase 需要依赖 JDK 环境。 一、Hadoop的局限 HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。 要想…

实验03:OSPF配置网络实验

1.实验目的: 本实验的主要目的是了解OSPF协议的基本概念、OSPF网络的配置及验证,通过实验来掌握OSPF协议的工作原理、配置方法、路由表的生成过程等。 2.实验内容: 设计一个拓扑结构,并在网络设备上进行配置;配置OS…

2019年第八届数学建模国际赛小美赛C题预测通过拥堵路段所需的时间解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 C题 预测通过拥堵路段所需的时间 原题再现: 在导航软件中,行程时间的估计往往是一个重要的功能。现有的导航软件往往通过出租车或安装了该软件的车辆获取实时GPS数据来确定当前的路况。在交通拥堵严重的情况下&#…

实验5:NAT配置

1.实验目的: 了解NAT的基本概念和功能 掌握NAT的配置方法和命令 观察和分析NAT的工作原理和流程 2.实验内容: 在路由器上配置静态NAT,实现内网主机通过公网IP地址访问外网服务器在路由器上配置动态NAT,实现内网主机通过公网I…

解决IDEA自动生成返回值带有final修饰的问题

解决自动生成返回值带有final修饰的问题。 快捷键是CtrlAltV,然后会出现final修饰。 怎么办呢? 点击右上角的“设置”图标,将下面的两个框取消勾选,然后回车即可。 以后就可以直接使用快捷键来自动生成返回值啦~ public class K…

UDP特性之组播(多播)

UDP特性之组播 1. 组播的特点2. 设置主播属性2.1 发送端2.2 接收端 3. 组播通信流程3.1 发送端3.2 接收端 4. 通信代码 原文链接 在公司测试广播和多播有一点问题。。。 1. 组播的特点 组播也可以称之为多播这也是UDP的特性之一。组播是主机间一对多的通讯模式,是…

深度学习面试题-05

scikit-learn是什么工具? scikit-learn学习 scikit-learn(sklearn)是一个用于机器学习的Python库,提供了许多用于数据挖掘和数据分析的工具。它建立在NumPy、SciPy和matplotlib等科学计算库的基础上,并提供了简单而有…

hive聚合函数之排序

1 全局排序(Order By) Order By:全局排序,只有一个Reduce。 (1).使用Order By子句排序 asc(ascend):升序(默认) desc(descend)&#…

qt-C++笔记之std::tostring()、.toStdString()、.toLocal8Bit().constData()的使用场景

qt-C笔记之std::tostring()、.toStdString()、.toLocal8Bit().constData()的使用场景 参考博文:C笔记之system()用于在Qt中执行系统命令的习惯 code review! 注:之所以记录该笔记,是因为在Qt中自己经常使用C语言的int system( const char …

Python PDF转DOCX文档

第三方包:pdf2docx from pdf2docx import Converterdef convert_pdf_to_docx(pdf_path, docx_path):# 创建一个转换器对象converter Converter(pdf_path)# 将PDF转换为DOCXconverter.convert(docx_path, start0, endNone)# 关闭转换器converter.close()# 调用函数…

实验01:静态路由配置实验

1.实验目的: 本次实验的主要目的是了解静态路由的配置和实现原理,熟悉路由器的基本操作,掌握在网络中进行静态路由配置的方法和技巧。 2.实验内容: 搭建网络拓扑,包括三台路由器和两台PC。配置路由器的IP地址和路由…

WPF-UI HandyControl 简单介绍

文章目录 前言我的网易云专栏和Gitee仓库HandyControlHandyControl示例相关资源地址 我的运行环境快速开始和Material Design功能对比手风琴右键菜单自动补充滚动条轮播图消息通知步骤条托盘按钮 结尾 前言 最近我在研究如何使用WPF做一个比较完整的项目,然后我就先…

LeetCode Hot100 146.LRU缓存

题目: 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&…

Python文本信息解析:从基础到高级实战‘[pp]]‘[

更多Python学习内容:ipengtao.com 大家好,我是彭涛,今天为大家分享 Python文本信息解析:从基础到高级实战,全文3600字,阅读大约10分钟。 文本处理是Python编程中一项不可或缺的技能,覆盖了广泛的…

软件测评中心 ▏科技项目验收测试流程和注意事项简析

科技项目验收测试是指对已开发完成的科技项目进行测试和评估,以确认其达到预期的功能和性能要求,保证项目的质量和可靠性。 一、科技项目验收测试的流程一般包括以下几个阶段:   1、需求分析和测试计划:在开始测试前&#xff0…

Power BI案例-连锁糕点店数据集的仪表盘制作

Power BI案例-连锁糕点店数据集的仪表盘制作 数据集描述 有一个数据集,包含四张工作簿,每个工作簿是一张表,其中可以销售表可以划分为事实表,产品表,日期表和门店表为维度表。 工作簿名称、字段含义和数据集的对应关…

Java入门学习笔记二

一、抽象类 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的行为方式,那么这些方法都有具体的方法体。 分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是功…

《一书读懂物联网》前言

我们对知识的认知是有规律可循的,大都是从问题开始,对问题的界定、归纳等都是为解决知识增长或进化而服务的,正如波普尔知识进化图(见图 i-1)所示的那样。 科学始于问题,发现问题是科学知识增长的起点&…

从开源项目中学习如何自定义 Spring Boot Starter 小组件

前言 今天参考的开源组件Graceful Response——Spring Boot接口优雅响应处理器。 具体用法可以参考github以及官方文档。 基本使用 引入Graceful Response组件 项目中直接引入如下maven依赖&#xff0c;即可使用其相关功能。 <dependency><groupId>com.feiniaoji…