大型企业中应用系统互连的研究与实现摘要为了使用户能够以一个整体来管理和调度企业内部众多的系统之间的数据交换,研究了数据交换策略及实现,设计了集中式数据交换平台的应用模型,提出了在集中式数据交换平台研究的三个层次,通信层、代理层及适配层。针对这三个层次进行了深入地研究,提出了相应的实现方案。同时特别研究了以内存镜像为核心的双机热备算法。关键字企业应用集成数据交换可用性内存镜像引言企业应用集成……随着IT技术以及企业应用的不断发展,企业中运行的应用系统也越来越多,这些系统按功能可分为基础支撑平台以及应用平台两大类,其中基础支撑平台包括网络设备、防火墙、AD、邮件系统、防病毒系统等;应用平台包括企业网站、业务系统、ERP系统、办公系统、数据仓库以及商业智能BI系统等部分。由于各个应用系统规划建设的时间和技术背景不同,系统采用的技术和平台均不相同,因此用系统之间的数据交换是一个急需解决的问题。为了解决传统接口数据交换模式带来的问题,企业应用集成(EAI)应运而生。EAI是通过相应的软件技术将企业已有的和新建的各种业务系统集成起来,共同完成企业的各种商务活动,并能够灵活快速地适应企业的发展和市场的变化。一般意义上的EAI通过建立底层应用结构,并以此为中心来联系横贯整个企业的异构系统,满足在企业内部的业务系统、ERP、办公系统、数据仓库及其他重要的内部系统之间无缝共享和交换数据的需要。根据EAI理念,建立统一的数据交换平台是解决企业内系统互联较好的解决方案,数据交换平台独立于现有系统,并根据现有系统提供的对外接口进行开发,实现与各系统的对接。数据交换平台采用星型数据交换拓扑架构,并可以根据需求,提供集成协议转换、加密、压缩、交换过程监控等多种功能,保证各系统之间数据的有效交换。数据交换过程中所涉及的功能调整均可通过调整统一数据交换平台应用加以实现。依托统一交换平台,可对数据中心数据交换过程进行集中管理,大大提高数据交换过程的可管理性与可扩展性。数据交换平台应用B应用B应用A应用D应用C图1:数据交换平台网络拓扑图数据交换平台应该具备如下功能:1.数据可靠的传输1)消息传送:提供端到端的同步消息传送机制,支持准实时的应用程序;提供端到端的异步消息传送机制,消息可由数据交换中心进行缓存。2)文件传送:提供端到端的文件传送服务,仿照FTPSERVER,提供身份认证、权限管理、目录管理、上传文件、下传文件、断点续传等功能;支持大文件(2GB)传送,需要支持压缩或动态文件拆分组合。2.数据存储企业数据交换平台必须提供数据存储功能,主要用于数据交换和信息发布,所存储数据按一定规则进行备份、删除等,此外,存储数据的加密、压缩处理等。3.信息发布:将文件或消息按约定时间通过邮件、FileCOPY或FTP等渠道传给特定服务对象,实现发布与订阅功能。4.安全性:提供接入帐户管理与帐户权限管理功能;接入企业数据交换平台,需使用数字证书或密码,该数字证书或存储密码需在接入点的电脑上授权访问;提供数据签名和加密,保证数据传输的安全性。5.监控与管理:支持集中日志留痕,对目标系统不能在预定时间内做出反应提出警示。6.可靠性:确保信息送达,有错误重发机制;提供校验码,确保数据完整。系统总体架构如上节所述,企业数据交换平台将采用星型架构,为各应用提供系统间同步、异步的消息交换和文件交换;采用端到端的方式保障传输的可靠性并提供出错重试机制;采用SSL、网关隔离等机制保障跨安全域的传输安全,采用访问控制等技术保障同一安全域的传输安全;为各应用系统的接入提供简单、安全的、标准化的接口,方便系统接入。适配层(提供各种接口:WebService/Socket/Remoting)监控管理平台服务层(提供可靠的传输服务:文件/消息,端到端)传输层(提供底层传输服务:消息传输及路由)配置及日志数据库应用A应用C应用B图2:数据交换平台总体架构图因此,我们提出高可用性的企业数据交换平台,其系统结构如图1所示,该平台共分为传输层、服务层、适配层、监控管理模块等五个部分,其中1.传输层是平台的核心部分,数据以同步或异步的方式通过直接消息传送或消息队列在分布环境中交换,平台提供了可靠传输、安全、可管理性等特性,提供异步消息及文件传输功能,采用星型传输架构,支持同步、异步等多种通信方式;2.服务层是在传输层基础上提供的服务,提供消息的访问、过滤、发送、接收,以及对目录和文件系统的访问、查询、上传、下载等功能,定义消息和文件格式,提供同步、异步消息及文件传输服务机制;3.适配层提供数据交换平台和应用系统的连接功能,规范各应用与交换平台的通信接口,提供企业数据交换平台与异构平台进行通讯的能力,主要有两种连接方式——直接调用外部系统的WebServices、采用适配器提供平台和外部系统的逻辑协调管理功能,在应用系统与平台内部之间起到连接沟通的作用;4.监控管理模块提供对整个企业数据交换平台进行监控管理的Web平台,包含监控告警、用户及权限管理、配置管理、备份管理、日志管理、传输状态管理等功能。为实现高可用性,将采用双击热备技术提升高可用性。原型实现根据上述总体架构,规划具体实现模块如下:适配层监控管理平台(DXPADMIN)服务层传输层(通信子系统DXPComm)配置及日志数据库(SQL2005)应用A应用C应用B通信代理子系统DXPAGT图3:数据交换平台模块分布图而这几个模块部署图如下:中枢管理服务网关管理服务3DXPCommDXPAGT中枢服务器网关服务器3DXPComm中枢管理Portal管理员配置及日志数据库网关服务器n...网关管理服务1DXPAGTDXPComm网关服务器1应用系统1应用系统2网关管理服务2DXPAGTDXPComm网关服务器2应用系统3应用系统4应用系统5应用系统6图4:数据交换平台模块部署图根据上述层次结构,系统将主要划分为以下三大模块。从部署图上看,数据交换平台硬件角色分为中枢服务器及网关服务器,以星型结构连接各个应用系统。图中虚线代表管理消息数据流,实线代表通信消息数据流。服务器均支持双机热备。1.通信子系统DXPComm:位于通信层,部署在网关服务器及中枢服务器上,实现安全的消息及文件传输以及路由。2.通信代理子系统DXPAGT:位于服务层及接口层,部署在网关服务器,作为一个Windows服务程序,主要负责与应用系统进行通信,同时调用DXPComm进行数据交换。通信代理还提供同步传输、消息反馈、错误重试、失败告警等一系列功能并支持双机热备。通信代理与应用的接口包括Socket、WebService、Remoting以及CIFS、FTP等。3.管理子系统DXPAdmin主要提供对数据交换平台进行监控管理的功能,共包含以下三个模块:a)管理PortalDXPAdminWeb:DXPAdminWeb是一个web应用程序,部署在中枢服务器上。提供对整个交换平台的配置、授权、管理和监控功能。b)网关管理服务DXPGWAdmin:DXPGWAdmin是一个Windows服务程序,部署在网关服务器上。负责接收中枢发出的管理指令,对网关进行管理。管理内容包括创建本地用户,创建共享目录,设置共享权限以及日志查询,上传日志等。c)中枢管理服务DXPSUAdmin:DXPSUAdmin是一个Windows服务程序,部署在中枢服务器上。负责与网关管理服务通信,执行一些管理任务,例如接收网关发来通信日志等系统消息,统一写入数据库供查询。通信子系统DXPComm实现入站信道入站队列消息收发器持久出站队列出站队列异常队列出站信道安全控制安全控制路由控制可靠性通信子系统主要实现消息及文件传输以及路由,主要包括包括出站信道,入站信道、出站队列、入站队列、持久出站队列、异常队列、消息收发器模块、安全控制模块、路由管理模块和可靠性模块等。信道负责具体的消息在网络中传输任务。出站信道从出站队列或持久出站队列中读取消息,并将消息发送给目的应用;入站信道在没有消息到达的时候一直处于监听状态,消息到达后将其发送到入站队列中。队列分包括出站队列、入站队列、持久出站队列和异常队列等。入站队列接收入站信道接收到的消息,并等待消息收发器读取;出站队列从消息收发器接收消息,并等待出站信道读取;持久出站队列用于存放在数据交换平台抽取时过程复杂、耗时或者接收方不稳定(或不在线)时的消息;异常队列接收路由失败、出站信道发送失败的消息,并等待消息收发器读取返回给数据交换平台/应用系统。除了持久出站队列的消息是保存在硬盘外,其他队列的消息都是存放在内存中的。队列都采用先入先出的管理模式。队列中的消息只能被读取一次,读取后会被系统删除,即消息只能被“消费”一次。路由管理主要的工作是维护路由表,为消息的出站提供服务。路由表包含有节点路由信息,包括:节点代码,节点地址,节点出站/入站信道种类及相应的端口,节点的上下级,节点是否在线,访问节点的授权,是否需要经过其他节点转发,消息转发路径,传输数据时需要满足的前提条件、路由时间延迟要求、可允许的失败连接的次数等。消息入站时,消息收发器从入站队列和异常队列读取消息,消息出站时,应用系统通过ESB代理将消息发送给消息收发器,由收发器将消息发送到出站队列或持久出站队列中,进而消息通过出站信道发送出去。消息发送失败时,消息收发器从异常队列中读取消息,并将其反馈给消息的发送端。安全控制模块用于保证消息在节点之间传输时的安全,通过消息数据编码及加密来保证消息在网络传输中的安全和完整性。可靠性可靠性模块保证消息在网络中传输的完整性和准确性。出站信道根据路由表中的“节点地址”,“路由时间延迟要求”,“可允许的失败连接的次数”等原则发送消息,路由失败或者发送失败时,该消息会被发送到异常队列中,最终通过消息收发器通知数据交换平台/应用系统该消息发送失败。通信代理子系统DXPAGT实现Socket接口WebService接口Remoting接口优先级处理消息群发同步消息处理异步消息处理DXPComm接口服务状态监控管理消息处理配置管理日志管理接收消息处理Socket接口WebService接口Remoting接口发送接口接收接口发送处理双机热备模块通信子系统应用系统通信代理子系统DXPAGT主要负责与应用系统进行通信,同时调用DXPComm进行数据交换。通信代理还提供同步传输、消息反馈、错误重试、失败告警等一系列功能并支持双机热备。DXPAGT由三个接口模块及十一个主要功能模块组成,分别为:Remoting接口、Socket接口、WebService接口;优先级处理模块、消息群发模块、同步消息发送模块、异步消息发送模块、接收消息处理模块、服务状态监控模块、系统管理消息处理、日志管理模块、配置管理模块、双机热备模块以及DXPComm接口模块。Remoting、Socket、WebService接口模块主要实现与应用进行通信的接口;DXPComm接口模块用于与通信子系统DXPComm进行通信;优先级处理模块、消息群发模块、同步消息发送模块、异步消息发送模块、接收消息处理模块五个模块用于消息通信的处理;服务状态监控模块、系统管理消息处理模块、日志管理模块以及配置管理模块用于状态监控及管理。双机热备模块主要用于双机热备,这是为保证可用性的关键模块,也是实现较为复杂的模块,下面具体描述双机热备模块的实现方式。DXPAGT中双机热备模块实现原理:以内存镜像方式实现双机热备。1.双机热备结构图:服务器S2服务器S1发送成功库发送队列A1待发列表A1发送失败库DXPAGT(A1)DXPAGT1(A2)发送队列A2发送成功库发送队列A2待发列表A2发送失败库发送队列A1路由配置:APP1:A1APP2:A2App3:A1APP1路由配置:APP1:A1APP2:A2App3:A1接收列表A1接收列表A2共享存储:信号文件A1,A2接收列表A1接收列表A2上图为两台主机对App1接入的热备示意图App1:应用系统服务器S1,服务器S2分别的网络负载平衡中两台主机发送成功库:消息发送成功则保存在文件中