今天完成的事情
查阅SOA,SCA的概念
SOA,Service Oriented Architecture,面向服务的体系结构,
SOA是一种设计方法,其中包括多个服务,而服务之间通过配合最终会提供以系列功能,一个服务通常以独立的形式存在于操作系统的进程中,服务之间通过网络调用,而非采用进程内调用的方法进行通信
一个基于SOA架构的系统中的所有程序功能都被封装在一些功能模块中,我们就是利用这些已经封装好的功能模块组装构建我们所需要的程序或者系统,而这些功能模块就是SOA架构中的不同的服务(service)
SOA本身就是一种面向企业服务的系统架构,简单来说,就是一种进行系统开发的新的体系架构,在基于SOA架构的系统中,具体应用程序的功能是由一些松耦合并且具有统一接口定义方式的组件(也就是service)组合构建起来的。
SOA在Java领域有两套标准,一个是SUN推出的JBI(没有得到BEA和IBM的承认),另外一个是:IBM和BEA等公司推出的SCA和SDO标准
JBI只关注Java组件,只处理Java组件的集成
SCA实现了业务组件和传输协议的分离,可以处理各种平台组件的集成
SCA,Service Component Architecture,服务组件架构,是一种全新的软件架构思想
最重要的概念是Service服务,其内涵独立于具体的技术,因此,SCA可以不称之为Java组件框架,或者web Serivce组件框架,所谓的具体技术,主要有两层含义,
1.程序语言
2.传输协议
所以,SCA与传统的业务组件最大区别是:
1.组件和传输协议的分离
2.接口和实现语言的分离
SCA的本质是一种软件架构思想,是独立于程序语言的SOA架构
其目标是创建一个可集成服务组件的运行环境
服务组件是SCA里面最基本的功能单元,主要包括接口,实现,引用,属性等
1.服务(Service),用来让其他组件调用,是一个接口,如果是基于Java的SCA,就是Java的接口
2.组件实现(Implementation),实现所创建的服务,对Java来说,就是接口的实现类
3.引用(Reference),一个组件可能需要调用其他组件,对Java来说,就是其他组件的Java接口
4。属性(Property),对组件实现的一种属性参数注入
对一个服务组件来说,服务和实现是必须的,引用和属性是非必须的
服务模块
SCA是通过模块(Composite)将SCA组件集成在一起的
模块实际上是将SCA组件(作为零件)重新组合为集成度更高的组件,从整体上来看,SCA模块和SCA组件的结构是一致的,
从构成组件的零件角度看,SCA模块是用了组件作为零部件重新组装为新的组件(模块)
模块是通过SCA的配置文件配置组装形成的,不需要程序的硬编码,有两个特点
1.提升(Promote),就是将组件的接口,属性,或引用装配为模块的对应的接口,属性或引用
2.连线(Wire),就是在模块内部,组件之间的调用关系,存在调用,就存在连线
传统SOA架构中,将服务部署在一个中心化的平台,称之为企业服务总线ESB(Enterprise Service Bus),ESB是一个很重的机制,首先通讯方式复杂,前后端涉及多种协议,ESB的中心化带来了单点故障隐患,服务统一在ESB上部署,也限制了服务的水平扩展,
所以就有了新型的SOA架构,微服务就是其中之一
微服务架构强调的第一个重点是,业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用,这些小应用之间通过服务完成交互和集成,每个小应用从前端web ui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套,每个小应用除了完成自身本身的业务功能外,重点就是还需要消费外部其他应用暴露的服务,同时也将自身的能力朝外部发布为服务,
为服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。
微服务是SOA的一种实现,是去ESB化的SOA
背后实际上是两种思想的分歧,分布还是集中,
不是服务的分布和集中,而是对于服务的治理,是分布还是集中
明天的计划
复习总结之前所学
遇到的问题
SOA等概念比较抽象,还不太理解
收获
大概理解了Tuscany是SCA的一种实现
评论