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

架构风格是一系列具有某些共同特征的架构。例如,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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

XUbuntu22.04之npm解决pm WARN deprecated(一百九十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

103基于matlab的极限学习机(ELM)和改进的YELM和集成极限学习机(EELM)是现在流行的超强学习机

基于matlab的极限学习机(ELM)和改进的YELM和集成极限学习机(EELM)是现在流行的超强学习机,该程序是三者的方法比对。 包括学习时间,训练精度和测试精度的对比。数据可更换自己 的,程序已调通,可直接运行…

『踩坑记录』IDEA Spring initialzr新建Spring项目不能选择jdk8的解决方法

问题描述 Spring initializr新建Spring项目不能选低版本java 解决方法 默认官方start.spring.io已不支持自动生成低版本jkd的Spring项目,自定义用阿里云的starter即可 用阿里云的就能支持低版本jdk了 完 欢迎关注我的CSDN博客 :Ho1aAs 版权属于&a…

vscode 同步插件

vscode 扩展商店链接 https://marketplace.visualstudio.com/vscode settings sync 插件

【SpringBoot篇】基于布隆过滤器,缓存空值,解决缓存穿透问题 (商铺查询时可用)

文章目录 🍔什么是缓存穿透🎄解决办法⭐缓存空值处理🎈优点🎈缺点🎍代码实现 ⭐布隆过滤器🎍代码实现 🍔什么是缓存穿透 缓存穿透是指在使用缓存机制时,大量的请求无法从缓存中获取…

Flutter 打包 iOS 苹果 IPA 应用有哪些优势?如何实现?

经常和移动应用开发相关的话题打交道的伙伴们都知道。在开发移动应用时,选择合适的打包方式对于应用的发布和分发至关重要。在今天这篇文章中,我将和大家聊聊 Flutter 打包 iOS 苹果 IPA 应用的优势,并分享一些使用 Flutter 打包 ios 苹果 ip…

占位图片(Placeholder Image)

一、引言 在网页设计和开发中,占位图片(Placeholder Image)是一种常见的技术手段,用于在用户上传图片之前或者图片加载失败时,展示一个临时替代的图片,以提高用户体验。本文将详细介绍占位图片的实现原理和…

wvp-GB28181-pro 2.0+ZLMediaKit 使用Dockerfile制作镜像以及部署【CentOS7】

说明 部署gb28181和zlm主要需要构建两个镜像,第一个为基础镜像,以centos7为基础构建新的基础镜像base.Dockerfile,第二个镜像为服务部署镜像server.Dockerfile,以第一个镜像base.Dockerfile构建出的镜像为基础镜像进行构建 整个基础镜像的构…

ios苹果app应用程序录屏开发有哪些难点和注意点?

Hello,各位同学们好,我是咕噜铁蛋,老朋友们应该知道我经常关注并分享各种移动应用开发的技术和经验。在这篇文章中,铁蛋将为大家介绍分享苹果iOS录屏开发的难点和注意点! 首先,让我们简单了解一下iOS录屏的…

Unity中Shader URP最简Shader框架(整理总结篇)

文章目录 前言一、精简 ShaderGraph 所有冗余代码后的最简 URP Shader二、我们来对比一下 URP Shader 与 BuildInRP Shader 的对应关系 与 区别1、"RenderPipeline""UniversalPipeline"2、面片剔除、深度测试、深度写入、颜色混合 和 BRP 下一致3、必须引入…

案例课7——百度智能客服

1.公司介绍 百度智能客服是百度智能云推出的将AI技术赋能企业客服业务的一揽子解决方案。该方案基于百度世界先进的语音技术、自然语言理解技术、知识图谱等构建完备的一体化产品方案,结合各行业头部客户丰富的运营经验,持续深耕机场服务、电力调度等场…

大数据技术12:Hive简介及核心概念

前言:2007年,编写Pig虽然比MapReduce编程简单,但是还是要学习。于是Facebook发布了Hive,支持使用SQL语法进行大数据计算,写个Select语句进行数据查询,Hive会将SQL语句转化成MapReduce计算程序。这样&#x…

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

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

什么是POM设计模式?

为什么要用POM设计模式 前期,我们学会了使用PythonSelenium编写Web UI自动化测试线性脚本 线性脚本(以快递100网站登录举栗): import timefrom selenium import webdriver from selenium.webdriver.common.by import Bydriver …

【普中】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频)

【普中开发板】基于51单片机简易计算器数码管显示设计( proteus仿真程序实物演示讲解视频) Proteus 仿真:Proteus 8.16(有低版本) 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:P04 1. 主要功能&#xff1a…

详解RTC:以华人文化打造链上生态

文化是人类在发展的历史长河中淘洗出来的智慧结晶,随着人类社会的进步和变迁,经历了从口口相传到互联网等不同历史时代的传承和创新。在数字技术飞速发展的当今,区块链技术为文化的创新与传承提供了全新的空间和方式,使其得以在新…

UDP特性之组播(多播)

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

Java使用Microsoft Entra微软 SSO 认证接入

1. Microsoft Entra Microsoft Entra ID 是基于云的标识和访问管理服务,可帮助员工访问外部资源。 示例资源包括 Microsoft 365、Azure 门户以及成千上万的其他 SaaS 应用程序。 Microsoft Entra ID 还可帮助他们访问你的企业 Intranet 上的应用等内部资源&#x…

Xcode编写基于C++的动态连接库(dylib)且用node-ffi-napi测试

创建一个dylib工程示例 在 Xcode 中创建一个动态链接库(.dylib 文件)的步骤如下: 打开 Xcode: 打开 Xcode 应用程序。 创建新的工程: 选择 "Create a new Xcode project",或者使用菜单 File &g…

DHTMLX Suite v8.3发布!深化JavaScript UI小部件库使用体验

DHTMLX UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件,这些组件可以轻松组合到单个应用程序界面中。 DHTMLX Suite v8.3已于近日正式发布啦!这个更新附带了一组新特性和改进,旨在促进您…