什么是软件架构

一、想成为一个合格的架构师,你要知道软件架构是个什么概念,明白架构的定义:

1.软件架构是一个系统的草图。

2.软件架构描述的对象是直接构成系统的抽象组件。

3.各个组件之间的连接则明确和相对细致地描述组件之间的通讯。

4.在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。

5.在面向对象领域中,组件之间的连接通常用接口来实现。

二、架构师有细分,基本上可以分为三类:

1. 系统架构师:服务器负载,可靠性,伸缩,扩展,数据库切分,缓存应用等

2. 应用架构师:理解业务,梳理模型,设计模式,接口,数据交互等

3. 业务架构师:也可以叫业务领域专家、行业专家、产品咨询师、资深顾问通常我们说的架构师是1和2的结合


三、常见软件架构分类:

1)分层架构

分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道要用什么架构,那就用它。

这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。

虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。

  • 表现层(presentation):用户界面,负责视觉和用户互动
  • 业务层(business):实现业务逻辑
  • 持久层(persistence):提供数据,SQL 语句就放在这一层
  • 数据库(database) :保存数据

有的软件在逻辑层和持久层之间,加了一个服务层(service),提供不同业务逻辑需要的一些通用接口。

用户的请求将依次通过这四层的处理,不能跳过其中任何一层。

优点

  • 结构简单,容易理解和开发
  • 不同技能的程序员可以分工,负责不同的层,天然适合大多数软件公司的组织架构
  • 每一层都可以独立测试,其他层的接口通过模拟解决

缺点

  • 一旦环境变化,需要代码调整或增加功能时,通常比较麻烦和费时
  • 部署比较麻烦,即使只修改一个小地方,往往需要整个软件重新部署,不容易做持续发布
  • 软件升级时,可能需要整个服务暂停
  • 扩展性差。用户请求大量增加时,必须依次扩展每一层,由于每一层内部是耦合的,扩展会很困难

2)事件驱动架构

事件(event)是状态发生变化时,软件发出的通知。

事件驱动架构(event-driven architecture)就是通过事件进行通信的软件架构。它分成四个部分。

  • 事件队列(event queue):接收事件的入口
  • 分发器(event mediator):将不同的事件分发到不同的业务逻辑单元
  • 事件通道(event channel):分发器与处理器之间的联系渠道
  • 事件处理器(event processor):实现业务逻辑,处理完成后会发出事件,触发下一步操作

对于简单的项目,事件队列、分发器和事件通道,可以合为一体,整个软件就分成事件代理和事件处理器两部分。

优点

  • 分布式的异步架构,事件处理器之间高度解耦,软件的扩展性好
  • 适用性广,各种类型的项目都可以用
  • 性能较好,因为事件的异步本质,软件不易产生堵塞
  • 事件处理器可以独立地加载和卸载,容易部署

缺点

  • 涉及异步编程(要考虑远程通信、失去响应等情况),开发相对复杂
  • 难以支持原子性操作,因为事件通过会涉及多个处理器,很难回滚
  • 分布式和异步特性导致这个架构较难测试

3)微核架构

微核架构(microkernel architecture)又称为"插件架构"(plug-in architecture),指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现。

内核(core)通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信,应该减少到最低,避免出现互相依赖的问题。

优点

  • 良好的功能延伸性(extensibility),需要什么功能,开发一个插件即可
  • 功能之间是隔离的,插件可以独立的加载和卸载,使得它比较容易部署,
  • 可定制性高,适应不同的开发需要
  • 可以渐进式地开发,逐步增加功能

缺点

  • 扩展性(scalability)差,内核通常是一个独立单元,不容易做成分布式
  • 开发难度相对较高,因为涉及到插件与内核的通信,以及内部的插件登记机制

4)微服务架构

微服务架构(microservices architecture)是服务导向架构(service-oriented architecture,缩写 SOA)的升级。

每一个服务就是一个独立的部署单元(separately deployed unit)。这些单元都是分布式的,互相解耦,通过远程通信协议(比如REST、SOAP)联系。

微服务架构分成三种实现模式。

  • RESTful API 模式:服务通过 API 提供,云服务就属于这一类
  • RESTful 应用模式:服务通过传统的网络协议或者应用协议提供,背后通常是一个多功能的应用程序,常见于企业内部
  • 集中消息模式:采用消息代理(message broker),可以实现消息队列、负载均衡、统一日志和异常处理,缺点是会出现单点失败,消息代理可能要做成集群

优点

  • 扩展性好,各个服务之间低耦合
  • 容易部署,软件从单一可部署单元,被拆成了多个服务,每个服务都是可部署单元
  • 容易开发,每个组件都可以进行持续集成式的开发,可以做到实时部署,不间断地升级
  • 易于测试,可以单独测试每一个服务

缺点

  • 由于强调互相独立和低耦合,服务可能会拆分得很细。这导致系统依赖大量的微服务,变得很凌乱和笨重,性能也会不佳。
  • 一旦服务之间需要通信(即一个服务要用到另一个服务),整个架构就会变得复杂。典型的例子就是一些通用的 Utility 类,一种解决方案是把它们拷贝到每一个服务中去,用冗余换取架构的简单性。
  • 分布式的本质使得这种架构很难实现原子性操作,交易回滚会比较困难。

5)云架构

云结构(cloud architecture)主要解决扩展性和并发的问题,是最容易扩展的架构。

它的高扩展性,主要原因是没使用中央数据库,而是把数据都复制到内存中,变成可复制的内存数据单元。然后,业务处理能力封装成一个个处理单元(prcessing unit)。访问量增加,就新建处理单元;访问量减少,就关闭处理单元。由于没有中央数据库,所以扩展性的最大瓶颈消失了。由于每个处理单元的数据都在内存里,最好要进行数据持久化。

这个模式主要分成两部分:处理单元(processing unit)和虚拟中间件(virtualized middleware)。

  • 处理单元:实现业务逻辑
  • 虚拟中间件:负责通信、保持sessions、数据复制、分布式处理、处理单元的部署。

虚拟中间件又包含四个组件。

  • 消息中间件(Messaging Grid):管理用户请求和session,当一个请求进来以后,决定分配给哪一个处理单元。
  • 数据中间件(Data Grid):将数据复制到每一个处理单元,即数据同步。保证某个处理单元都得到同样的数据。
  • 处理中间件(Processing Grid):可选,如果一个请求涉及不同类型的处理单元,该中间件负责协调处理单元
  • 部署中间件(Deployment Manager):负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,就新启动处理单元,负载减少,就关闭处理单元。

优点

  • 高负载,高扩展性
  • 动态部署

缺点

  • 实现复杂,成本较高
  • 主要适合网站类应用,不合适大量数据吞吐的大型数据库应用
  • 较难测试
马小瑄
关注 关注
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【软件开发与系统知识】应用架构、业务架构、技术架构和业务流程图详解「建议收藏」
在红尘中争渡
01-05 1万+
应用架构(ApplicationArchitecture)是描述了IT系统功能和技术实现的内容。应用架构分为以下两个不同的层次:企业级的应用架构和单个系统的应用架构。企业级的应用架构:企业层面的应用架构起到了统一规划、承上启下的作用,向上承接了企业战略发展方向和业务模式,向下规划和指导企业各个IT系统的定位和功能。单个系统的应用架构:在开发或设计单一IT系统时,设计系统的主要模块和功能点。
软件架构设计---软件架构概述
热门推荐
hu19930613的博客
09-17 6万+
像学写文章一样,在学会字、词、句之后,就应上升到段落,就应追求文章的“布局谋篇”,这就是架构。通俗地讲,软件架构设计就是软件系统的“布局谋篇”。 人们在软件工程实践中,逐步认识到了软件架构的重要性,从而开辟了一个崭新的研究领域。软件架构的研究内容主要涉及软件架构描述、软件架构设计、软件架构风格、软件架构评价和软件架构的形成方法等。 软件设计人员学习软件架构知识旨在站在...
软件架构】软件的十二种架构简介
最新发布
weixin_46453070的博客
03-26 1857
微内核架构区分了基本的系统功能和可扩展的应用功能,核心系统提供最基本的操作,而其他功能则通过插件或模块的形式添加。这种架构的关键在于一个小型的内核负责提供最基础和通用的功能(如低级内存管理、设备驱动等),而更高级的功能(如用户界面、应用程序等)则作为独立的组件或服务存在,这些组件在运行时与微内核通信。在选择架构时,重要的是要根据项目的具体需求、团队的能力、预期的系统规模和性能要求来决定最适合的架构模式。每种架构风格都有其优势和局限性,选择哪一种架构取决于具体的项目需求、团队的技能以及系统未来的发展方向。
什么是软件架构?常用的软件架构
qq_41854911的博客
08-13 8666
软件架构所指的就是说相应的系列性的抽象模式,可以为设计大型软件系统的各个方面提供相应的指导。从本质上来看,软件架构是属于一种系统草图。在软件架构所描述的对象就是直接的进行系统抽象组件构成。连接系统的各个组件之间就是做到把组件之间所存在的通讯比较明确与相对细致的实施描述。处于相应的系统实现环节,那么就会使得细化这些抽象组件成为现实的组件,比如可以是具体的某个类或者是对象。从面向对象领域进行分析,那么各个组件之前实施的连接实现往往是接口。...
软件架构常用设计
shaderdx的专栏
03-25 6837
常用系统架构设计
软件架构
专注Java(全栈)应用开发,求知若渴,虚心若愚,而知也无涯
12-29 458
一、想成为一个合格的架构师,你要知道软件架构是个什么概念,明白架构的定义: 1.软件架构是一个系统的草图。 2.软件架构描述的对象是直接构成系统的抽象组件。 3.各个组件之间的连接则明确和相对细致地描述组件之间的通讯。 4.在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。 5.在面向对象领域中,组件之间的连接通常用接口来实现。 二、架构师有细分,基本上可...
软件架构
qq_46080708的博客
01-09 989
软件架构 软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件体系结构是构建计算机软件实践的基础。 以上是百度百科对于软件架构的一词的解释。任何一套软件系统都离不开软架构,就比如一座高楼大厦的建造离不开其设计图纸 。软件架构的发展经历了由单体架构、垂直架构、SOA架构到微服务架构的演变过程。下面我们就来简要概述以上四种软件架构。 单体架构 ...
软件架构介绍
云原生Java Web领域技术博客
06-19 4874
架构显然很重要。许多开发人员的目标是成为一名架构师。但什么是架构,为什么架构如此重要?为了回答这个问题,这里首先定义软件架构的含义。然后,讨论应用程序的架构是多维的,并使用一组视图或蓝图进行描述。接着,本文将强调软件架构的重要性,因为它对应用程序的质量有显著的影响。 ...
软件架构的定义及其理解
铁匠Smith先生的专栏
05-14 1万+
一、定义           所谓软件架构,指的是软件系统的整体结构,包括软件子元素,这些元素的外部属性以及元素元素之间的关系。 这个定义包含了以下三层意思:         (1)软件架构是对系统的抽象。它不仅规定了系统有哪些主要软件元素或模块,还定义了这些元素之间是如何交互的。它并不暴露每个元素的内部属性(也叫局部信息),也就是说每个子模块的私有信息是不划归到软件架构的范畴的。需要注意的
软件架构基本概念
qq_38179583的博客
10-11 1万+
软件架构(software architecture) 学习笔记,内容来自网络,橙色为自己总结,如有错误还请指正。 目录 软件架构(software architecture) 一、架构的定义 二、软件架构定义 三、架构的种类 逻辑架构:软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口、商业逻辑元件等 物理架构:软件元件是怎样放到硬件上的 系统架构系统的非功能性特征,如可扩展性、强壮性、灵活性、可靠性、性能等 四、架构的表现形式----4+1视图 逻辑视图(Logic V
什么是软件架构
02-27
本文来自于RationalEdge:这篇关于软件架构的较新规则的介绍,是一个关于“架构”的四篇系列文章的的第一篇。作者以定义规则的关键术语开始,继续探索设计出色的架构对于架构所部署的环境所起的作用。我们毫不怀疑...
系统架构师谈什么是软件架构
03-23
系统架构师谈什么是软件架构.最近看了下《架构之美这本书》,摘录了部分书中的内容,在摘录书里面内容前先谈谈我自己对架构的看法。架构应该包括了功能性架构和非功能性架构两个方面的内容  最近看了下《架构之美这...
什么是软件测试架构
03-23
什么是软件测试架构?当我们用iPhone玩一个很有名的游戏——坚守阵地(FieldRunners)时,防御的布局非常重要。如果布局不好,如图2-1所示,就玩得很累,看着“生命”一个一个死去,即使采用了一些小的技巧,最后也过不...
什么是软件测试架构
03-23
什么是软件测试架构师?“众里寻她千百度,蓦然回首,人却在灯火阑珊处”,还算幸运。而对于“软件测试架构师”,众里寻她(他)千百度,那人何在?难以上青天。软件测试架构师是一个新职位,但确实是一个非常必要的职位...
互联网架构演进之路
赵广陆
08-16 2147
目录 1 单体架构 2 分布式架构 2.1 应用集群 2.2 分布式缓存 2.3 业务拆分 2.4 分库分表和读写分离 2.5 静态化和CDN 2.6 异步解耦 3 微服务架构 3.1 为什么需要服务化 3.2 服务化的好处 3.3 服务化的问题
[架构之路-217]:软件架构的定义、类型和发展历史
文火冰糖(王文兵)的博客
09-19 1127
软件架构是指对软件系统的整体结构和组织方式的描述。它定义了软件系统的各个组件之间的关系、交互方式和行为,并提供了指导系统设计和开发的准则和原则。组件和模块:软件系统可以被分解为各种组件或模块,每个组件完成特定的功能。架构描述了组件之间的关系和依赖。数据流和通信:软件系统中的组件之间需要进行数据交换和通信。架构规定了数据流的路径、通信协议和接口定义。部署和组织:软件系统可以部署在不同的硬件和环境中。架构描述了系统的物理布局、服务器配置和系统的部署方式。
软件架构分类(转载)
weixin_33916256的博客
09-04 2858
思维导图: 作者:阮一峰(以下内容) 日期:2016年9月 3日 软件架构(software architecture)就是软件的基本结构。 合适的架构是软件成功的最重要因素之一。大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任。 O'Reilly 出版过一本免费的小册子《Software Architecture Patterns》(PDF)...
软件架构软件架构概述
全网:架构师研究会
06-08 582
软件架构(architecture)是指软件系统的基本结构以及创建这种结构和系统的规程。每个结构都包含软件元素、它们之间的关系以及元素和关系的属性。[1]软件系统架构是一个隐喻,类似于建筑物的架构。[2]它作为系统和开发项目的蓝图,布置设计团队需要执行的任务。[3]软件架构(architecture)是指做出基本的结构选择,一旦实现,改变这些选择的代价是高昂的。软件架构...
1. 什么是软件架构师?软件架构师应具有怎样的知识体系?
03-28
软件架构师是负责设计和构建软件系统架构的专业人员。他们负责分析和理解客户需求,并将这些需求转化为可实现的软件系统设计。软件架构师需要了解和掌握各种软件开发技术,并能够根据项目需求选择适当的技术和工具。...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • linux安装java步骤 30680
  • Python中的图形绘制——3D绘图 13798
  • Java操作PDF文件,就是如此简单 10536
  • Java中常见的八种数据结构 10295
  • 码农在2022年需要关注的五个开发工具 8835

最新评论

  • 一行Python代码去除照片背景

    chengg0769: 发布文章时应该是选择“转载”。这是lyc2016012170写的。

  • Python pyecharts绘制词云图

    weixin_53442565: 想问下停用词怎么设置

  • 有限元编程:基础篇

    小米smile: 亲,有分数阶反应扩散方程的程序吗?可以分享一下吗?有偿也可以

  • 高薪程序员&面试题精讲系列48之说说JDK8中ConcurrentHashMap的sizeCtl是什么意思

    一一哥Sun: 这是一一哥Sun的原创文章,你抄袭转载经过博主允许了吗?

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 数据库日志采集系统方案设计
  • 码农在2022年需要关注的五个开发工具
  • 中科院软件所在 Python 程序的构建依赖分析方面取得进展:帮助开发人员提高代码复用效率
2022年30篇
2021年215篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

4617作文网再生能源公司起名周公解梦大全理发周公解梦被鸡咬免费周易生辰八字起名的周公解梦免费阅读女孩肖姓起名婴儿生辰八字算命起名国内周易起名网红楼梦全文讲解周/公解梦正宗周易古法取名铭字起名周易店面名字测吉凶热处理公司起名周易取名大全生辰八字五行属金的汉字大全起名周易八字看运势周公解梦梦到剪头发周易去痣八字算命求财宝宝起名念什么的澈字起名服务装饰起名诗词周易取名娃儿起名字飒起名周口信息交易中心五行八字免费算命任 姓起名字周易免费测名字打分测试淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男子给前妻转账 现任妻子起诉要回网友建议重庆地铁不准乘客携带菜筐月嫂回应掌掴婴儿是在赶虫子重庆警方辟谣“男子杀人焚尸”国产伟哥去年销售近13亿新的一天从800个哈欠开始男孩疑遭霸凌 家长讨说法被踢出群高中生被打伤下体休学 邯郸通报男子持台球杆殴打2名女店员被抓19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警两大学生合买彩票中奖一人不认账德国打算提及普京时仅用姓名山西省委原副书记商黎光被逮捕武汉大学樱花即将进入盛花期今日春分张家界的山上“长”满了韩国人?特朗普谈“凯特王妃P图照”王树国3次鞠躬告别西交大师生白宫:哈马斯三号人物被杀代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了房客欠租失踪 房东直发愁倪萍分享减重40斤方法“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火手机成瘾是影响睡眠质量重要因素考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼网友洛杉矶偶遇贾玲呼北高速交通事故已致14人死亡西双版纳热带植物园回应蜉蝣大爆发男孩8年未见母亲被告知被遗忘张立群任西安交通大学校长恒大被罚41.75亿到底怎么缴沈阳一轿车冲入人行道致3死2伤奥运男篮美国塞尔维亚同组周杰伦一审败诉网易国标起草人:淀粉肠是低配版火腿肠外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万杨倩无缘巴黎奥运男子被猫抓伤后确诊“猫抓病”春分“立蛋”成功率更高?记者:伊万改变了国足氛围奥巴马现身唐宁街 黑色着装引猜测

4617作文网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化