一、软件架构的定义:
1、软件架构是一个系统的草图;
2、软件架构描述的对象是直接构成系统的抽象组件;
3、各个组件之间的连接则明确描述组件之间的通信;
4、在实现阶段,这些抽象组件被细化为实际组件(具体某个类或对象);
5、在面向对象中,组件之间的连接通常用接口实现。
二、架构师可细分为三类:
1、系统架构师:服务器负载,可靠性,伸缩,扩展,数据库切分,缓存应用等;
2、应用架构师:理解业务、梳理模型、设计模式、接口设计、数据交互等;
3、业务架构师:业务领域专家、行业专家、产品咨询师、资深顾问(以上两者结合)。
三、常见软件架构分类:
1、分层架构
分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道用什么架构,那就用它。
这种架构将软件分成若干个水平层,每一层都是清晰的角色和分工,不需要知道其他层的细节,层与层之间通过接口通信。
虽然没有明确约定软件一定要分成多少层,但四层结构最常见。
有的软件在逻辑层和持久层之间,加了一个服务层(service),提供不同业务逻辑需要的一些通用接口。
登录后复制
表现层(presentation):用户界面,负责视觉和用户互动
业务层(business):实现业务逻辑
持久层(persistence):提供数据,SQL语句就放在这一层
数据库(database):保存数据
用户的请求将依次通过这四层的处理,不能跳过其中任何一层。
优点:
缺点:
2、事件驱动架构
事件(event)是状态发生变化时,软件发出的通知。
事件驱动架构(event-driven architecture)则是通过事件进行通信的软件架构。
架构分四个部分:
登录后复制
事件队列(event queue):接收事件的入口
分发器(event mediator):将不同的事件分发到不同的业务逻辑单元
事件通道(event channel):分发器与处理器之间的联系渠道
事件处理器(event processor):实现业务逻辑,处理完成后会发出事件,触发下一步操作
对于简单的项目,事件队列、分发器和事件通道,可以合为一体,整个软件就分成事件代理和事件处理器两部分。
优点:
缺点:
3、微核架构
微核架构(microkernel architecture)又称为"插件架构"(plug-in architecture),指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现。
内核(core)通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信,应该减少到最低,避免出现互相依赖的问题。
优点:
缺点:
4、微服务架构
微服务架构(microservices architecture)是服务导向架构(service-oriented architecture,缩写 SOA)的升级。
每一个服务就是一个独立的部署单元(separately deployed unit)。这些单元都是分布式的,互相解耦,通过远程通信协议(比如REST、SOAP)联系。
微服务架构分成三种实现模式:
优点:
缺点:
5、云架构
云架构(cloud architecture)主要解决扩展性和并发的问题,是最容易扩展的架构。
它的高扩展性,主要原因是没使用中央数据库,而是把数据都复制到内存中,变成可复制的内存数据单元。
然后,业务处理能力封装成一个个处理单元(prcessing unit)。访问量增加,就新建处理单元;访问量减少,就关闭处理单元。
由于没有中央数据库,所以扩展性的最大瓶颈消失了。由于每个处理单元的数据都在内存里,最好要进行数据持久化。
这个模式主要分两部分:
登录后复制
处理单元(processing unit):实现业务逻辑
虚拟中间件(virtualized middleware):负责通信、保持sessions、数据复制、分布式处理、处理单元的部署。
虚拟中间件又包含四个组件:
优点:
缺点:
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删