分层架构
- 它也叫分层架构,一般状况下,N至少是2层。例如,C/S架构、B/S架架构、MVC、MVP、操做系统内核架构
一、C/S架构、B/S架构
- 划分的对象是整个系统,划分的维度是用户交互,即将和用户交互的部分独立为一层,支撑用户交互的后台做为另一层。
二、MVC架构、MVP架构
- 划分的对象是单个业务子系统,划分的维度是职责,将不一样的职责划分到独立层,但各层的依赖关系比较灵活
三、逻辑分层架构
- 划分的对象能够是单个业务子系统,也能够是整个业务系统,划分的维度也职责
- 逻辑分层架构中的层是自顶向下依赖的
- 典型的有操做系统内核架构、TCP/IP架构
- 下面是Android操做系统架构图
- 下面是典型的J2EE系统架构图
- 下面是针对整个业务系统进行逻辑分层的架构图
分层架构设计核心
- 保证各层之间的差别足够清晰,边界足够明显,让人看到架构图后就能看懂整个架构
- 较好地支撑系统扩展,本质在于隔离关注点,即每一个层中的组件只会处理本层的逻辑
- 例如,Linux内核为了支撑不一样的文件系统格式,抽象了VFS文件系统接口
优点
- 分层架构的优点就体如今经过分层强制约束两两依赖,一旦自由选择绕过度层,时间一长,架构就会变得混乱
缺点
SOA
- Service Oriented Architecture,面向服务架构
背景
- 企业各部门有独立的IT系统,好比人力资源系统、财务系统、销售系统,这些系统可能都涉及人员管理,各IT系统都须要重复开发人员管理的功能。例如,某个员工离职后,须要分别到上述三个系统中删除员工的权限
- 各个独立的IT系统可能采购于不一样的供应商,实现技术不一样,企业本身也不太可能基于这些系统进行重构
- 随着业务的发展,复杂度愈来愈高,更多的流程和业务须要多个IT系统合做完成。因为各个独立的IT系统没有标准的实现方式(例如,人力资源系统用Java开发,对外提供RPC;财务系统用C#开发,对外提供SOAP协议),每次开发新的 流程和业务,都须要协调大量的IT系统,同时定制开发,效率很低。
SOA提出的3个关键概念
一、服务
- 全部的业务功能都是一项服务,服务就意味着要对外提供开放的能力,当其余系统须要使用这项功能时,无须定制化开发
- 服务可大可小,可简单也可复杂
二、ESB
- Enterprise Service Bus,企业服务总线
- ESB将企业中各个不一样的服务链接在一块儿
- SOA使用ESB来屏蔽异构系统对外提供各类不一样的接口方式,以此达到服务间高校的互联互通
三、松耦合
典型的SOA架构以下:
理念
- SOA架构是比较高层级的架构设计理念,通常状况下说企业采用了SOA的架构来构建IT系统,但不会说某个独立的系统采用了SOA的架构。
- 例如,某企业采用SOA架构,将系统分为“人力资源管理服务”“考勤服务”“财务服务”,但人力资源管理服务自己一般不会再按照SOA的架构拆分更多服务,也 不会再使用独立的一套ESB,由于这些系统自己可能就是采购的,ESB自己也是采购的,若是人力资源系统自己重构为多个子服务,再部署独立的ESB系统,成本也很高,也没什么收益
注:有兴趣了解极客时间专栏的同窗,能够查看极客时间专栏—可提供返现服务架构