SinoESB产品介绍

SinoESB主要面向于中小企业,专注于提供轻量级的SOA企业应用解决方案。目前市场中主流商业化的ESB产品主要集中在国外厂商,对于中小企业来讲,他们的产品不仅价格昂贵,而且需要较长的熟悉学习时间,定制能力较差。SinoESB更好的贴近国内中小企业需求,致力于提供一种的轻量级、可扩充、稳定的企业服务总线,为企业应用整合提供基础支撑。

SinoESB提供内部各个子系统之间以及和外部系统的可靠消息联接,作为整个系统的消息通讯和服务调用平台,减少了应用系统接口的数量、相互的技术依赖性,各个子系统之间形成一种松耦合的结构方式。由于各系统通过总线进行连接。这样可以很好地应用于分布式系统,以及基于不同平台的应用系统。

SinoESB整体可以分成接入层、服务层和组件层三个主要组成部分,下面将对上面三个层次进行详细说明:

接入层

多种接入协议:产品为各渠道提供多种接入协议,如ejb、ws、jms和localService。ejb和ws主要面向同步接入请求;jms则主要面向异步接入请求;localService则主要面向本地接入请求;

数据标准:虽然产品提供了多种不同接入方式,但数据报文采用相同的数据标准;

报文校验:接入层对传输报文进行数据逻辑校验,验证报文格式是否有效;如校验数据项的数据类型、格式、长度、以及是否允许为空等;

服务层

服务调度:对于不用协议的接入请求,系统采用统一的服务调度机制。服务调度采用了接口动态绑定机制以尽量松的耦合来进行访问。接口动态绑定充分利用了JAVA运行时的动态特性,系统采用了接口和服务实时绑定的机制,可以增强系统的动态性。所有接口同服务的绑定关系都利用XML配置文件来描述,在运行期利用同一的控制类来进行动态的关联;

路由管理:服务调度将报文传递到路由管理,此时规则引擎将会根据请求报文进行服务路由,找到对应的业务服务。

注册管理:对于不同业务需求,技术人员完成业务服务开发之后,需要将此业务服务注册到企业服务总线;

配置管理:对已经注册的服务,利用全局的配置服务来对所有的服务进行同一的配置,在运行期各平台利用自己的注册表管理服务来对相应的配置表进行加载,实现服务和系统的动态注册。配置完成后,此服务便可以为来自各渠道的请求提供业务处理服务;

组件层

组件封装:组件层也可以称为适配层。技术人员根据组件规范对各业务系统提供的接口进行封装,统一各系统与总线之间的数据交换格式;

组件类型:组件从整体分成三种类型:本地组件、异步组件和同步组件。本地组件为组件与服务部署在相同的服务器上,服务通常通过java bean实现;异步组件为组件与远程服务接口之间通过jms进行消息通讯;同步组件为组件与远程服务接口之间通过ejb、ws等协议进行远程访问;

服务总线机制介绍:

服务总线是整个系统的核心,担负着系统中各个子系统之间的通信任务。各个子系统所有消息和基于消息的服务,使用前都要通过服务总线进行定义,注册和公布。所有请求者和提供者在使用消息时,都要遵守预先定义的规范;所有的子系统都向服务总线发送消息,再由服务总线进行消息的转发或基于消息的服务调用和结果返回,服务总线提供有关消息定义和服务命名空间及其调用寻址的处理;同时也提供对于消息处理的监控、安全机制和日志管理。服务总线采用基于XML的消息格式实现不同应用系统之间的通信,支持消息队列和订阅/发布的消息传输机制:

1、各个子系统所有消息和基于消息的服务,使用前都要通过服务总线进行定义,注册和公布。所有请求者和提供者在使用消息时,都要遵守事先定义的规范;

2、所有的子系统之间不直接发送消息,都向服务总线发送消息,再由服务总线进行消息的转发或基于消息的服务调用和结果返回;

3、服务总线提供有关消息定义和服务命名空间及其调用寻址的处理;同时也提供对于消息处理的监控,安全机制和日志管理;

4、各个子系统与服务总线的连接采用数据适配器->服务代理程序->服务总线的分层结构进行连接;

5、服务总线上提供ejb、SOAP和JMS三种协议进行消息通讯和服务调用。

服务调用机制介绍:

1、子系统需要调用某个子系统提供的某种服务时,根据公布的规范发出特定消息给服务总线;

2、服务总线要处理的服务调用消息,可能是同步的,也可能是异步的;

3、当服务总线收到异步的服务调用消息时,首先在注册服务的命名空间中进行服务寻址。然后,直接发送对应的服务调用消息给相应的提供服务的子系统。提供服务的子系统收到消息调用服务后,进行相应的处理,然后发送对应的结果消息给服务总线。服务总线最后将服务提供方返回的结果消息转发给请求方,完成这次异步消息调用;

4、同步的服务调用消息发送给服务总线后,服务总线并不给请求方反馈消息收到确认信息。而是发送服务调用消息给提供服务的子系统的同时,进行等待,等待提供方子系统返回结果消息后,再将结果发送回发出请求的子系统完成这次同步的消息调用。