APP下载

EJB部署体系改进

2017-02-03殷海光王卫东

电子设计工程 2017年21期
关键词:体系结构组件部署

殷海光,王卫东

(江苏科技大学计算机科学与工程学院,江苏镇江212003)

基于构件的软件复用作为一种提高软件生产率和软件质量的有效途径,是近几年软件工程界研究的重点之一,被认为是继面向对象方法之后的一个新的技术热潮[1]。另外随着软件系统的规模和复杂性的增加,软件体系结构的设计成为极为重要的因素,三层客户/服务器体系结构为企业资源规划的整合提供了良好的框架,是建立企业级管理信息系统的最佳选择。随着体系结构的发展,目前在多层应用结构方面出现J2EE技术和.net技术等不同的解决方案,二者各有优缺点,分别适用于不同规模的系统的要求。J2EE平台的核心就是EJB(EnterpriseJavaBean)构架。EJB是开发、部署和管理可靠的企业应用程序的一种最新框架。EJB组件作为J2EE的最重要的开发构件技术,EJB位于J2EE业务层,主要用来实现企业级应用中的业务逻辑,并且EJB技术作为J2EE中唯一的开发构件的技术,研究EJB部署体系结构与应用具有重要意义[2]。

文中探讨EJB的部署体系结构的特点,研究采用EJB部署体系结构的应用系统的开发模型,对现有的EJB部署体系结构进行改进,提出了一种更适应于大型企业的分布式多层EJB部署应用体系结构的参考模型,提高了原有体系结构的可扩展性和访问效率,使J2EE/EJB多层体系结构更能适应大型的企业应用的需求。

1 EJB架构

1.1 EJB概念

EJB(Enterprise Java Beans)是基于分布式事务处理的企业级应用程序的组件。Sun公司发布的文档中对EJB的定义是:EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。

在开发分布式系统时,采用EJB可以使得开发商业应用系统变得容易,应用系统可以在一个支持EJB的环境中开发,开发完之后部署在其它的EJB环境中,随着需求的改变,应用系统可以不加修改地迁移到其它功能更强、更复杂的服务器上。EJB在系统实现业务逻辑层里面负责表示程序的逻辑和提供访问数据库的接口。

1.2 EJB组件的体系架构

EJB的架构主要包括以下几方面:

1)Enterprise Java Bean类:包含了组件的实现细节,是实际完成bean功能的地方。EJB容器根据需要调用这个类对bean进行实例化。

2)EJB对象:在服务器端,一个EJB对象是一个实现了bean的远程接口(具有网络功能)的分布式对象,它在服务器端上包装了bean的实例。EJB对象由容器控制在适当的时机调用所需的服务,这些服务对客户而言是透明的。

3)Remote接口:遵照EJB规范,所有的Remote接口都必须来源于一个通用的接口,包含了EJB对象必须实现的方法。

4)Home接口:开发者必须定义home接口,容器厂商则提供从home接口中产生home对象实现的方法。

1.3 EJB组件的工作流程

EJB Component在部署到应用服务器上之后,客户端就可以调用它来完成各种功能。工作过程如下:

1)客户端首先通过JNDI服务检索Home对象。在EJB应用部署到应用服务器上之后,容器会自动获得Home对象的信息并将其加入到JNDI中。

2)JNDI服务返回所查找的Home对象的引用。

3)Home对象的创建或者查找EJB对象。

4)Home对象将获得的EJB对象返回给客户端。

5)客户端利用获得的EJB对象引用,调用业务方法。

6)EJB对象获得对应bean的一个实例并将相应的业务方法调用传递给该实例。

7)Bean实例通过其实现代码,完成相应的业务逻辑并将结果返回给EJB对象。

8)EJB对象将方法的结果返回给客户端。

2 现有的EJB部署体系结构

文献[3]中提出了一种EJB组件的部署体系结构,如图1所示。在这个体系结构中,采用EJB技术开发,将各个模块开发成相对独立的EJB组件,并将其部署在不同的服务器上,这样也就是将各种任务与功能的类放到不同的服务器上,然后通过各个服务器间建立的调用规则实现分布式的运算。原来在一个计算机上运算的几个类,分别放到其他计算机上去运行,以便分担运行这几个类所需要占用的CPU和内存资源。同时,也可以将不同的软件功能模块放到不同的服务器上,当需要修改某些功能的时候直接修改这些服务器上的类就行了,修改以后所有客户端的软件都被修改了。

图1 现有的EJB组件的部署体系结构

但是这种部署体系存在两个问题,一个问题是:多个模块服务器对应的是同一个数据库服务器,现在如果想实现各个服务器针对同一个数据库的查询,那么,不管部署多少个功能服务器,都需要针对一个数据库服务器进行查询操作。也就是说,不管你的"计算"有多么"分布"也同样需要从一台服务器中取得数据。虽然,看起来将各个功能模块分布在不同的服务器上从而分担了各个主计算机的CPU资源,然而,真正的瓶颈并不在这里,而是在数据库服务器那里。数据库服务器都会非常忙的应付各个服务器的查询及操作请求。因此,通过这个结构图使我们了解到了EJB根本不能完全解决负载的问题,因为,瓶颈并不在功能模块的所在位置,而是在数据库服务器这里。

另一个问题是:图1这种架构中存在两个网络,一个是"网络1",一个是"网络2",这两个网络是不同的。"网络2"往往是局域网,一般带宽是10M/100M,速度较快,因此到还好说,然而,"网络1"往往是互联网或者是利用电信网络互联VPN网或称广域网。"网络1"的特点是带宽一般较窄,如ADSL的网络仅仅有512K-2M的带宽,即使现在提速了,依旧达不到局域网的带宽,由于广域网互联的成本较高,所以一般不会有较高的带宽。而在这个网络上恰恰传输的是功能模块和客户端软件之间交换的数据,而这部分数据恰恰优势非常占用带宽的。因此,这个应用架构其运行速度使非常的慢。

3 EJB部署体系结构的改进

图2对以前的部署体系做了两点改变,一是在应用模块和应用之间添加了服务模块的中间结构,该服务模块对外主要负责的是提供数据,负责应用和具体模块之间的数据传递。服务模块内部选择使用哪个模块,由选择的模块操作数据,然后传递数据到服务模块,然后对外提供数据。经过改进后,应用端只需要把需求的信息发送到服务模块,由服务模块选择下级模块,并且获取数据,然后由服务模块将数据传递到应用端。这种方式下,主要的数据获取以及操作都是在服务器之间进行操作,已知的服务器之间的网速是很快的,能够达到百兆级别,将耗时的工作放在服务器之间,就是“网络3”。这样就可以很好地避免因为“网络1”的速度慢而导致的整个应用的速度的降低。

二是为每个服务配备了一个数据库服务器。在这种情况下,每个应用模块都可以操作全部的数据,并且只能操作对应的数据库服务器,不能操作其他模块的服务器。这样就不会出现多个模块操作同一个数据库服务器的情况。不需要排队等待操作统一数据库的情况,也就不会花费大量的时间用在等待的情况上。这种情况下可以有效的解决负载均衡的问题,提高了整个应用的访问速度。

图2 改进的EJB组件的部署体系结构

图2这种EJB构件部署方式,不仅继承了之前的分布式的优点,而且在以前的问题上做了改变,可以弥补之前的问题,对于提高效率有很大的好处。在改进后的部署体系中,当用户只是访问应用的时候,我们不需要选择具体的下层模块,只需要面对服务模块即可,这样省略了选择时间,这样提高了访问效率。另外,当用户要操作数据的时候,我们只需要在服务模块上选择数据所属的下级模块即可,选择完后,由下级模块操作,并且操作的是自己的独有的数据库服务器,无需和别的模块共享数据库服务器,花费时间排队等待数据库服务器的响应,这样提高了用户的操作数据的效率。

4 两种部署体系的性能测试

使用学生管理网站进行测试。学生模块设计如图3所示。

图3 学生管理网站的模块设计图

图3就是学生管理网站的模块设计图,每个模块开发一个EJB组件,对于改进的EJB部署体系结构,还需要开发一个服务模块组件。然后根据两种部署的体系结构将组件部署到不同的服务器上。对于两种体系做实验,采集数据。实验结果对比如下:

表1是网站测试结果,测试出来的是网站的响应时间,连接时间,下载时间;从这些对比数据来说,采用新的部署体系,可以帮助减少响应时间,因为不需要连接具体的应用模块,只需要到服务端即可,提高了速度。连接时间也对比与传统的模式减少了30%。但是下载时间有所增加,是因为中间多了一个服务模块,增加了转发时间。总的耗时还是改进方式少,所以从网站测试方面来说,应该采用改进的模式。

表1 网站测速比较

表2 网站数据操作比较

表2是负载测试结果,主要的是采用对两种部署体系,由用户向数据库做1 000次的查询,查询中包括所有的模块,测试其中的消耗时间,以及正确率。从结果来看,消耗时间减少了12.5%,正确率提高了2%。这是因为在新的改进部署模式中,每个模块对应一个数据库服务器,不需要排队等候查询,只需要操作自己对应的数据库即可,提高了效率,而且不会出现与其他模块数据交叉的问题。

由两次测试结果得知,还是改进模式的性能更好一点。

5 结束语

通过实验,EJB部署体系的改进确实能够提高网站的性能,能够解决数据库负载的问题,以及网络传递数据慢的问题,对于提高应用开发有很大的好处。但是同样存在一些小问题,还需要改进,就是改进后对于服务器的硬件资源需求增大了,对于一些小型的项目来说,成本太大,需要综合考虑。

[1]张友生.软件体系结构[M].北京:清华大学出版社,2004.

[2]梅宏,申峻嵘.软件体系结构研究进展[J].软件学报,2006(6):1257-1275.

[3]陈立岩.EJB组件技术及应用[J].计算机技术与发展,2007(3):62-64.

[4]刘恒.EJB性能改进研究与实践[J].微计算机信息,2006(09X):313-314.

[5]梅宏,陈锋,冯耀东.ABC:基于体系结构、面向构件的软件开发方法[J].软件学报,2003(4):721-732.

[6]黄全舟,梁广吉.EJB体系结构及其应用研究[J].计算机技术与发展,2006(11):148-150.

[7]钟元生,徐娟,陈媚.网站功能与性能测试方法初探[J].计算机系统应用,2007(11):109-113.

[8]邓雄,常创业,吴际,等.模型驱动的EJB构件测试建模研究[J].电子学报,2006(S1):2467-2472.

[9]陶传奇,李必信,Jerry Gao等.基于模型的构件软件修改影响分析[J].软件学报,2013(5):942-960.

[10]孙小兵,李斌,陈颖.软件修改影响分析研究与进展[J].电子学报,2014(12):2467-2476.

[11]钟冠群,李佳伦,杜辉.基于构件的软件工程中构件模型的分析[J].科技信息,2010(3):44-45.

[12]赵会群,孙晶,魏莹,等.基于模型的网构软件可达性检测方法研究[J].计算机学报,2011(6):1001-1011.

[13]Hubert Garavel,Frédéric Lang,RaduMateescu.An overview of CADP 2001[C]//Proceedings of the European Associa-tion for Software Science and Technology(EASST)Newslet-ter,2002(4):13-24.

[14]Hassan A E,Holt R C.Architecture Recovery of Web Applications[C]//In Proceedings of 24th International Conference on Software Engineering,2002:19-25.

[15]Schlingloff Holger,Martens Axel,Schmidt Karsten.Modelingand modelcheckingWeb services[J].ElectronicNotesinTheoreticalComputer Science,2005,126(8):3-26.

猜你喜欢

体系结构组件部署
无人机智能巡检在光伏电站组件诊断中的应用
一种基于Kubernetes的Web应用部署与配置系统
晋城:安排部署 统防统治
新型碎边剪刀盘组件
部署
U盾外壳组件注塑模具设计
基于粒计算的武器装备体系结构超网络模型
部署“萨德”意欲何为?
作战体系结构稳定性突变分析
基于DODAF的装备体系结构设计