您的位置 首页 电源

Imagination中文技能社区

Imagination中文技术社区-软件架构(software architecture)就是软件的基本结构。 合适的架构是软件成功的最重要因素之一。大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任。 O’Reilly 出版过一本免费的小册子《Software Architecture Patterns》(PDF), 介绍了五种最常见的软件架构,是非常好的入门读物。我读后受益匪浅,下面就是我的笔记。

软件架构(software architecture)便是软件的根本结构。

适宜的架构是软件成功的最重要因素之一。大型软件公司一般有专门的架构师职位(architect),只要资深程序员才能够担任。

O'Reilly 出书过一本免费的小册子《Software Architecture Patterns》(PDF), 介绍了五种最常见的软件架构,是非常好的入门读物。我读后收获颇丰,下面便是我的笔记。

一、分层架构

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

这种架构将软件分红若干个水平层,每一层都有明晰的人物和分工,不需求知道其他层的细节。层与层之间经过接口通讯。

尽管没有清晰约好,软件一定要分红多少层,可是四层的结构最常见。


  •  体现层(presentaTIon):用户界面,担任视觉和用户互动
  •  事务层(business):完结事务逻辑
  •  耐久层(persistence):供给数据,SQL 句子就放在这一层
  •  数据库(database) :保存数据
有的软件在逻辑层和耐久层之间,加了一个服务层(service),供给不同事务逻辑需求的一些通用接口。
用户的恳求将顺次经过这四层的处理,不能越过其间任何一层。


长处
  •   结构简略,简略了解和开发
  •   不同技术的程序员能够分工,担任不同的层,天然合适大多数软件公司的安排架构
  •   每一层都能够独立测验,其他层的接口经过模仿处理
缺陷
  •   一旦环境改变,需求代码调整或添加功用时,一般比较费事和费时
  •   布置比较费事,即便只修正一个小地方,往往需求整个软件重新布置,不简略做继续发布
  •   软件晋级时,或许需求整个服务暂停
  •   扩展性差。用户恳求很多添加时,有必要顺次扩展每一层,因为每一层内部是耦合的,扩展会很困难

二、事情驱动架构

事情(event)是状况发生改变时,软件宣布的告诉。
事情驱动架构(event-driven architecture)便是经过事情进行通讯的软件架构。它分红四个部分。


  •   事情行列(event queue):接纳事情的进口
  •   分发器(event mediator):将不同的事情分发到不同的事务逻辑单元
  •   事情通道(event channel):分发器与处理器之间的联络途径
  •   事情处理器(event processor):完结事务逻辑,处理完结后会宣布事情,触发下一步操作

关于简略的项目,事情行列、分发器和事情通道,能够合为一体,整个软件就分红事情署理和事情处理器两部分。


长处
  •   分布式的异步架构,事情处理器之间高度解耦,软件的扩展性好
  •   适用性广,各种类型的项目都能够用
  •   功用较好,因为事情的异步实质,软件不易发生阻塞
  •   事情处理器能够独登时加载和卸载,简略布置
缺陷
  •   触及异步编程(要考虑长途通讯、失掉呼应等状况),开发相对杂乱
  •   难以支撑原子性操作,因为事情经过会触及多个处理器,很难回滚
  •   分布式和异步特性导致这个架构较难测验

三、微核架构

微核架构(microkernel architecture)又称为"插件架构"(plug-in architecture),指的是软件的内核相对较小,首要功用和事务逻辑都经过插件完结。

内核(core)一般只包括体系运转的最小功用。插件则是相互独立的,插件之间的通讯,应该削减到最低,防止呈现相互依靠的问题。


长处
  •   杰出的功用延伸性(extensibility),需求什么功用,开发一个插件即可
  •   功用之间是阻隔的,插件能够独立的加载和卸载,使得它比较简略布置,
  •   可定制性高,习惯不同的开发需求
  •   能够渐进式地开发,逐渐添加功用
缺陷
  •   扩展性(scalability)差,内核一般是一个独立单元,不简略做成分布式
  •   开发难度相对较高,因为触及到插件与内核的通讯,以及内部的插件挂号机制

四、微服务架构

微服务架构(microservices architecture)是服务导向架构(service-oriented architecture,缩写 SOA)的晋级。
每一个服务便是一个独立的布置单元(separately deployed unit)。这些单元都是分布式的,相互解耦,经过长途通讯协议(比方REST、SOAP)联络。

微服务架构分红三种完结形式。
  •   RESTful API 形式:服务经过 API 供给,云服务就归于这一类
  •   RESTful 运用形式:服务经过传统的网络协议或许运用协议供给,背面一般是一个多功用的运用程序,常见于企业内部
  •   会集音讯形式:选用音讯署理(message broker),能够完结音讯行列、负载均衡、一致日志和反常处理,缺陷是会呈现单点失利,音讯署理或许要做成集群

长处
  •   扩展性好,各个服务之间低耦合
  •   简略布置,软件从单一可布置单元,被拆成了多个服务,每个服务都是可布置单元
  •   简略开发,每个组件都能够进行继续集成式的开发,能够做到实时布置,不间断地晋级
  •   易于测验,能够独自测验每一个服务
缺陷
  •   因为着重相互独立和低耦合,服务或许会拆分得很细。这导致体系依靠很多的微服务,变得很杂乱和粗笨,功用也会欠安。
  •   一旦服务之间需求通讯(即一个服务要用到另一个服务),整个架构就会变得杂乱。典型的比如便是一些通用的 UTIlity 类,一种处理方案是把它们拷贝到每一个服务中去,用冗余交换架构的简略性。
  •   分布式的实质使得这种架构很难完结原子性操作,买卖回滚会比较困难。

五、云架构

云结构(cloud architecture)首要处理扩展性和并发的问题,是最简略扩展的架构。

它的高扩展性,首要原因是没运用中心数据库,而是把数据都仿制到内存中,变成可仿制的内存数据单元。然后,事务处理才能封装成一个个处理单元(prcessing unit)。访问量添加,就新建处理单元;访问量削减,就封闭处理单元。因为没有中心数据库,所以扩展性的最大瓶颈消失了。因为每个处理单元的数据都在内存里,最好要进行数据耐久化。

这个形式首要分红两部分:处理单元(processing unit)和虚拟中间件(virtualized middleware)。
  •   处理单元:完结事务逻辑
  •   虚拟中间件:担任通讯、坚持sessions、数据仿制、分布式处理、处理单元的布置。


虚拟中间件又包括四个组件。
  •   音讯中间件(Messaging Grid):办理用户恳求和session,当一个恳求进来今后,决议分配给哪一个处理单元。
  •   数据中间件(Data Grid):将数据仿制到每一个处理单元,即数据同步。确保某个处理单元都得到相同的数据。
  •   处理中间件(Processing Grid):可选,假如一个恳求触及不同类型的处理单元,该中间件担任和谐处理单元
  •   布置中间件(Deployment Manager):担任处理单元的发动和封闭,监控负载和呼应时刻,当负载添加,就新发动处理单元,负载削减,就封闭处理单元。
长处
  •   高负载,高扩展性
  •   动态布置
缺陷
  •   完结杂乱,本钱较高
  •   首要合适网站类运用,不适宜很多数据吞吐的大型数据库运用
  •   较难测验

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/102027.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部