薛媛媛 王晓英
(青海大学计算机技术与应用系,青海西宁 810016)
随着计算机技术的发展和互联网应用的不断普及,越来越多的企业实施了信息化建设,开发了企业内部的各种应用系统。但是,由于企业在信息化实施的过程中,具有缺乏总体性规划及系统开发的阶段性等特点,导致了各系统的硬件、操作系统、运行环境、数据存储等有很大的区别,各系统之间彼此独立、不能共享信息,从而形成许多信息孤岛,制约了企业信息化进程的推进。如何能够及时、可靠、安全、动态的管理企业的业务数据信息,为不断变化与增长业务提供支持,成为企业资源管理的重要问题。由于企业1业务信息不断迅猛的增长,需要设计一种能够快速部署、集中管理、高效可靠的企业级数据中心作为基础设施。
目前,对各系统之间的信息资源进行整合的研究已经成为业界焦点,并概括地提出了中间件、数据同步复制、二次开发和同一标准四种整合方法[1]。目前比较流行的中间件有BEA的Tuxedo、IBM的CICS和东方通公司的TongEasy,但是它们的费用和维护成本过高。考虑到降低中小企业实施信息资源整合的成本,本文基于降低系统资源消耗、提高网络传输效率的原则,结合中间件思想,开发了一套基于DTS(Distributed Transaction Server,分布式交易服务器)技术的数据交换平台以实现对企业信息资源的整合。
中间件技术是指位于平台和应用之间的通用服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现[2]。中间件能够运行于多种硬件和操作系统平台上,支持标准的协议、标准的接口,支持分布计算,提供跨网络、硬件和操作系统平台的透明的应用或服务的交互,并且能够满足大量的应用需要。中间件提供的标准协议和程序接口定义了一个相对稳定的高层应用环境,不论计算机底层的硬件和系统软件如何更换,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需要任何修改,从而降低了企业在应用系统开发和维护中的投资成本。
DTS是一套基于C/C++语言开发的分布式服务中间件。它是介于客户机与服务器之间的夹层,突破了二层C/S结构的局限性,为构建大规模、高性能、分布式C/S应用程序提供了通信、压缩、加密、事务、安全、容错等基础服务。它屏蔽了底层在硬件设备、操作平台及数据库平台上的技术细节,使应用程序开发不必再从底层做起,以自身的复杂性换来了应用程序开发的简单化,保证了系统的扩展性和分布式运行的可行性,从而实现信息系统的一体化[3]。
DTS架构模型如图1所示。
DTS技术主要采用了C-M-S三层架构模型。C-M-S是指客户、中间件、服务器三层结构,它是通过国际标准的C/S(客户/服务器)结构发展而来的。DTS的三层架构(数据库层、DTS交易服务中间件层、客户端层),使得客户端无法直接访问数据库,从而使得核心数据库的安全可靠得以保障。而DTS作为应用服务器的构筑平台,很好的支持了全局事务管理、分布事务管理、负载均衡和优先级管理。同时,DTS 作为一种多语言、可任意伸缩的事务处理平台,它提供了用户为实现下列目标所必需的任务关键型基础结构:
● 增强现有应用的可访问性
● 整合企业事务处理方案
● 采用Web 服务的核心应用
● 确保应用最高的可用性和吞吐量
● 提升处理效率,改善资源管理
图1 DTS架构模型
● 降低总体拥有成本
(1) 采用标准C++开发
整个服务软件包均采用标准C++开发,性能高,所需数据交换空间较小。在相同的硬件资源条件下,能提供更佳的性能。
(2) 网络流量的提升
网络流量是制约网络应用的关键之一,DTS对业务系统产生的原生数据进行20倍压缩,并对数据进行加密,提高了网络传输效率和安全性。
(3) 实现无状态会话管理功能
会话状态管理是制约网络用户数量的关键,抛弃会话状态,降低内存占用,能最大限度的增加并发连接数,同时提高响应速度。
(4) 建立负载均衡机制
DTS内建负载均衡机制,不但能实现物理服务器层次的负载均衡,还能实现业务请求级别的负载均衡,从而提升响应效率,降低资源消耗[4]。
(5) 实现服务自动管理功能
当某个中间件服务发生异常而崩溃,服务管理组件能及时发现,并自动重新启动该服务。
(6) 面向服务的请求处理模式
DTS可向外部提供WebService和Socket服务。采用Socket进行连接,提高了网络传输效率。
(7) 提供无限制的客户端开发工具
服务器端与客户端采用标准字符流和标准XML进行数据传输,因此客户端开发工具可以自由选择,充分利用原有资源。
(8) 客户端动态局部自动更新
客户端可实现复制式安装。同时采用组件化开发,客户端动态探测各组件版本,自动更新当前使用业务组件,减小网络负荷。
(9) 实现客户端数据缓存
客户端处理业务数据后,发生网络中断,数据可以保存在客户端,等待网络畅通后提交。保障业务数据不丢失。
DTS系统的逻辑构件如图2所示。包括数据库连接池组件、轻量级数据库映射组件、DTS公共业务子系统、通用打包解包组件、数据压缩加密解压解密组件、网络通讯队列管理组件,以及软件路由组件和服务监控管理组件。
(1) 数据库连接池组件:该组件主要实现对数据库连接进行自动管理,可以配置连接Oracle数据库和MySQL数据库[5]。连接池里可以配置数据连接数量,以及连接数据库种类,默认连接数量为20个,可以根据实际情况自动增删连接,如连接不够用,会自动添加新的连接进入连接池,提供系统使用,当连接池数量足够使用时,连接池可以自动删除多余的连接,并释放多出来的连接恢复到默认连接数量(如默认20条连接数量)[6]。
(2) 轻量级数据库映射组件:该组件类似与内存库的作用,主要目标实现数据缓存,提高数据使用效率,降低整个系统的数据使用开销[7]。该组件主要的实现原理是通过数据结构在DTS启动后,将读取稳定不变的数据库表里的数据,并保留在DTS内存数据结构中,以提高外部系统调用数据时的读取性能[8]。该组件调用组件为数据库连接池组件。
(3) 通用打包解包组件:该组件主要实现对传输数据的数据规则,实现数据进行传输时的通讯协议,数据格式支持两种格式:字符串类型(string)或XML类型。
(4) 数据压缩加密解压解密组件:该组件主要提供数据在传输过程中的压缩加密算法和数据解压解密算法,通过该算法提高了网络传输效率和网络安全性。
图2 DTS的逻辑构件
(5) 网络通讯队列管理组件:该组件主要提供客户/服务网络通讯功能,并且加入了队列调度和多线程控制,以提高服务器并发处理业务的能力。
(6) DTS公用业务子系统:该组件提供了DTS内部调用规则,主要负责全局调度,和相应的业务功能处理,并把关键业务放在该组件内执行,并兼有各组件协同调度管理的功能,调用组件为:数据库连接池组件、轻量级数据库映射组件、通用打包解包组件、数据压缩加密解压解密组件、网络通讯队列管理组件。
(7) 软件路由组件:该组件主要功能是实现分布和负载均衡的作用,提供可配置的业务级别的分发和负载均衡,可以将业务级别的服务分布部署在不同的服务器上,进行有效的服务器性能均衡,提高服务器的利用效率,该组件调用的组件为DTS公用业务子系统。
路由表信息如下:
IP START://为标准服务
127.0.0.1 :8000;
SERVER START:
CONFIGSN:CONFIGSN_A;
COLUMN_CONFSN:COLUMN_CONFSN_A;
TABLEOBJECT:TABLEOBJECT_A;
MULTI_TABLE_AFFAIRSSN:MULTI_TABLE_AFFAIRSSN_A;
SQL_DYNAMIC:SQL_DYNAMIC_A;
SEQSRVSN:SEQSRVSN_A;
SERVER END;
IP END;
IP START://权限管理服务
127.0.0.1 :9000;
SERVER START:
ORGMANAGERSN:ORGMANAGERSN_A;
QXGLSN:QXGLSN_A;
SERVER END;
IP END;
(8) 服务监控管理组件:该组件主要实现对服务的监控管理,并具备探测服务是否有效的管理,如果服务已经非正常关闭或不提供服务了,监控程序将自动重启服务,整体提提高服务器的有效服务时间和减少宕机的几率。
作者应用开发的是一个基于DTS技术的企业信息门户一体化平台系统,其系统架构如图3所示。本系统主要由客服管理平台、物资管理平台、办公自动化管理平台和Web网站宣传平台四个子系统,以及组织机构管理、岗位管理、人员管理、权限管理和综合统计报表五个基础模块构成,其中,综合报表模块是根据各个子系统的数据挖掘结果进行统计。系统设计的最终目标是把各个业务子系统整合到一个统一的平台上,并进行数据标准化管理和数据大集中化安全管理。通过对各个子系统的规划和整合,让整个平台在规范统一的管理体系下进行运转,使得岗位明确、协同办公、统一报表、统一规范。
作者实现的企业信息门户一体化平台系统的主要功能模块如下:
(1) 权限管理功能模块
权限管理在整个系统中属于最基本的业务模块,它不仅体现了一个组织机构的体系结构,而且会为其他模块提供一种可管理的权限模型,这种模型可以为开发其它业务模块提供更多的管理功能,并可以简化更多的开发工作量而提供支持,其中主要实现了组织机构管理、操作员管理、岗位管理、岗位授权、人员授权、管理单元维护和管理单元授权等功能。
(2) 产品分类管理功能模块
该模块主要是建立一套产品分类体系,为各种业务信息提供数据基础,属于全局性数据,其中主要实现了分类管理和属性管理的功能。
(3) 企业客户管理功能模块
该模块主要提供对企业客户和团体客户的信息管理,主要实现企业客户管理、安装服务管理、维护服务管理和保养服务管理等功能。
(4) 个人客户管理功能模块
该模块主要提供对个人客户的信息管理,主要实现个人客户管理、安装服务管理、维护服务管理和保养服务管理等功能。
图3 DTS应用实例系统架构
动态实现客户端调用oracle存储过程的函数
Int oraCon::procedure(string procedureStr,TElement*value)
{ --------
for(int i=0;i<value->getTableFieldCount();i++)
{ string fieldName = value->fieldName[i];
int len = value->getFieldLength(fieldName);
string fieldValue = value->getFieldValue
(fieldName);
char *tmp = (char*)malloc(len);
memset(tmp,' ',len);
if(fieldValue.length()>0)
strcpy(tmp,fieldValue.c_str());
vtmp->push_back(tmp);
short isNull=0;
cur.bind(":"+fieldName,tmp,len,&isNull);
}
return 0;}
建立oracle连接对象函数:
oraCon::oraCon(string ip,string sid,string user,string passwd,string port)
{ ACE_TRACE("oraCon");
con = new Connection();
char cTns[1000];
IP = ip;
SID = sid;
USER = user;
PASSWD = passwd;
PORT = port;
sprintf(cTns, "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=%s)(PORT=%s)))(CONNECT_DATA=(SERVICE_NAME=%s)))",IP.c_str(),PORT.c_str(),SID.c_str());
TNS = cTns;
ACE_DEBUG((LM_DEBUG, ACE_TEXT ("cTns=%s "),cTns));
db::init();
db::connect(TNS,USER,PASSWD,*con);
}
本系统实现了业务级别的分布部署,而不是简单的程序功能分布部署,用户可以根据业务压力强度将其分别部署到不同的服务器集群中,更有效的实现压力的分担,缓解压力。使用DTS技术实现的平台系统,具有统一规范的体系结构和开放的API接口,当企业有新的业务需求时,可直接进行二次开发,可在规范的框架上迅速搭建企业信息化所需要的业务功能,实现时只需关注数据库设计与DTS数据配置、以及客户端的数据展现形式,从而降低了开发的难度、提高了开发效率。
本文针对企业级信息化管理中存在的问题,提出了采用中间件技术对信息资源进行整合管理,对系统整体架构和功能进行了设计与实现,并给出了具体的应用实例。使用DTS技术开发的企业级信息系统,使得程序开发降低了难度,能够大大缩短程序开发的周期,同时提高了系统的安全性和可靠性,降低了维护成本。目前,已使用DTS技术开发的企业信息平台运行稳定,维护方便,但是在网络监控、系统成熟度、以及小型机和高端硬件设备支持程度上还需要进一步完善;同时,对各种软硬件系统的兼容性和扩展性方面仍需要进行大量的测试工作,以适应不同的平台环境。
[1]Yun TAO, ”Analysis on the Methods of Information System Integration,” Agriculture Network Information, no.9, pp.68-71, 2010.
[2]Xin Huang and Shenghua Geng,” Research of Multitier Architecture Based on Tuxedo,”Computer Engineering and Applications, vol.39, no.1, pp.94-95,2003.
[3]Huiqin Sun,Zhang Xiong and Jun Han,”The Design and Implementation of Transaction Middleware,”Computer Engineering and Applicatiog and Xiaoli Sun,”Design and Implementation of Effectns, vol.39, no.3, pp.139-141,2003.
[4]Haitao Tang,Shuyi Wanive Web Server Load Balancer,” Computer Engineering, vol.32, no.20,pp.279-281,2006.
[5]Rong Luo and Xuebing Tang,”Design and Realization for JDBC-based Database Connection-pool,”Computer Engineering, vol.30, no.9, pp.92-93,111,2004.
[6]Jun Xie,Ming Chen and Rong Fu,”Improvement and Implementation of database connection pool technology base on Java,”China Science and Technology Information, no.4, pp.135-137,87,2007.
[7]Workflow Management Coalition.WFMC-TC–1009 Workflow Management Application Programming Interface( Interface 2&3) Specification,1998.
[8]Qinfa He,Guojie Li and Limei Jiao,”Relation-Based Lightweight Workflow Engine,”Journal of Computer Research and Development, vol.38, no.2, pp.129-137,2001.