马 聪,史志鹏,冯 蓉
(中国电子科技集团公司第三十三研究所,山西 太原 030032)
随着企业规模及业务的不断发展壮大,必然会遇到组织分散、流程分散、信息分散、资源分散的发展瓶颈。很多企业IT系统架构主要是围绕着综合业务系统建立的,随着业务需求不断增多和变化,个别外围系统的变化都有可能需要修改综合业务系统,形成了以综合业务系统为核心的紧耦合IT架构。与此同时,由于各系统建设的时期和厂商不同,采用不同的数据库,不同的通信协议,不同的开发技术,数据标准和一致性难以保障,应用开发周期过长等诸多弊端,致使系统之间的集成复杂,集成开发效率低,工作量大,难以快速响应新的业务需求[1]。因此,企业迫切需要改进IT架构来推动流程整合、信息集中、资源共享、数据交互协调,实现从规模扩展走向规模效益。
Oracle Service Bus(OSB)是甲骨文公司推出的一种基于配置的策略驱动型企业服务总线,在异构环境中提供可扩展且可靠的面向服务的集成,服务管理和传统消息代理。本文使用OSB设计与实现了一套企业服务总线平台(ESB),集成整合了OA办公自动化、人力资源管理、电子档案、合同管理、计划管理等多个应用系统,有效地消除了应用系统的集成复杂性,具备良好架构柔性和扩展性,从而能够帮助公司在业务变化时实现IT系统的快速响应。
ESB在服务调用方和服务提供方之间提供灵活的消息处理和操作。服务调用方通过企业服务总线统一使用HTTPS/HTTP发送REST/JSON消息,ESB路由转换消息并调用服务提供方提供的服务,也可直接进行适配连接数据库。系统管理员可通过ESB实时监控服务器运行状况、服务访问情况、服务运行质量、操作用时跟踪等内容[2],同时ESB基于Oracle平台安全服务和用于Web服务的Oracle Web服务管理器,确保了服务的安全性。系统总体架构如图1所示。
图1 ESB架构图
本文中ESB为多个业务系统提供接入接出服务,一个中间库进行数据库适配。ESB实现服务的暴露及后台系统的集成,针对输入的服务消息进行认证、解析、路由、编排等操作调用服务提供方提供的服务。具体关系及接口协议如图2所示。
图2 ESB接口关系图
ESB支持同步、异步、无响应、订阅分发等信息交换模式,在本系统中主要使用了同步、无响应、分发的信息交换模式。
同步调用方式一般是请求方与服务方系统建立连接,发送请求内容后等待服务方系统处理完毕后给出响应。如图3所示。
图3 同步调用方式
同步调用方式一般是在同一个网络连接里面完成,例如通过TCP同步短连接和HTTP都能简单实现系统间的同步调用机制,本系统中后台服务及数据调用均采用同步调用方式。
无响应调用方式是请求方发出请求消息后不再关心服务端是否处理成功的情况,直接释放处理的进程或是线程。如图4所示。由于部分服务的调用场景请求方系统并不关心业务处理状态,本项目中一些简单消息通知采用此信息交换模式。
图4 无响应调用方式
ESB使用publish组件实现消息发布功能,实现一个消息向多个系统进行广播,本系统中更改通知功能采用此信息交换模式。
通讯协议默认采用HTTPS或HTTP,编码格式为UTF-8,数据使用JSON传输。服务调用方需要实现超时的控制机制,当超过设定的时间ESB仍然没有返回,服务调用方系统可以进入异常流程。通讯过程中数据提交方式默认采用POST方式,访问方式为: http://(esb.ip:port)/esb/proxyservice请求示例:
{
"method": "login",
"param": {
"userid": "0001",
"systemname": "PORTAL",
"password":"******"
"verifycode":"123321"
}
}
返回示例:返回信息以json形式打包,其中code表示返回信息状态,message为错误信息,message内容是在请求错误的情况的提示信息,data为数据信息。请求正常返回"code"为1, "message"为"",data为返回数据(只返回处理结果,无需返回数据的操作,如注销登录,data为"");请求错误返回"code"为0, "message"为错误提示,data为""。
{
"code":1,
"message“:"",
"data": {
"id":"1012",
"username":"张三",
"userid":"10001",
"department":"信息中心",
"position":"副主任"
"token":"3e286f3324098342ce28"
}
}
登录Service Bus 控制台,对每个应用系统分别创建BusinesService用于存储业务服务,ProService用于存储代理服务和管道。
本项目ESB开发主要使用三种处理方式:服务直连、格式转换、数据分发。
服务直连:服务调用方与提供方不需要协议、格式转换,ESB需要创建业务服务、代理服务、进行管道配置。
格式转换:服务调用方与提供方协议或格式不同,ESB需要创建业务服务、代理服务、进行管道配置、格式或协议转换。
数据分发:一个服务调用方需要分发数据到多个服务提供方,ESB需要创建业务服务、代理服务、进行管道配置、格式或协议转换、数据分发。
ESB使用角色控制策略对访问服务进行传输访问控制,验证方式使用BASIC验证,ESB根据访问内容向各业务系统分配不同权限角色的账户及口令,各业务系统在传输数据的同时需要将分配的账户及口令用”username:password”合并,并将合并后的字符串用BASE64编码,组合成字符串“Basic (账户及口令BASE64编码)”,于每次请求数据时,将字符串附加于请求头(Request Header)中。ESB在每次收到请求包后,根据协议取得客户端附加的用户信息(BASE64编码的用户名和密码),解开请求包,对用户名及密码进行验证,如果用户名及密码正确,则根据客户端请求,返回客户端所需要的数据,否则返回错误代码或重新要求客户端提供用户名及密码。
企业服务总线平台的构建,有效地支撑了各业务环节业务运作的共享、协同与整合。同时兼容未来建设的信息化系统,根据相应标准规范,能够纳入到整个技术体系之中,无需重复建设,能够为用户节约IT投资。在支撑服务的设计上遵循了高内聚、低耦合的设计原则,服务之间可灵活协同工作,达到了整个架构可扩展、可重用性等目的。