1 SOA历史
Service Oriented Architecture(面向服务的架构),诞生于20世纪90年代,于1996年发布的第一个SOA报告。提出背景是企业内部的IT系统重复建设且效率低下
重复建设且效率低下体现在如下:
- 企业有独立的IT系统,比如人力资源系统,财务系统,销售系统,且都会涉及用户管理,所以就会导致一个人员离职要操作三次不同的系统
- 随着业务发展,复杂度越来越高,更多的流程和业务需要多个IT系统合作完成,且各个独立的IT系统没有标准的实现方式,导致新的流程和业务需要协调大量系统
- 独立的IT系统可能采购不同的供应商,实现技术不同,企业自己不太可能基于其重构
2 SOA详解
对于上述提出的问题,SOA提出了三个关键概念
- 服务:所有业务功能都是一项服务,且有对外开放的能力,当其他系统需要时,不需要再进行开发
- 服务可大可小,可简单可复杂,但是这都是服务内部的事情,不会影响被其他服务调用,且一个服务是否需要再分成小服务,要根据企业的实际情况判断
- ESB:Enterprise Service Bus(企业服务总线),参考计算机总线设计,将各个服务连接起来,提供统一的接口来对接各个异构系统对外提供不同形式的接口,达到服务间高效互通
- 松耦合:减少各个服务间的依赖相互影响,一旦采用SOA架构,各个服务是独立的,且不清楚对哪些服务依赖,如果不松耦合,那么一旦服务升级,依赖其的服务就会出问题
典型的SOA架构如下
要注意的是SOA是一个高层级的架构设计,而不是单独的一个系统去采用的架构,因为SOA就是将本身隔离的企业内部系统进行整合,但对于单个系统内部就不会存在我们前面提到的企业内部系统的一些问题
- SOA解决了IT系统的重复建设和扩展效率低的问题,但是其ESB总线却是受人诟病的,因为对接了各个异构系统,所以就要对不同的传输协议和数据格式进行转换,消耗很多的计算资源
- 但是如果转念一想,这是针对老旧的企业内部系统,如果新开发一个,完全可以一开始就协商好使用的协议和格式,比如全都用REST协议或者AMQP协议,数据格式都用JavaObj(所有子系统都是Java开发)
3 总结
- SOA提出的背景是企业内部的IT系统重复建设且效率低下。
- SOA更多是在传统企业(例如,制造业、金融业等)落地和推广,在互联网行业并没有大规模的实践和推广。
- SOA三个关键概念:服务、ESB和松耦合。
- SOA架构中,每项业务功能都是一项服务,服务就意味着要对外提供开放的能力。
- SOA使用ESB来屏蔽异构系统对外提供各种不同的接口方式,以此来达到服务间高效的互联互通。
- SOA解决了传统IT系统重复建设和扩展效率低的问题,但其本身也引入了更多的复杂性,SOA最广为人诟病的就是ESB。
- ESB是无奈之举,企业在应用SOA时,各种异构的IT系统都已经存在很多年了,完全重写或按照统一标准进行改造的成本是非常大的,只能通过ESB方式去适配已经存在的各种异构系统。