分层架构和SOA

  • 注:文章来源:极客时间的专栏《从0开始学架构》

分层架构

  • 它也叫分层架构,一般状况下,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系统,成本也很高,也没什么收益

注:有兴趣了解极客时间专栏的同窗,能够查看极客时间专栏—可提供返现服务架构

相关文章
相关标签/搜索