中间件服务器

2024-09-01

中间件服务器(共12篇)

中间件服务器 篇1

1 概述

应用服务器中间件又称为“应用服务器软件平台”,是当代软件的基础设施,是最为重要的一类中间件。应用服务器可以把不同的应用软件作为构件整合到一个协同工作的环境里,并为应用提供了名字、事务、安全、消息、数据访问等服务,此外它还提供应用构件的开发、部署、运行及管理功能。

近年来,不仅国外著名厂商如IBM、BEA、Oracle等纷纷推出了自己的应用服务器,随着国内市场需求的扩大,中国中间件厂商也已经开始涉足应用服务器领域并形成了有竞争力的产品。目前,国内的J2EE应用服务器产品主要有中创软件商用中间件公司的InforWeb应用服务器、金蝶软件的Apusic应用服务器、东方通科技的TongWeb应用服务器等。

2 技术标准现状

当前应用服务器厂商使用最广泛的是J 2 E E 1.4,其核心架构与J2EE1.3一样,只是增加了一些增值服务并升级了一些原有规范。J 2 E E 1.4增加的新特性主要包括对W e b S e r v i c e的支持 (W e b S e r v i c e、J A X-R P C、S A A J、J A X R) 、消息传递的完善 (E J B 2.1) 、部署和管理的增强 (J M X、M g m t) ,以及使W e b应用开发变得更加容易 (Servlet2.4、JSP2.0) 。由于J2EE4.1标准中规定的E J B 2.1框架实现起来过于复杂,S U N公司于2 0 0 6年发布了J2EE5.0版,此新规范最重要的两个变化:一是使用了J a v a 5中的程序注释工具,注释取代了过多的X M L配置文件并且消除了严格组件模型需求;二是采用了基于Hibernate和TopLink思想的O/R Mapping模型。目前国内的一些中间件厂商正在研发J2EE5.0的应用服务器中间件产品。

可以说,横向上J 2 E E应用服务器作为衔接任何网络客户和各种数据存储层的桥梁,内部可以透明地完成业务逻辑、事务管理、消息传递、安全管理等全面的任务;在纵向逐渐向上延伸贴近应用,集成应用框架方面的内容,简化应用开发。

3 国内应用服务器标准的研究制定

在对中间件标准研究的过程中,我们多次同国内的中间件厂商共同探讨了中间件技术和标准的发展情况,并针对目前中间件应用较广的国产应用服务器以及应用服务器与其他国产基础软件之间的兼容性问题进行了深入的探讨,各参与单位一致认为有必要制定一个国产应用服务器的技术规范,来解决国产基础软件之间的适配问题。鉴于此研究制定了国产应用服务器的技术规范,并将其应用在“基于国产软硬件公共信息平台关键技术开发及研究”项目中。

3.1 应用服务器技术规范制定背景

目前国产应用服务器中间件产品都是基于J 2 E E规范研制的,但是产品在实际的应用过程中,不同厂商生产的应用服务器不能兼容和互换,由于不能互迁移,造成的结果就是,一旦上层应用要从一家的应用服务器移植到另外一家应用服务器上,需要手动部署各配置项,非常耗时而且不方便。

目前,我国的软件厂商在做产品研发时主要向市场上主流的产品看齐,而在软件市场上主流产品的厂商主要是国外的一些大公司,所以国内厂商在做产品的兼容性测试过程中,都做过与市场主流的产品之间的兼容性测试。比如应用服务器的国内厂商在作兼容性测试时,一般都会选择W e b L o g i c、W e b S p h e r e进行测试。而国内厂商之间从来没有做过产品之间的兼容性测试,中间件厂商之间互不了解产品的情况,产品无法做到二进制兼容,比如对产品的部署、E J B容器的j a r包文件的部署上各家实现的方式不同;同时由于各厂商对产品开发的一些情况一般都不对外公开,所以也造成应用服务器厂商无法去调用国内数据库产品。

鉴于目前应用服务器的应用越来越多,针对国内应用服务器存在的一些问题,大家共同研究制定了应用服务器技术规范。

3.2 应用服务器技术规范的主要内容

此规范的制定是以J 2 E E这样一个事实标准为基础,根据国产应用服务器所具有的功能和性能,重点考虑国产应用服务器之间的迁移问题,而且还要求国产应用服务器必须支持国产的操作系统和数据库管理系统。

按照此目标,从应用服务器的架构和组成、W e b组件和E J B组件的功能要求、应用服务器的服务要求、质量特性要求、开发及运行环境、产品需要依从的标准列表、标准的应用部署描述文件等方面进行要求和规定,具体内容如下:

●W e b组件部分对S e r v l e t组件和J S P组件进行了规定。主要包括Servlet需要符合的技术标准、Servlet环境、Servlet类、Servlet生存周期、Servlet过滤、事件监听、会话管理、Servlet异常处理、Servlet API、J S P规范支持、J S P生命周期、J S P元素、J S P支持的缺省对象以及对多语种的支持等。

●E J B组件主要对E J B需要符合的技术标准;会话B e a n、消息驱动B e a n和实体B e a n所应具有的功能;容器管理的事务;容器管理的持久性;实体B e a n之间的关系、E J B-Q L查询语言等方面进行了规定。

●服务要求主要从H T T P S/H T T P服务、名字和目录服务、消息服务、事务服务、安全服务、数据库连接服务、J a v a M a i l服务、W e b服务等方面进行了规定。

●开发及管理要求主要从W e b应用、W e b包结构、W e b应用互换;E J B应用、E J B包结构;企业应用;应用的部署和卸载;管理工具;日志管理;集群请求转发功能等方面进行了规定。

●质量特性要求主要从产品的易用性、可靠性、可移植性等方面进行了规定。

●运行环境要求主要对应用服务器的运行、开发环境进行了规定。

事实标准J 2 E E只是对应用服务器中间件所应具有的功能进行了规定,而对产品的质量属性没有进行规定,本规范根据J 2 E E的相关要求不仅对产品所应具有的功能进行了规定,同时按照GB/T 16260的相关要求,根据国产应用服务器中间件产品的特点,对产品的质量属性进行了规定,也可以说这是首次将软件质量属性引入到产品规范中。

如为了保证产品的可移植性,规范的第5.5.2条的应用要求中,对包的结构、W e b互换进行了规定,要求所开发的应用服务器必须符合本规范附录B、附录C、附录E中列出的W e b.X M L以及E j b-j a r.X M L的标准部署描述符及其D T D格式,以屏蔽各家特殊的部署描述符,从而保证W e b应用的可移植。

对操作系统的支持:规范在6.4条对应用服务器的安装和卸载进行了规定“应用服务器的安装和卸载若需要J a v a运行环境:若自带J a v a运行环境,其安装和配置若修改操作系统配置环境变量,应不影响其他应用程序的正常运行,否则应支持操作系统所提供的J a v a运行环境”。

对数据库的支持:应用服务器应支持企业应用通过数据库连接服务访问关系型数据库。应用服务器应通过J D B C 2.0扩展A P I,支持本地事务和X A事务连接以及提供数据库连接池功能。

3.3 应用服务器技术规范的验证与测试

3.3.1 测试方案及测试规程的设计

目前,针对应用服务器的测试有S U N公司提供的兼容性测试工具C T S,但其结构过于庞大 (包含15 0 0 0多个测试点),环境搭建复杂,且不符合项目的实际要求。考虑到项目以及产品的实际情况,经协商决定不采用测试工具C T S,而是采取自主开发测试用例的方式对产品进行测试。

根据《基于J 2 E E应用服务器规范》,研究制定了测试方案和测试规程。测试方案包含功能点、编号、子功能点、测试步骤、通过条件五项,其中测试步骤一项中包含两个方面内容,分别面向程序设计人员和测试人员。测试规程是测试人员操作手册,根据此规程可以清楚地知道每个测试用例覆盖的子功能点、操作步骤和预期结果。

3.3.2 测试用例概况

(1)功能点的确定

由于J 2 E E规范结构庞大,内容繁多,对其每项要求均进行测试的可行性不高。在全面考虑符合性测试的覆盖面和可操作性的基础上,针对本次的规范符合性测试采取了对主要功能点进行抽取的方式。共抽取了12个具有代表性的功能点,在此基础上对每个功能点进行细化,共细化出了1 9个子功能点,编写相应测试用例2 9 2个。

(2)测试用例的开发

按照规范符合性测试要求,共开发测试用例214个,测试范围覆盖S e r v l e t、J S P、有状态会话B e a n、无状态会话B e a n、C M P 2.0 B e a n、B M P B e a n、容器管理的事务、CMR支持、EJB-QL支持、Taglib支持、消息Bean、J M S、J N D I、J a v a M a i l、J T A/J T S、J D B C、安全、集群共18个功能点,同时还对应用服务器的日志管理、开发、部署打包、管理等方面设定了检查项检查。

3.3.3 测试过程

在项目研究过程中对东方通科技公司的T o n g w e b产品和中创软件公司的I n f o r w e b产品进行了测试。

将测试用例分别部署到T o n g W e b和I n f o r w e b上均可正常运行,实现互换。测试用例部署截图分别如图1和图2所示。

通过制定测试方案,开发测试用例,对所制定的技术规范进行了验证,保证了技术规范制定的科学性和可行性,解决了国产应用服务器之间的应用可移植性问题,并实现了国产应用服务器与国产操作系统、国产数据库之间的互操性。

总之,应用服务器目前正朝着大而全的方向发展,“一个应用服务器,所有的中间件”可能成为下一代应用服务器追求的目标。

摘要:首先给出了应用服务器中间件的概念, 介绍了应用服务器中间件的技术标准情况, 重点阐述了国内应用服务器中间件规范的制定情况。

关键词:中间件,应用服务器,兼容性

中间件服务器 篇2

在移动互联网与移动终端设备(智能手机、平板电脑等)都全面飞速发展的今天,移动应用在这个巨大的浪潮中展露了头角,并不遗余力的全速开进。移动应用与传统IT相比较,传统IT系统的网络拓扑结构发生了变化,增加了移动终端,但事实上,IT系统的主体并未发生变化,只是表达层发生了变化。因此需要重构表达层,迁移以后的表达层是否可以继续使用这些技术?这是迁移的关键所在。最佳迁移方案是对原有结构的最小改变、沿用原有的表达层技术并能够充分利用移动终端新功能,起桥梁作用的移动中间件是实现这一目标的最佳选择。

一件事情的成功需要天时、地利和人和。目前,移动互联网这个大环境的飞速发展是天时;移动中间件自身的桥梁作用使其拥有巨大的潜力市场是地利;那么人和呢?移动应用领域的焦点问题——商业模式,可以做到。海比研究针对商业模式给予移动中间件厂商建议:采取开源的模式。

开源软件商业模式已经不是新鲜的事物,而移动中间件厂商采取这个方式有着很好的匹配度。移动中间件是新浪潮下的新鲜产物,新鲜的事物就需要有它创新的产品和服务,但事实上目前移动中间件的关注人群较低,业内的开发技术人员肯从事此方面工作的人毕竟是少数,因此就会导致低产出的创新产品和服务,不能跟上全局快速发展的步伐。如果采取开源的方式,这个瓶颈迎刃而解。建立自己的开源平台,然后将源代码的编辑技术开源,将工程化技术和服务技术收归自身版权所有。这样就赢得了开源软件的市场亲和力,同时赢得了广大的志愿开发者技术和创新的集合。因此就可以产生三个方面的赢利点:

第一,将开发志愿者开发出来的“半成品”进行优化、完善以保证企业使用的稳定性,安全性;

第二,软件提供免费,收取服务费;

中间件服务器 篇3

【关键词】面对服务架构消息中间件,业务流程系统的集成方法

【中图分类号】G29【文献标识码】A【文章编号】1672-5158(2013)07-0480-01

一、前言

依据企业信息化发展的阶段模式理论来说,企业在信息化的发展共有四个阶段。其中,引入阶段中,企业会运用一定的信息技术使得在企业内部的一些职能的部门能够将业务的流程实现自动化,当今很多的企业都已完成了这一阶段。集成阶段中,企业会在内部的职能部门间进行系统集成框架的建立和数据管理系统的统一,同时,也需要将计算机的软件系统实现在内部中的集成及综合的利用。这个阶段中,中间件的技术也产生了。在这种技术中最为重要的中间件是消息中间件,它具备跨平台,扩展性好及负载平衡的优点。消息中间件和面向服务架构之间的融合成为中间件技术的一种发展趋势。这样企业就可以及时并方便的对业务进行调整,对流程进行重组。流程的变革阶段中,企业与供应商和分销商这些工作伙伴通过信息和网络的技术使得资源和数据得到共享和整合。现在对于信息技术的运用较为成熟的企业有的完成了流程变革的阶段有的正处于这一阶段,在此之后将会进入战略变革的阶段。

二、 面向服务构架消息中间件

1996年,面向服务架构的概念被提出。它是一种在对象构件的计算模型的基础之上,把不同功能的单元用之前定义好的接口、契约联系起来,从而实现程序和服务上的重复利用的新型体系架构。面向服务架构包括三方面。其中,服务提供者是在根据网络导址这一实体来接受并且执行服务的使用者的要求。服务提供者从根本上来说是一种应用程序或者是软件快,它通过接口和契约来运行。服务注册中心是在服务中发现并支持,它来使得服务提供者找到服务使用者的接口。当下最为普遍的面向服务架构的技术叫做Web Service,这种技术的服务注册中心是通过描述并发现、集成来保存服务的注册的信息,利用简单对象的访问协议消息来达到服务的绑定及调用。中间件系统可以在不同的平台之间实现通信,从而达到在分布式的系统间可靠并且高效率的跨平台的数据传输工作。并且具有屏蔽在各种平台及协议间的性质,从而达到各种应用程序间的协同。现在,最为普遍的消息中间件是由消息服务器和数据的储存库及命名和目录的文档等等组合而成的,同时,采用了客户端和消息服务器这两层架构。其中,消息的服务器可以接收消息和发送消息,它根据查询命名和目录文档来获取每个消息服务器和消息对列等等的信息,这时数据的存储库将会用来保存通信中重要的数据。消息中间件的用户会使用应用程序接口技术来通过消息服务器进行发送消息和接收消息,达到企业的数据集成。近些年来,消息中间件技术发展非常迅速,它的研究的热点及关键的技术包括了系统的架构、负载平衡的技术及计算机的集群技术。在标准及规范上并没有得到统一,因此这种应用是不可以移植的。不同的消息中间件技术也是不能进行相互的操作。当下,消息中间件技术在中间件技术中依然是研究的热点。消息中间件最传统的采用的为客户及消息服务器上网架构,但是通过一系列的设计得到了一种客户、客户端和消息服务器的具有三层架构的消息中间件。其中,消息客户端是一种应用程序用来接受和发送消息。并且在发送端的用户和接收端的用户在使用同一个消息客户端时,它会从用户接受到的消息来直接的转发给那些接收消息的用户。这样的集成构架和转发消息的机制在一定程度上减少了消息服务器进行不必要的作业,同时大大提高了服务器对消息的发送效率。同时,消息服务器也可以使得在不同的计算机的消息客户端间进行消息的转发。面向服务架构的消息中间件是将web服务作为消息中间件的主要功能。并依照面向服务构架的标准在网络上发布,使得用户更方便使用。

三、 业务流程系统的集成方法

消息中间件于面向服务系统架构相结合,这样就产生了一种业务的集成方法。这种业务的集成方法的效率即重用性较高,还具有跨平台的优点。并且它采用了三层的系统架构,依次为服务层,逻辑的实现层及资源管理器。其中服务层是为用户直接的提供发送、接受或者转发的服务。发送和接受这两种服务是对于用户来说是开放的,但转发这种服务不对用户进行开放。消息中间件的功能想要充分的发挥靠的是逻辑实现层和资源管理器的运行。集成服务层的功能的逻辑上的实现靠的是逻辑实现层,它是由消息的客户端、服务器群和命名及数据的储存文件组合而成的。在多台计算机上部署消息客户端及消息服务器,这样就达到了消息中间件的集群的配置,并且在服务器端用负载平衡的算法以达到消息服务器及客户端两者的负载平衡。资源管理器有着发送接收消息、打开关闭消息的客户端或者服务器的功能。

四、 结束语

消息中间件技术作为一种有可靠的信息系统的集成技术,已在企业的信息系统的建设当中被普遍的使用。它在内部的跨平台的数据传输中具有很高的效率。当然,到了企业的信息化步入流程的变革阶段的时候,信息中间件技术会从传统技术转变为面向服务架构的技术。使之更能够适应高效快速的企业的业务流程,更加接近当代企业的需求。同样这种方法,为企业在信息系统的实施过程中及业务流程的集成中提供了一种新的方案。

参考文献

[1] 汪淼军,张维迎,周黎安.信息技术、组织变革与生产绩效——关于企业信息化阶段性互补机制的实证研究[J].经济研究,2006年01期

[2] 陈宏,曹健,旻梁.分布异构环境下的数据集成方法及应用[J].计算机工程,2005年05期

中间件服务器 篇4

随着计算机网络技术及应用的飞速发展,人们对高性能的网络实时软件的需求在不断的增长。发布式计算技术能为企业应用提供许多潜在的好处,但是,在开发的过程中却有着许多的问题,网络通信面临着硬件平台,软件环境,网络协议等的多样性和异种性。如果直接针对底层进行开发,那么在对应用程序进行移植时,需要重新设计和编码实现。例如,如果要将Windows平台上的某个网络应用系统移植到Linux平台时,则需要把应用系统中通过调用WinSock所实现的网络通信,改为用Socket接口在Linux平台上重新实现,这样就在直接应用底层进行开发将花费大量的精力,而且底层接口的使用具有一定的复杂性。ACE(Adaptive Communication Environment)自适配通信框架给出良好的解决方案。ACE能够跨多种OS平台,执行通用通信编程任务,它结合软件设计模式,使我们能够尽量避免重新开发和验证的重复劳动。

1 ACE框架和设计模式的介绍

ACE(Adaptive Communication Environment)是一种跨平台的网络中间件,它封装了底层API,屏蔽了系统间的差异,ACE可应用于实时系统,如医学系统,分布式光学系统,网络通信系统等。ACE体系包括三个层次结构。

1.1 操作系统适配层

对并发机制和进程间通信机制进行封装,采用模板技术对不同系统的通信API进行封装,对外提供统一的接口,消除了系统间的差异。它有如下功能模块:

(1)线程管理模块。ACE的适配层封装了用于多线程,多进程和同步的OS API。同时还集成了线程池的机制,它包含两种模型即半同步/半异步模型和领导者/跟随者模型。面的网络控制服务器采用了这种线程池的模型。

(2)进程间通信和共享内存。ACE的适配层封装了用于本地和远地IPC,以及共享内存的OS API。

(3)事件多路分离机制。

(4)文件系统机制。ACE的适配层封装了用于操作文件和目录的OS文件系统API。

1.2 OO Wrappers

应用C++的面向对象特性和模板实现内存管理。多线程及多进程管理,消息队列机制,动态服务配置,定时器队列等。在具体应用中可通过组合和聚合,选择和包装这些类完成具体的实现。

1.3 ACE框架组件

前摄器,反应器,任务,连接接受器等框架组件。ACE框架组件设计思想和设计模式是根据领域的特性来定制,ACE的框架中的一部分是通信系统特有的,将ACE这种框架和设计模式应用于系统的设计中,可消除系统底层通信编程的复杂性,大大缩短系统的开发周期。

所有结构良好的面向对象软件体系结构中都包含了许多模式,当判断一个面向对象系统的质量时,需要判断系统是否强调了对象之间的公共协作关系。设计模式使得人们可以更加简单和方便的去复用成功的软件设计和体系结构,从而能够帮助设计者更快更好的完成系统设计。面向对象设计模式有三种形式,创造型,结构型和行为型。在ACE中应用了面向对象软件设计技术和多种设计模式,如单件,桥接,观察者,模板方法,外观,工厂方法等。针对一些特定领域应用软件设计模式,搭建可复用的系统软件框架,这样使得网络编程人员把部分精力集中于如何完成应用系统软件功能的实现上。

2 构建视频会议控制服务器

2.1 业务需求分析

进入二十一世纪以后,“高效益”已经成为现代企业强调的重点。企业纷纷将过多的差旅开支列入削减成本计划,并将如何提高沟通效率,缩短决策时间,提升企业的管理能力提上日程,这就使的视频会议系统的市场越来越大。虽然硬件视频会议系统的性能优越,但其昂贵的价格使大多中小企业望而止步。而软件视频会议系统则是从企业用户的角度出发,利用企业现有的PC资源和互联网接入,为企业量身定做近乎完美的沟通协作平台。由于成本的大幅度降低,让它更符合大众的利益,市场容量也一下放大了很多倍,这也是软件视频会议系统近年来成为国际视讯市场最有潜力的产品之一。

基于C/S模式的视频会议系统的各个客户端的通信是通过会议服务器转发实现的,视频会议服务器的性能直接影响到整个环节的运行状况。因此,要选择合适的框架来进行软件架构的搭建。基于传统方式的网络编程要求变成人员从底层开始,这样要消耗大量的精力。而ACE自适配通信环境是可自由使用,开放源码的面向对象框架,它实现了许多用于并发通信软件的核心模式。利用中间件ACE框架组件可进行高效的网络编程,减少软件开发的周期和资金,因此采用ACE构建视频会议服务器。

2.2 系统设计与实现

会议控制服务器是视频会议系统流程的管理者和系统内部事务性工作的执行者。其模块结构如图1所示。

会议控制服务器分为五个模块,分别为事务处理模块,负责对数据库进行操作;网络通信模块负责网络套接字管理和消息队列管理;消息处理模块处理客户发来的消息;内存管理模块和线程管理模块。

(1)服务器实现的基本过程

首先,在Linux系统中启动服务器程序,在服务器程序初始化时候向统计服务器发送验证码,看服务器是否获得授权以保护软件。如果得不到授权则服务器启动失败。如果得到授权则把数据库启动起来,随即生成一个日志文件用于纪录系统运行时的状态,以便于维护服务器正常运行。然后对反应堆进行初始化ACEReactor::instance(reactor),以有效的利用资源。同时开三个端口:3500,3501,3502,其中3500来处理客户端的TCP连接处理,3501和3502用来处理UDP连接处理。然后进入无限循环来等待客户的连接,用ACEReactor::runeventloop()来做这个处理。这种服务器的主要功能有两点:第一就是做数据的转发,第二是对数据库的操作。

相关代码如下所示:

(2)内存管理

在内存方面采用了ACE提供的内存分配机制ACEMalloc。ACEMalloc模板需要两个参数,一个是内存池,一个是池锁。ACEMalloc从传入的内存池中获取内存;应用随即通过ACEMalloc类接口来分配内存。由底层内存池返回的内存又在ACE的“chunk”中被返回给ACEMalloc类,ACEMalloc类使用这些内存chunk来给应用者分配较小的内存块。

在应用请求内存时,ACEMalloc类回检查在它的内存池中获取的chunk中,是否有足够的空间来分配所需的block。如果未能发现有足够的空间的chunk,它就会要求底层内存池返回一个较大的chunk,以满足应用对内存block的请求。当应用发出free调用时,ACEMalloc不会把所释放的内存返还给内存池,而是由它自己的空闲表进行管理,以被后续使用。最后调用类给定的函数remove()将内存返还给系统。

(3)数据通信的实现

在系统中原则上是给每个客户分配两个线程,一个是接收数据线程,一个是发送数据线程。当客户端上线的时候,ACEReactor会检测到一个ACCEPT事件,并回调以登记的ClientAcceptor类中的handleinput()方法,在该方法中生成一个线程用来处理客户端——服务器之间的TCP通信和心跳信息,如果服务器超过30秒没有接到客户端发来的心跳信息就会做下线处理,这个线程的生命周期就是客户的生命周期。

当服务器要向客户端进行数据传输时,比如是文件的传输,客户在生成一个线程用于发送数据处理。因为数据传输的过程中,有两种形式的数据,一种是简单数据的获取以及命令的转发,由于这两类数据都比较小,因此,传输过程中,以数据报文的形式传递,可以达到理想的效果。当传输的是文件的时候,尤其是当文件比较大的时候,如果继续采用数据报的形式,系统效率将会非常低。因此,在实际系统中,采用了数据流的方式。但是,这个文件传输进程将会长期占用所分配的连接,而当又有新的文件传输请求连接的时候,这个连接请求将会被阻塞,造成应该上传数据的丢失。为了解决这个问题,使用多线程的方法,这种方法有明显的优点,那就是效率更高,但实现起来比较麻烦。我的实现是用了ACE中提供的的领导者/跟随者线程池模型。在这个模型中,一个线程被选作领导者,阻塞在“到来的回调事件”中,当发送请求到来时,领导者首先获得请求,把某个跟随者提升为新的领导者,然后继续处理所收到的请求。旧领导者把要发送的数据发送到相应的客户端;完成处理后,它就作为跟随者线程回到线程池的末尾继续排队。同时该服务器采用了Reactor事件响应模型。当服务器启动后,主线程会启动一个单例Reactor 反应器,接受线程池各线程的事件注册,同时它检测相应的Socket 端口。如果有满足条件的事件出现了,则会回调线程池中的线程,接收端口的数据。部分代码如下:

3 结束语

自适配通信环境对于通信软件的开发不仅具有高效性,灵活性的优点,同时更具有可移植性,可以非常容易地将ACE应用移植到几乎任何操作系统的平台上。整个系统经过一年多的时间,终于开发成功。其中,控制服务器的性能达到了预期的效果, 对服务器进行了强压力测试,服务器运行良好。

总之,在Linux 环境下,利用ACE合理地搭建通信平台,能够做到安全,高效。

参考文献

[1]Stephen D,Huston,James CE Johnson.The ACE Programmer’s Guide[M].马维达,译.中国电力出版社,2004.

[2]Douglas C Schmidt,Stephen D Huston.C++Network Programming,volume 1[M].马维达,译.电子工业出版社,2004.

[3]Douglas C Schmidt,Stephen D Huston.C++Network Programming,volume 2[M].马维达,译.电子工业出版社,2004.

中间件服务器 篇5

之前准备时,在网上搜了一下IBM电面.发现,问的技术问题很少, 但是基础.也有事实表明,面试官会问很多你简历里介绍的项目相关的东西.于是乎,就没有复习技术上的问题(导致后来很多的回答很糗), 只是熟悉了一下简历上的项目, 虽然后来这些都没问到, 但是, 总得防这一手吧!

面试前要做一些准备工作, 包括确保手机电源充足(一般的电话面试持续半小时), 确保手机有足够的话费, 安静的环境, 再有就是简历等相关材料.17点的时候,电话响了.两位GG,名字忘了.先是自我介绍(中文的), 这个嘛,准备过,好办.就说说面试官们想要的.基本信息介绍完了, 再说说自我评价和skillset就差不多了.然后,他们就让介绍一下在简历里重磅推出的竞赛项目.于是,我就开始从很high level的说起: 随着什么什么的日益增长,什么什么消费观念的转变什么的…

说了三句,被人家打断: 其实是这样的,如你前面所说,IBM是很务实的公司,我看,我们也不要从很high level方面去讲.说说具体的实现,实在的东西吧.我连连称是!

(然后,我一阵冷汗, 哎,大概又被鄙视了……所以, 建议以后大家遇到这种情况还是从实际点儿说起吧^_^, 其实我也比较想要这句话)

项目介绍完了后,他们就围绕这个项目提了很多问题.竟然全是些技术问题…我狂晕.从去年11月份后,就没再怎么碰过那东西了.很多回答都是从大脑深处残存的记忆里去捞!!其中一些问题和具体的软件工具有关, 下面是凭记忆记下来的问题:

1.如何使得到达MQ的消息不去触发 CICS的事务?

只要将MQ队列管理器和CICS的连接断开就行了.2.在使用CICS和DB2做开发时,为了使DB2可用,应在CICS里定义哪些资源?

记不太清楚了.好像是DB2CONNECTION和DB2ENTRY.(后来证实了一下,对了.)

3.操作配置MQ

CICS 适配器的事务名字是什么?

CKQC/ CKTI(庆幸还记得)

4.既然在开发中,用到CICS和DB2,那么请问, 最常见的错误代码-805表明什么错误?

这个真的是记不清楚了.反正知道这个在去年开发时常遇到.调试时能看到这个错误,胡乱说了一通:好像是资源没有定义吧.(后来查证,是在DB2的PLAN里没有找到相应的程序, 说资源没有定义, 也沾到些边了吧.RP爆发!)

5.编译用COBOL 写的CICS+DB2程序的JCL 有几步,每一步都做什么?

6步.记得不是很清楚具体每步做什么,反正知道总共要做些什么.应该是第一步做DB2预编译,然后是CICS命令的Translate, 再是对前面处理好结果和COBOL代码一起预编译,编译,连接,最后是DB2资源的绑定.6.CICS里在LINK别的PROGRAM时,传递的公共区域在哪个节定义?

我说我们当时是自己定义的一个类似C结构体的数据结构.没用到哪个节啊……然后, 有位GG很好心的提示了一下说, 那你在哪里定义的这个结构..或者说连接节是什么知道么?它的作用是什么?(我猛然醒悟!!)赶紧回答说知道,作用就是用来定义公共区域的确!(实在是不行啊, 这么基本的问题都…)

7.如果要在JCL里调用自已写的程序(已经编译连接好的,可执行的)?

我先是呆了几秒, 啥意思啊, 不明白?!然后,有位GG又开始提示了: 应该怎样指定JCL的搜索路径,或者怎样让JCL知识这个程序在哪儿? 当时,只感觉一阵阵画面闪过,脑子里快速搜索有没有这种情况在平时练习或项目中出现?!然后,在那儿嗯额了半分钟说,不知道,忘了!Sigh~~~~(指定 JOBCLASS)

8.要使JCL提交后能让用户看到一行红色文字,应该怎么办?

这个问题开始还理解错了.JCL里面指定NOTIFY对象ID就能让返回消息反馈到用户屏幕上了.9.定义VSAM数据集的Utility程序是什么?

我说是可以用DEFINE CLUSTER命令的那个程序.一位好心的GG又提示了, 这个程序叫什么, 字母I 打头的? 想不起来,放弃了.原来是IDCAM…哎

10.熟悉java吗? 写过什么东西么?

还可以.用J2EE技术做过一个项目,简历上写了.(明显他们不在意这个)

11.Java多线程编程熟悉么?

只在自学写过些练习.12.Java lock 是什么?

(天!这是什么问题!!)Lock是锁.然后, 一阵沉寂……原来不够,于是,我又加: lock 就是对一块临界区域或资源的锁定,以实现排它…云云~不知所云

13.Java lock 应用了以后, JVM里会有几个线程在跑?!

这个么,当然是只有一个了…吧!因为其它请求该资源的线程都得挂起嘛.(请高手指定一下,这个问题这样答算过了么?!)

14.你自己认为自己最大的优点和缺点是什么? 用E文,两分钟准备.哎, 紧张了,紧张了.15.就你优点中所提到的XXX,能举个具体的例子么? E文

然后就是还有什么想问他们的,我问了一下他们对技术在面试决策里面占的比重.因为问了这么多技术问题,而我答得都很模糊,实在是怕怕啊.顺便在强调一下, 自学的能力, 就说这些技术问题应该不是问题, 只要一周的时间就能找回来…

OK, 就这样了……

处女面就是这样完了!面完时是17:31, 30分钟的样子, 时间还算正常.整个过程中,就在回答了第五还是第六个问题是听到了一句想听的话.后面除了问题,基本都是: 好的,我们知道了……从来不说,你回答正确还是错误,或者好不好.庆幸自己的记忆力还算可以!

普元“中间件”领航者 篇6

在“中间件”市场苦战八年的普元软件,如今瞄准的竞争对手是IBM、甲骨文、微软这样的世界级企业。

王薇是某家大型银行几千名信用卡客服人员中的一员,她每天的工作就是接听客服电话帮助客户办理业务,查询信息或者记录客户的咨询、投诉信息。这些繁琐的工作各自需要不同的IT系统支持,因此王薇每天要在不同的应用系统之间进行频繁切换。应用系统之间操作风格差异性较大、重复操作过多,不可避免导致工作效率降低。不过,最近这个问题得到了改善,因为银行系统中加入了“中间件”的应用。“中间件”可将工作平台进行集中在一个界面上就可以实现对不同工作的集中操作,简化了繁琐的程序。

“像空气和水一样重要。”中国工程院院士倪光南如此形容“中间件”的重要性。“中间件”处于操作系统软件和用户的应用软件的中间,是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。

世界科技巨擘IBM、微软、、惠普、甲骨文到SAP,无一例外地都加入了中间件的“战场”,其重要性及未来的发展潜力可见一斑。作为中国中间件市场最早的参与者之一,普元信息技术有限公司(以下简称为普元软件)现如今已经不是跟在那些世界级企业后面的追逐者,而是面对面的竞争者。

爱熬才会赢

八年,对于一个孩子来说可能是漫长人生的起步阶段,而对于一个公司来讲可以说已经不知经历了多少次生死的考验。普元软件就是经过了八年的煎熬,终于成为如今国内中间件领域的领航者。

“爱熬才会赢。”这是普元软件董事长刘亚东的一句戏言,但细细品味,这句话却沉淀了他创业的辛酸苦辣。

2001年4月普元软件成立之初,刘亚东怀揣着一个梦想,“随着中国互联网的蓬勃发展,企业信息化是未来企业的核心竞争力之一,因此,要打造一个像Siebel一样具有影响力的国际型软件公司。”

然而,实现梦想却并非易事。

2004年,资金告急的刘亚东与普元软件CTO黄柳青远赴美国开始了他们的融资之旅,对自己的创业公司充满信心的两个人在美国却是接连碰壁,在40天的时间里,刘亚东和黄柳青先后约见了60多家在硅谷的风险投资公司,却没有一家愿意投资。

刘亚东原本坚定的心开始彷徨,自己怀揣多年的,到底是梦想还是个空想?他心里第一次没有了底。

反复思量,刘亚东认定自己要走的路是正确的。“虽然融资失败了,但纯粹从产业的发展角度来讲,应该是跳不过‘中间件这一环节的。”刘亚东如今很庆幸自己坚持了当初的决定。当时他还亲自撰写了《软件中国的机会》,借此表达对普元软件未来发展的信心。

靠着变卖手中原来投资的公司股票继续坚持着最初的梦想,刘亚东艰难度日。然而,机会却在不经意间降临了。

2005年初,交通银行负责软件架构的主管看到了刘亚东撰写的《软件中国的机会》以及黄柳青撰写的《软件的涅槃》,亲自上门希望能够与其一起开发交通银行的运营系统。几乎与此同时,华为公司也正为了如何整合自己上百个产品的软件操作管理平台而发愁,几乎找遍了国内所有的软件提供商后,最终发现普元软件能够帮助其解决问题。

主动找上门的两件生意,令普元软件的决策者和产品研发人员信心大增,“我们终于有了‘活下去的勇气。”如今刘亚东提起这两件事依然感慨万分。

普元软件的发展借此便驶入良性发展轨道。随着客户的增加,普元软件进入了快速的增长期,同时其核心竞争力也有了明显的加强。“在过去三四年我们的业绩一直在保持高速增长,平均增长率在50%-80%,有时甚至超过100%,同时我们的利润率也在不断提高。”普元软件CEO沈恵中说。

从交通银行第一次找上门来,短短四年时间,目前普元软件累计签单银行和金融机构已达95家,建设银行、交通银行、农业银行、中国移动集团、中国电信集团以及前信息产业部等都是普元软件的主要客户。现在的普元软件,服务范围涉及电信、金融、电子政务、市政、城建等多个行业和领域,行业领导者的地位已经渐渐凸显。

与IBM竞争

普元软件所从事的中间件业务从属于目前国际上热议的SOA(面向服务的体系结构)概念。SOA将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口联系起来,使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。SOA最吸引眼球的地方在于提升了IT与企业业务的融合效率,节省了成本,让企业更具竞争力。

SOA已经获得了很多企业的关注,很多大型企业已经开始实施SOA建设,中小企业也都在寻找构建SOA的切入点,当一些大型企业应用了SOA以后,他们会迫使上下游的合作伙伴也提供SOA的服务。

正因为越来越多的企业在关注SOA中间件的应用,所以近年来SOA中间件的竞争也越来越激烈。IBM每年在SOA领域的投资达到10亿美元,而甲骨文亦在2007年以85亿美元收购了BEA来提高其在SOA领域的竞争力。

当国外企业都动起来的同时,中国的中间件企业并没有停滞不前。根据赛迪顾问的统计,2007年普元软件在国内SOA中间件市场的份额为12%,仅次于IBM的25%和BEA的16%。而根据行业统计,2008年中国中间件产品市场整体规模达到了15.46亿元,同比增长19.2%。

“很不幸,在中国的中间件市场我们被IBM列为了最重要的竞争对手。”沈恵中玩笑的语气中流露出了自豪,“在中间件这一领域,普元软件完全能和甲骨文、IBM这样的国际级公司抗衡,普元软件从平台的可靠性和高效性方面都好于竞争对手。”沈慧中表示普元软件在以构件为核心的中间件领域,至少要领先IBM半年到一年,而此次所发布的SOA中间件套装EOS6作为第一款可商用的符合国际SOA标准的平台,又将普元软件在第三代中间件上的优势提前了至少三个月。

普元软件之所以能够在强手如云的市场中占有一席之地,最重要的在于其理念的创新性,“我们强调的是一切从构件开始,分别针对高端和低端客户研发定制化的产品,按照大家都能接受的投入产出比例实现合作。”满足不同客户的不同需求,提供“量身定做”的产品,是普元软件能够高速成长的重要因素之一。

除此之外,与国际型大公司相比,普元软件有着作为本土企业的明显优势,“作为本土团队,我们的研发成本比较低,在价格方面有一定的优势;同时,作为网络服务提供商,普元软件产品的适用性和稳定性是我们最大的竞争优势。”沈惠中表示。

2008年普元软件的业绩较2007年增长了68.5%,远远超出了市场的平均增长速度,从而在国内SOA基础软件市场,与IBM、甲骨文并称为“三驾马车”。

拒绝对赌的“新娘”

1亿元人民币的融资额,也许在风险投资行业里只是个普通的数字,但是对于普元软件来说,却有更大的意义。“这证明我们的模式得到了资本的肯定。”沈惠中说。

与其他很多寻找融资的公司不同,普元软件在接洽风险投资的时候有两个先决条件:不要对赌,没有回购,“我们需要的是真正理解普元软件的事业,愿意和普元软件一起成长、共担风险的长期合作伙伴,而不是投机分子。”刘亚东说。

在这个充满了对赌的年代,这位待嫁的“新娘”开出的条件似乎略显苛刻,但还是找到了与其志同道合的“心上人”。新开发创投和天津和光正是与普元软件有着共同理念的投资团队。

“我个人认为对赌并不是双赢的,因此也不欣赏这种做法。作为投资人来说,我们应该考虑的是如何帮助企业成长。成功也好,失败也好,都要一起承担。”天津和光合伙人余紫秋说。无独有偶,新开发创投的董事总经理李家弘也表示了相同的观点:“过去我们在台湾投资,很少用所谓的对赌概念,从我个人角度来讲不太倾向对赌。作为基金管理者,我们的义务是帮基金投资人选出最好的、可以信任的公司,通过中长期的具有风险的投资来获取比较合理的报酬。” 李家弘表示新开发创投投资普元软件是看到了它在国内基础软件市场中的领导地位,以及产品与技术的先进性和公司的高成长潜力。

除了看似苛刻的反对赌条件,这位“新娘”还提出了两位投资人在今年年底前要各为普元软件工作20天的要求。显然,普元软件是希望投资方能够给企业带来除了资金方面的更多服务。

“虽然新开发创投是偏重于财务型的投资,但我们还是结合国内外的资源提供给普元软件一些适当的帮助,特别是在并购方面。对于并购企业的筛选、估值以及谈判的技能都是新开发创投的强项,因此这可能也是刘总(刘亚东)看重我们的地方。”李家弘说。天津和光合伙人余紫秋则更偏重于在资本市场上的帮助,“在上市中介机构的选择、公司的经营战略等方面我们会给出详细的意见。”

中间件服务器 篇7

随着我国有线电视数字化进程的深入,数字电视整体平移在全国各地大中城市逐步进行;“中星九号”卫星升空,为广阔的中西部地区提供了免费的卫星数字电视。现有数字电视系统普遍采用IP层组播技术实现大规模部署。在IP网络里,如果出现传输错误,网络设备会自动丢弃数据包。IP网络丢包会严重影响视频的服务质量(QoS),造成跳帧、马赛克等现象。前向纠错(FEC)是一种在信息源增加冗余信息实现差错恢复的技术。针对IP层组播丢包随机性与突发性的特点,我们采用里德所罗门(RS)码来实现FEC技术。

很多文献中都提出了使用基于RS码的FEC技术来提高传输可靠性的方法[1,2,3]。文献[1]实现了一种基于异或运算的RS编解码算法,平均每次乘法运算需要log2N次异或运算,其中N为有限域GF(Galois Field)的阶。文献[2]提出了一种使用RS码的可靠传输协议,核心算法基于GF上的范德蒙德矩阵运算。文献[3]提出了一套基于RS码的标准化FEC方案,并分析了编解码算法的复杂度。

但我们发现这些研究大多着眼于理论分析和协议设计,没有着力于算法的有效实现。考虑到现有数字电视系统间的硬件设备与软件接口的差异性,我们提出将FEC技术作为数字电视系统的QoS中间件。这样的设计既能兼容底层硬件性能差异并屏蔽编解码硬件细节,同时向上层定义通用功能接口。此外,数字电视系统终端设备普遍采用计算能力较弱的嵌入式机顶盒。因此我们有必要对RS编解码过程进行优化,以降低中间件对不同平台的硬件要求。

1 基于RS码的FEC技术高效实现

FEC是一种在单向通信体系中控制传输错误的技术。FEC编解码算法包括奇偶校验算法和基于RS编码的算法两类。奇偶校验算法无法有效解决突发大量丢包问题,因此不能满足数字电视服务质量需求。RS编码性能优越,但是算法复杂度也相应较高。

1.1 基于RS码的FEC技术

RS码是一个[n,k,n-k+1]码,是一种定义在有限域F上的长度为n,信息长度为k,最短汉明距离为n-k+1的线性分组码。在预知错误位置的条件下,RS码最多可以纠正n-k个错误。我们的算法基于定义在GF(28)的RS码,因此每个分组最多可包含n=255个数据包和冗余包。

对于一组[n,k]RS码,其生成矩阵GM(Generator Matrix)是一个n×k的结构化矩阵。GM的任意k行组成的k×k子矩阵是满秩矩阵。传统RS算法中GM采用范德蒙德矩阵V[n,k]:

(11111αα2αk-11α2α4α2×(k-1)1αn-1α(n-1)×2α(n-1)×(k-1))(1)

其中αGF(28)中本原多项式的根。

基于V[n,k]的RS算法在编码过程中可以复用GM,计算复杂度仅在于矩阵乘法。编码过程为:

(C0C1Cn-1)=GΜ×(S0S1Sk-1)(2)

其中Si为分组中第i个原始数据包,Ci为编码生成的第i个数据包。

但在解码过程中,每次需要对一个不同的k×k的GM子矩阵求逆。这个子矩阵Gk由接收到的数据包和冗余包对应GM中的行下标确定,因此对于每个分组需要重新计算。解码过程为:

(S0S1Sk-1)=Gk-1×(C0*C1*Ck-1*)(3)

每次解码过程包括一次矩阵求逆运算和一次矩阵乘法运算。我们通过实验发现,采用复杂度为O(k3)的高斯消去法矩阵求逆,某些机顶盒在播放高清视频时会出现不能及时RS解码的情况。

1.2 算法优化与实现

通过上述分析,我们发现基于RS码的复杂度主要集中在解码过程。为了简化解码过程,我们使用柯西矩阵代替范德蒙德矩阵生成GM,其n×k的GM为:

(Ιk1k+01k+11k+21k+(k-1)1(k+1)+01(k+1)+11(k+1)+21(k+1)+(k-1)1(n-1)+01(n-1)+11(n-1)+21(n-1)+(k-1))(4)

解码时,假设收到k个数据包和冗余包,其中s个是冗余包。令数据包对应GM中的行下标为{rs,rs+1,…,rk-1},冗余包对应的行下标为{t0,t1,…,ts-1},丢失数据包对应的行下标为Gk,则对应的k×k子矩阵Gk经过列调整后为:

(Ιk-s0AB)(5)

其中A是一个s×(k-s)的柯西矩阵:

(1t0+rs1t0+rs+11t0+rk-11t1+rs1t1+rs+11t1+rk-11ts-1+rs1ts-1+rs+11ts-1+rk-1)(6)

B是一个s×s的柯西矩阵:

(1t0+r01t0+r11t0+rs-11t1+r01t1+r11t1+rs-11ts-1+r01ts-1+r11ts-1+rs-1)(7)

Gk进行LU分解:

Gk=(Ιk-s0AΙs)(Ιk-s00B)(8)

所以Gk的逆矩阵为:

Gk-1=(Ιk-s00B-1)(Ιk-s0-AΙs)=(Ιk-s0B-1(-A)B-1)(9)

据柯西矩阵的性质,B的行列式为:

det(B)=i<j(ti-tj)i<j(ri-rj)i,j=0s-1(ti+rj)(10)

因为B的任意子方阵也为柯西矩阵,所以利用B的余因子矩阵C,可以得到B的逆矩阵:

B-1=1det(B)CΤ(11)

经过化简:

B-1 =(dij)i,j = 0,…,s-1 (12)

其中:

dij=(-1)i+jejfiajbi(tj+ri)(13)

ak=i<k(ti-tk)k<j(tk-tj)(14)

bk=i<k(ri-rk)k<j(rk-rj)(15)

ek=i(tk+ri)(16)

fk=i(ti+rk)(17)

根据上述过程计算B-1复杂度是O(5s2)。对比采用高斯消去法的O(s3)复杂度,在s>5的情况下都能有效降低解码复杂度。算法优化后计算Gk-1的复杂度为O(ks2)。与优化前的O(k3)相比,考虑到s一般比k低一个数量级,解码复杂度降低。

2 QoS中间件的设计与实现

一套完整的数字电视系统如图1所示,分为服务器、网络设备和客户终端三个部分。数字电视节目通过有线信号或者卫星信号输入到数字接收机中,转制成MPEG格式的TS流(MPEG Transport Stream),传送到流媒体直播服务器。服务器把TS流通过不同的组播地址发送到组播路由器上,然后配置组播。客户端根据用户选择的频道,加入对应的组播组接收组播流并播放。在设计QoS中间件时,我们的设计原则是通用性和扩展性,即中间件系统既能适配现有的数字电视系统,也能升级和扩展功能以适应新的系统。

2.1 QoS中间件系统设计

依据上述的设计原则,我们将中间件系统设计成独立的组件。其系统架构如图2所示,分为服务端和客户端两个组件。

服务端组件负责RS编码和数据转发,逻辑上将其分为编码模块和传输模块。编码模块接收来自服务器的TS组播数据包,对其进行RS编码。传输模块调度TS组播流和FEC流的传输。

客户端组件负责丢包检测和RS解码,逻辑上将其分为接收模块和解码模块。接收模块接收原始TS组播流和FEC流;对数据包排序,检测是否发生丢包;然后据检测结果执行以下两个步骤之一:1)没有丢包或丢包过多无法恢复,则转发排序后的数据包到终端;2)丢包可恢复,则由解码模块恢复丢包,再转发到终端机顶盒。

2.2 QoS中间件系统实现

为了提高系统部署的灵活性,中间件与数字电视系统模块之间使用网络套接字通信。这样的实现兼顾了集中式与分布式架构。当采用集中式架构时,模块间通过127.0.0.1地址通信;当采用分布式架构时,通过实际IP地址通信。

我们在编码模块中实现了渐进式编码。RS编码的结果本质上是一组数据包的线性组合:

Ci=j=0k-1ai,jSj(18)

当收到第j个数据包时,我们可以把这个数据包与其对应的系数相乘后与渐进式编码生成的数据包相加:

Ci=Ci+ai,j·Sj (19)

这种方法的优点有:1)避免了对一个数据包分组编码瞬时CPU占用过高的情况;2)不需要缓存整个分组的数据包,减少了内存占用量。

考虑到时延和抖动对QoS的影响,传输模块采取了差异化的传输策略。对于原始数据包,立刻转发以减小编码造成的额外时延;对于冗余数据包,使用基于数据量的传输策略,使FEC流速率平滑,减小抖动。

由于IP网络无法保证组播流有序、完整地到达接收模块,我们利用循环队列来接收和排序数据包。接收模块的丢包检测实现参考TFRC[4],在一个计时器周期内,依据序列号来确定丢包位置。在解码模块中,我们实现了第2节中介绍的优化RS算法。

3 实验结果及分析

我们搭建了一套完整的系统进行性能评估实验。服务端使用四核Mac Pro服务器,CPU主频为2.8GHz,内存3GB;客户端机顶盒CPU主频为200MHz,内存128MB。这种配置比较接近当前主流的数字电视机顶盒。考虑到仿真高清数字电视系统,我们选用了码率超过4Mbps的视频。我们实现了文献[3]中的FEC系统并以此作为评测基准。在服务端,我们评估渐进式编码对服务端资源配置的改善效果;在客户端,我们评估优化算法能否降低CPU使用率和解码时间。实验参数配置如表1所示。

3.1 渐进式编码实验

图3是使用渐进式编码前后CPU使用情况的对比。我们看到使用渐进式编码后CPU使用率的波动范围很小,峰值远小于不使用渐进式编码的情况。考虑到一台服务器需要同时编码数十组直播节目,服务器能够可靠组播节目数量的上限取决于编码进程CPU使用率的峰值。理想的编码进程应将CPU使用率维持在一个稳定的范围内。

除了CPU使用率,内存占用率也是衡量资源配置的重要指标。在服务端,我们使用队列这种数据结构来缓存原始数据包。因此,我们可以通过实时监控队列长度变化来考察内存占用率。通过图4我们可以发现,不采用渐进式编码队列长度从0至50(分组数据包数量)递增;采用渐进式编码后缓存队列长度不超过1。服务端的内存占用率大幅降低。

3.2 优化解码算法实验

我们通过CPU使用率和解码时间这两个直观的指标来衡量算法的优化效果。图5是客户端优化前后的CPU使用率情况对比,我们发现优化算法使CPU使用率比优化前平均降低25%。

图6给出了优化前后解码时间的累积分布函数图对比。我们可以看到,优化前解码时间集中在0.05秒到0.06秒这一区间;优化后集中在0.03秒到0.04秒区间。

4 结 语

随着网络和流媒体技术的发展,高清数字电视的普及程度会进一步提高。但是现有的数字电视系统在QoS支持方面还有所欠缺。我们针对这一现状,设计了一套以前向纠错丢包恢复为核心的服务质量中间件系统。该系统的特点是通用性高,扩展性强。目前该系统已成功嵌入互动电视平台和高清卫星电视平台,达到了预期的设计目标。

摘要:数字电视系统普遍采用IP(Internet Protocol)层组播技术实现大规模部署。但受限于IP网络尽力而为的特点,流媒体传输时丢包现象非常普遍。因此IP网络丢包成为现有数字电视服务质量QoS(Quality of Service)提升的瓶颈。针对此问题,设计一种新颖的流媒体服务质量业务中间件系统,具有耦合度低,扩展性高的特点。该系统的核心算法对标准里德所罗门RS(Reed-Solo-mon)码算法进行优化,降低了编解码复杂度,高效地实现了基于RS码的前向纠错FEC(Forward Error Correction)技术。

关键词:流媒体,中间件,RS码优化

参考文献

[1] Bioemer J, et al. An xor-based erasure-resilient coding scheme[R]. ICSI TR-95-048. Berkeley, CA, 1995.

[2] Rizzo L. Effective erasure codes for reliable computer communication protocols[J]. ACM SIGCOMM Computer Communication Review, 1997, 27(2):24-36.

[3] Peltotalo J, et al. Reed-solomon forward error correction(FEC) schemes[M/OL]. Internet Engineering Task Force, 2009. http://www.ietf.org/html/rfc5510.

中间件服务器 篇8

关键词:中间件,Web服务器,数据库

基于中间件的Web数据库服务作为一种基于HTTP协议标准的多层Client/Server数据库服务模型模式, 其基本框架如图所示。

中间件负责管理Web服务器和数据库服务器之间的通信并提供应用程序服务 (功能层) , 它能够直接或间接调用外部程序或脚本代码来访问数据库, 因此可以提供与数据库相关的动态HTML页面, 或执行用户查询并将查询结果格式化成HTML页面, 通过Web服务器返回给用户浏览器。

根据中间件的功能和结构以及数据库连接技术的不同, 目前存在着多种Web数据库服务模型。最基本的中间件技术有通用网关接口 (CGI) 、应用程序编程接口 (API) 接口以及Web_DB技术产品。

一、CGI技术

通用网关接口CGI, 及其改进产品Fast CGI, 可以作为上图中的中间件, 允许Web服务器执行外部程序, 通过外部程序来访为数据库等外部资源, 以产生HTML文档并返回Web服务器。这一方案的优点是易于实现, 用户可以明用浏览器, 暗用数据库。用户在Web页面上交互式填查询表, 即可通过Web进行异地数据库存取, 并在浏览器上显示结果。缺点是当中间件为CGI时, 每次访问都需要重新启动一个CGI程序实例, 它以进程形式运行, 占用资源较多, 效率较低, 且难于解决连续事务处理。

二、API技术

为了克服CGI局限, 一些Web服务器厂商开发出专用的API, 允许开发人员编写程序来扩充服务器的功能, 如Microsoft的ISAPI、Netscape的NSAPI等。与CGI相比, API应用程序与Web服务器结合更紧密, 占用的系统资源也少得多, 而其运行效率却大大得到提高, 同时还能提供更好的保护和安全性。

然而, 如果纯粹依赖于API实现数据库访问, 开发API应用程序也要比开发CGI程序要复杂的多, 而且, 由于各种API之间兼容性很差, 缺乏一个统一的业界标准, 因此应用程序往往还只能工作在专用的Web服务器甚至操作系统上。

三、Web_DB技术产品

如上所述, CGI和API有一系列缺点, 这些缺点造就了Web数据库的商业机会, 各公司竞相出台Web_DB技术产品。根据实现技术不同, 又可以分为以下几种:

1. 提供数据库产品的CGI接口

这类技术通常为数据库产品及其开发工具提供专用的CGI程序接口, 将开发人员从繁重的CGI编码中解放出来, 从而提高开发效率。如用于Microsoft Visual Fox Pro的Fox Web。这类技术并未克服CGI的局限。

2. 提供支持数据库访问的API接口

这类产品在Web服务器的API基础上, 提供数据库的访问接口, 在客户端采用VBScript、Java Script、Java Applet、Plug-in等技术实现动态Web应用。目前这类产品最丰富, 应用也比较成熟。如Microsoft的IDC、Borland的Web Broker、Sybase的Web.SQL和Web.PB等。

3. 提供专用的Web服务器, 捆绑数据库服务

如Oracle的Web Server能和Oracle7/8数据库系统无缝结合, 使应用程序具有较高的运行效率。但难以连接其它数据库系统。

这些技术和产品各有特色, 其中很多中间件产品在充分兼容CGI标准和利用API技术的基础上, 还引入了扩充的HTML标集合服务器端的程序或脚本, 并允许建立包含扩充标记和脚本的HTML页面模板;而在响应用户的请求的同时, 则通过转换这些特殊的标记和执行相应的程序或脚本来完成数据库的访问, 同时生成动态的HTML页面返回给用户。

但我们也注意到, 大多数的Web_DB技术产品是由Web服务器或数据库厂商开发的, 很少能够做到同时兼容不同的操作系统、Web服务器和数据库系统, 并且又具有较好的开发和运行效率。

在实现基于Web的医学影像数据库检索服务时可采用Allaire公司的Cold Fusion, Cold Fusion也属于Web_DB技术产品, 但是由于Allaire属于第三方开发商, 使得Cold Fusion能够很好地独立于操作系统、Web服务器和数据库系统。

参考文献

[1]王继成等编著:Web应用开发原理与技术[M]. 机械工业出版社,  2003年4月

[2]刘伟等编著:CGI技术全面接触[M]. 清华大学出版社, 2001年8月

中间件服务器 篇9

随着3G、4G等移动通信技术的蓬勃发展,以及智能手机等移动终端的普及,移动互联网已步入高速发展的黄金阶段,丰富多彩的移动应用已经涌入我们日常生活当中。另一方面,云计算能提供海量存储空间,强大的计算能力以及高扩展能力,它能很好地缓解了移动终端资源受限,转移移动应用需求来源。移动云计算是移动计算和云计算两者有机结合的产物,它将移动应用对资源的高需求和大量运算转移到云平台上,实现移动用户通过轻量级终端体验快速响应、跨平台、大存储量等性能。然而,由于移动设备的资源、环境变量和用户选择等上下文在移动应用运行过程中实时变化,服务质量(QoS)水平与移动设备当前的运算能力不相匹配等问题还有待解决[1]。

本文提出了一种基于上下文感知自适应的移动中间件,通过以中间件的方式动态自适应云服务发现,根据移动设备上下文绑定云服务,解决终端环境资源受限的瓶颈,确保应用程序服务质量。

该中间件根据云服务不同阶段分两级运行。在云服务发现阶段:首先,拦截应用程序服务请求,同时监测移动设备的上下文变化。这些上下文包括:硬件资源(如电池、CPU、内存等)、环境参数(如带宽)和用户选择(如低成本、低功耗)。然后,根据上下文数据自适应每一个服务请求,绑定用户满意度最高的云服务。在云服务运行阶段:中间件监视绑定的云服务和终端的上下文变化。一旦移动设备上下文或者QoS水平变化超过了事先定义的阈值,中间件通过自适应重新绑定合适的服务。

1 相关工作

利用中间件技术来解决移动应用的一些关键问题已在国内外研究中已频繁出现。MCCM[2]是一种基于中间代理的移动云计算中间件,它建立在移动终端和云平台之间。MCCM通过将移动终端用户的上下文、系统配置和服务配置各自保存下来去管理现有的云服务资源。但是MCCM和云服务应用程序接口API是通过紧耦合的方式连接,并且缺乏异步机制支持。MCM[3]是爱沙尼亚塔图大学S.N.Srirama教授开发的一个处理密集混合云服务的移动中间件,它为来自iOS和Andriod等不同系统的云服务提供了统一的应用程序接口,解决了不同云服务之间的互通性问题。MCM系统通过对他们自己开发的应用CroudSTag和Zompopo进行了性能测试验证了系统的可用性和有效性。因特尔伯克利实验室的Byung-Gon Chun等人提出了克隆云[4]概念,将完整的移动应用程序的资源密集型部分从移动终端无缝移植到云平台的虚拟机上运行,以此提高应用运行速度和减少移动设备的能量消耗。德国亚琛大学的Dejan Kovachev教授等人提出了一个基于XMPP协议的移动云中间件[5],它能使应用程序在终端和云间动态弹性迁移,并利用cloudlets技术来保证应用的用户体验。由于该中间基于XMPP协议,所以具有灵活性高、扩展性好等优点,但该中间件与不同云服务之间的互通性有待加强。因此,将中间件技术引入移动应用的开发中,通过移动中间件提供统一编程接口,根据移动终端上下文自适应云服务具有十分重要的意义。

2 系统架构与工作流程

2.1 系统架构

鉴于以上相关研究,本文提出的面向云服务的移动中间件模型,它位于终端设备中。该中间件拦截每一个应用程序服务请求,并不断监视移动终端的上下文,然后根据移动设备的上下文自适应服务请求。它由几大相关联的模块构成,其系统架构如图1所示。

(1) 服务管理模块

1)拦截移动应用的服务请求,并将服务请求转发到云服务适配器。2)接收云服务适配器的服务绑定命令,将云服务绑定到应用程序中。

(2) 上下文监视器

不断监视移动终端的上下文变化,并将这些数据提够给云服务适配器。在服务运行时,如果监测到上下文与当前绑定的服务有巨大的偏离,上下文监视器触发云服务适配器对上下文数据进行重评估。

(3) 云服务适配器

整合和分析大量的上下文数据,动态调整资源以满足用户的需求。为应用程序提供统一的云服务接口。(1) 云服务发现时,通过上下文感知搜索满足服务请求的云服务。(2) 在服务运行时,通过上下文监视器触发对云服务的重评估或根据上下文重新绑定合适的云服务。

(4) 云服务接口

直接负责特定的云服务发送请求和接收服务绑定功能,云服务适配器提供接口。

2.2 工作流程

中间件自适应服务的流程如图2所示。

首先,应用程序发送服务请求,服务管理模块拦截请求并将服务请求转发到云服务适配器。

然后,云服务适配器根据上下文数据寻找合适的云服务。如果有合适的云服务,则通过云服务接口绑定该服务;否则,提醒应用程序未找到合适的云服务,并对上下文数据再评估,重新发现云服务。

最后,在云服务运行时,通过上下文监视器检测移动终端的上下文变化是否偏离定义的阈值。如果是,云服务适配器对上下文进行重新评估,重新绑定合适的云服务;否则,继续监视上下文数据。

3 自适应策略

在自适应策略中,我们引入了模糊认知图FCMs(Fuzzy Cognitive Maps)[6]模型。模糊认知图是一种表示系统元素间因果关系推理的模糊图结构,各节点表示概念、实体等,弧表示节点间的因果关系和影响程度。在模糊认知图模型中,各个节点因果关系相互传播,形成因果链,各个不同的模糊认知图也可以相互影响。它也可以由一个正方形的矩阵表示,矩阵中的每个单元表示节点间对应关系的影响值[7]。模糊认知图可以提供稳定的控制性能[6],因此,我们可以很好的利用它来判断云服务的性能,为用户选择一个满意的服务。如图3所示,我们提出了一个基于FCMs的云服务适配模型。

我们的模型共3层:最顶层的节点CS表示用户满意度;中间层由影响用户满意度的影响因子AF(i=1,2,…,n)组成,节点值表示上下文数据;最底层表示云服务节点N(j= i=1,2,…,m),它们是相互独立的。

用户满意度的值由各个影响因素节点的值和它们的权重来表示:

Vcs=i=1nWi×VAFi+C (1)

其中Vcs∈[0,1]表示用户的满意程度,值越大表示用户的满意程度越高;Wi表示每个节点AF对用户满意度Vcs的影响权重比例,比例越高表示受影响程度越大,所有的权重比例总和为1;C是在特定情景下需要调整的特定值。VAFi∈[0,1]每个因素节点AF的值表示影响因素在当前运行的云服务中的符合程度:

VAFi=j=1mAWijΝWji×VΝj+C (2)

其中AWij表示影响因素AFi在云服务Nj中的上下文数据;NWji表示云服务Nj正常运行时对影响因素AFi要求的达标值;C是在特定情景下需要调整的特定值;VNj(1或0)表示是否选择该服务。

在云服务发现时,我们将上下文数据迭代到每个云服务的QoS影响因子的要求中,然后选择一个用户满意度最高的服务,最后绑定该服务,算法如图4所示。

在服务运行时,我们首先要引入一个阈值δ,通过它来判断上下文是否偏离用户的满意范围。上下文监视器不断监视设备的上下文变化,一旦发现变化不能满足用户满意度,系统将重新绑定云服务。

4 实验与仿真

4.1 实 验

为了更好地评估中间件的性能,系统在云仿真平台CloudSim上进行了仿真实验。我们将模拟3种不同的视频流云服务,分别是高清视频、标清视频和低清视频,每种视频提供不同的码率:256kbps,128kbps,56kbps。我们假设手机连接的是EDGE 3G网络,理论最大下行码率为384kbps。为更直接有效地表达的自适应功能,我们没有对视频解码,只是简单的下载包。仿真环境如表1所示。

在实验中,我们采用以下三个影响因子:延迟(AF1),传输速率(AF2),丢包率(AF3)。它们在用户满意度中占到权重分别是:W1=0.3,W2=0.5,W3=0.2。三种视频对影响因子的要求如表2示所示。

在实验实际过程中,我们用一段时间内影响因子达标次数除以总监测次数来表示VAFi,即:

VAFi=ΤdΤz (3)

Td表示影响因子达标次数,Tz表示对应用程序的总监测次数。例如我们共监测30次,每个影响因子的达标次数如表3所示。由式(3)、式(1)可得,这种情况下用户的满意度约为0.81。

Vcs=(2530)×0.3+(2330)×0.5+(2730)×0.20.81

4.2 仿真结果

在仿真实验中,我们首先定义用户满意阈值δ=0.8,表示当用户满意度在0.8以下时,系统将对上下文重新评估绑定。然后对比两个实验方案:(1) 默认绑定标清视频,并不能动态适应。(2) 通过中间件根据上下文绑定合适的视频服务,然后动态自适应服务。两种不同方案的用户满意度对比如图5所示。

由对比图可以看出,我们的监测周期为10s,在500s时间内,应用程序共重绑定云服务5次,用户平均满意度由原来的0.743提高到0.835。随着监测时间的延长,用户满意度将会有更显著的提高。

实验经过长时间的测试后,将本文策略中的各个影响因子的满意度C-Satisfaction与文献[8]中提到自适应算法D-Satisfaction以及静态熵权法E-Satisfaction进行比较,结果如表4所示。

由表中数据可知,我们提出的实验不仅提高了云服务的整体满意度,而且在各个QoS影响因子满意度方面也有一定程度提高。

5 结 语

随着智能移动终端和云计算的快速发展,未来会有越来越多的用户采用移动设备享受云服务。如何让移动设备动态自适应云服务,提供更好的用户体验已变得越来越重要。本文提出了一种基于上下文感知的自适应云服务中间件,通过监视移动设备的上下文来动态适应云服务请求。本文还将模糊认知图理论应用到云服务自适应策略中,提高了自适应算法的效率和性能。中间件在服务发现时,选择用户满意度最高的服务;在服务运行时,根据上下文变化动态重绑定服务。实验表明,通过中间件用户的满意度有了显著地提高。

本文接下来的工作将中间件平台和实验移植到真实环境的智能终端上实现。由此展开的研究:(1) 我们将监视更多的影响因素(如内存,电池,CPU使用率等),研究如果提高动态自适应算法的效率及算法的标准化。(2) 我们将结合更多不同种类的云服务到中间件中,建立一个机制解决服务冲突。基于事件的重评估机制来触发重绑定也将在下一步工作考虑当中。

参考文献

[1] Armbrust M, Fox A, Griffith R, et al. Above the clouds: A Berkeley View of cloud Computing[J]. Communications of the ACM CACM Homepage archive, 2010,53(4): 50-58.

[2] Q Wang , R Deters. SOA`s last mile connecting smartphones to the service cloud[C]// IEEE Int.Conf.On Cloud Computing, 2009: 80-87.

[3] Huber Flores, Satish Narayana Srirama,Carlos Paniagua. A Generic Middleware Framework for Handling Process Intensive Hybrid Cloud Services from Mobiles[C]// MOMM’11, December 5-7, 2011: 87-94.

[4]Byung-Gon Chun,Petros Maniatis.Augmented smartphone applica-tions through clone cloud execution[C]//Proceedings of the12th Conference on Hot Topics in Operating Systems,Switzerland,May 2009:8.

[5]Dejan Kovachev,Yiwei Cao,Ralf Klamma.Augmenting Pervasive En-vironments with an XMPP-Based Mobile Cloud Middleware[C]//MO-BICASE2010,LNICST76,2012:361-372.

[6] KOSKO B. Fuzzy Cognitive Maps [J]. International Journalof Man-Machine Studies, 1986, 24(1): 65-75.

[7] Nitin Bhatia , Namarta Kapoor. Fuzzy Cognitive Map based Approach for Software Quality Risk Analysis[J]. 2011,36(6): 1-9.

中间件服务器 篇10

研究提出基于分层结构的Web服务与Ajax(Asynchronous JavaScript and XML)整合的中间件(DACMS),其目的是解决代码重用、结构重用以及异步性、实时刷新页面,使开发人员将精力全部集中到具体功能开发上去。其方法是封装、打包Web服务技术、WS-*相关规范和Ajax的特性等,在J2EE框架下并采用轻量级开源件:Hibemate、Spring、Struts Portlet实现DACMS层次软件结构来满足企业级分布式软件系统开发的要求,并使DACMS具备跨平台、跨语言、异步的、实时的性质,以及如何调整中间件层次结构保持一致并以一种松散耦合的方式彼此作用来屏蔽低层的技术细节来满足不同领域的信息交换的需求,从而解决复杂软件系统的重复繁杂的工作。

1 相关技术

1.1 Web服务技术规范

Web服务技术是由XML、SOAP、WSDL、UDDI、ebXML等实现分布式交互计算,而Ajax的异步性、实时性是通过JavaScript调用SOAP Web服务来实现的。Web Services之间扩展关系与交互图如图1所示。

在DACMS库中,是采用Web Services自描述特性和耦合性来发现和使用其他应用程序以完成任务,以及动态定位网络上其他组件并与之互动以提供服务。在图1中,实现工具通过库提供的接口访问UDDI注册库以发现哪些服务可用,注册库中的所有注册项是公开的,也可以是私有的。在注册库中有可用服务的描述,其中WSDL格式的项描述了服务和接口,这个方式是静态查询,但应用程序是采用动态查询来满足自身的需求。

在图1中,通用、发现和集成(UDDI):定义了Web Services的发布与发现的方法且提供了一种基于分布式的商业注册中心的方法,其信息描述格式是基于通用的XML格式。

白页(White Page):包括地址、合同和已知标识。

黄页(Yellow Page):包括基于标准的行业目录。

绿页(Green Page):有关由企业公开的服务的技术信息,还包括对Web Services规范引用和URL的目录机制,其形式可能是一些指向文件或者是URL的指针。

WS-*系列规范是实现Web Services标准的约束,在DAC-MS中的API设计都是源于WS-*系列规范提供的方式和方法进行设计的,且这些规范都是相互逻辑、相互约束的,因此这些规范是一个统一的整体。

1.2 Ajax技术

Ajax技术是为了解决现今基于Web的应用系统所遇到同步等待问题的一种Web技术,其实Ajax并不是一门新技术,而是多种技术的整合体,它采用客户端脚本(JavaScript)与Web服务器交换数据完成实时刷新页面,采用XML完成异步处理。其组成技术为:①XHTML和CSS提供了基于标准的表示,其中CSS可以表示为:选择符{属性:属性值};②文档对象模型(Domcument Object Model)提供动态显示和交互;③XML和XSLT(XSL Transformations)提供了数据交换和操纵;④XMLHttpRequest提供异步数据检索,XMLHttpRequest JavaScript对象实现实时异步处理;⑤JavaScript把每一样东西绑定在一起。在客户端使用JavaScript进行交互处理数据,但编写JavaScript有代码复杂、结构性差等缺点,而且很多应用程序是JavaBean程序,因此出现了DWR(Driect Web Remoting),它是Apache许可下的开源码的Java库,用于构建基于Ajax的Web应用程序,其目的是向开发人员隐藏Ajax细节,在服务器端使用普通的JAVA对象(POJO),DWR就可以把POJO动态地生成JavaScript代理函数供客户端调用,DWR是由一个Java Servlet和utils.js、engine.js两大部分组成。Ajax技术与DWR运行时序图如图2所示。

2 DACMS封装方法

DACMS主要由WsEngine.js、WsFamily.js、WsServerBean和ServletLibrary四部分组成。DACMS结构图如图3所示。

(1) WsEngine.js

封装一系列浏览器底层XML不一致情况和异步实时处理刷新的Ajax方法,从而能使其直接处理Web Services数据,概括定义如下:

WS.Call:一个封装了XMLHttpRequest的Web Services客户机,实现JavaScript代理异步实时刷新处理,包括调用Web Services方法和与XMLHttpRequest对象进行交互,并处理UDDI、SOAP、WSDL等对象。

WS.Qname:XML限定名实现,实现规范XML/ebXML数据交换。

WS.Binder:自定义XML序列化/反序列化器的基础,提供序列化的选择和实现方法。

WS.Handler:请求/响应处理程序基础,为请求/响应提供连接的句柄。

WS.LookUpUddi.*:定义一组查询Web Services的标识,以便快捷地找到自己需求的服务。

WS.LookUpUddi.WhitePage:封装定义查询白页属性。

WS.LookUpUddi.YellowPage:封装定义查询黄页属性。

WS.LookUpUddi.GreenPage:封装定义查询绿页属性。

WS.LookUpWsdl.*:提供一组指向URL的方法,进行分布式服务。

WS.SOAP.Element:封装XML DOM的基本SOAP元素。

WS.SOAP.Envelope:SOAP Envelope对象扩展了SOAP.Element元素。

WS.SOAP.Header:SOAP Header对象扩展了SOAP.Element元素。

WS.SOAP.Body:SOAP Body对象扩展了SOAP.Element元素。

WS.XML/WS.ebXML:用于处理XML跨平台实用方法

(2) WsFamily.js

是WS.-*系范规范通过DWR动态生成JavaScript供浏览器访问的一系列约束程序集,都是通过WS.-*系范规范文档进行定义的。其概括定义:

WS.Family.*·*:定义WS.-*系列处理接口和方法的对象,第一个“*”表示不同规范的名称,第二个“*”表示不同规范名称的不同处理方法。

(3) WsServerBean

封装服务器中的一系列处理方法,包括封装DWR的接口进行Java类向JavaScript转化和UDDI注册,为浏览器提供服务。其概括定义如下:

WSS.Adapter:—组Web Services的适配器,提供正确的连接服务。

WSS.DWR:—组封装DWR接口的转换对象。从而让浏览器通过JavaScript访问数据。

WSS.Uddilssue.*:定义一组UDDI注册方法。

WSS.XML/WSS.ebXML:定义一组WSDL的服务描述。

WSS.Aceess.JDO:—组数据访问对象。

(4) ServletLibrary

运行在服务器上为服务提供异步处理调用的库,该servlet访问服务器端对象并通过采用规范化的数据总线格式的HTTP响应发回所需的数据,并允许Web浏览器中的JavaScript解释程序直接创建本机JavaScript对象。其概括定义为:

WSS.Servlet.*:定义servlet异步处理方法对象。

WSS.Attemper.*:定义中间件调度机制。

WSS.NewOldSys:定义实现新旧系统兼容的接口和方法。

WSS.Remoting.*:封装DWR远程处理控制接口和方法对象以及DACMS的远程控制接口、方法。

3 DACMS层次结构实现

如图4所示是实现DACMS的层次结构图,各层使用相应的开源件完成。

3.1 持久层

用Hibernate实现访问数据,Hibernate是基于传统的POJO的开源代码持久性框架,它通过XML配置文件提供POJO到关系数据库表的与对象相关的映射(OR)。Hibernate框架是应用程序调用的、用于数据持久性的数据访问抽象层。同时Hibernate还提供了从Java类到数据库表(以及从Java数据类型到SQL数据类型)的映射以及数据查询和检索功能。Hibernate生成必需的SQL调用,还负责结果集处理和对象转换。在实际操作中,可以使用Xdoclet工具来生成Hibernate的XML映射文件,通过创建的DAO接口交换数据。在实现接口操作时,通常首先得到Hibernate的session对象实现对数据对象的相关操作。而Spring框架对Hibernate良好的支持,在事物管理、session管理等方面进行了封装,然后通过配置hibernate.cfg.xml实现Spring的Bean与Hibernate通信。

3.2 业务层

采用Spring框架来实现业务层,它是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用任何组件,并为J2EE应用程序的开发提供了集成的框架。并通过DWR完成向JavaScript转换供浏览器显示。其主要是构建DACMS的业务对象(BSO),用来执行程序逻辑、调用持久层。同时使用Spring框架来管理该层,能给应用程序带来极大的灵活性和松散的耦合度。首先建立业务适配器实现Spring框架中Bean注册,在实现Bean时必须注重接口与具体类型的松散耦合度,因为Spring框架是采用面向方面机制(AOP)和依赖项注入(DI)简化构造业务Bean的,面向方面编程和依赖项注入是互补的关键技术,这样有助于企业Web应用程序中简化、纯化域模型和应用程序分层,其依赖项注入封装了资源和协调器发现的细节,而方面可以(在其他事情中)封装中间件服务调用的细节,如提供事务和安全性管理,同时方面可以帮助把依赖项注入的能力带到更广的对象和服务中,而依赖项注入可以用来对方面本身进行配置,而且是基于动态AOP机制实现的,为了实现AOP机制,Spring默认情况下使用Java Dynamic Proxy(JDP),但是JDP要求代理的对象必须实现一接口,该接口定义了准备代理的方法。而没有实现任何接口的功能,其Spring通过CGLib实现这一功能。在实现数据访问时,用DAO来实现数据访问,并将DAO注射到Service对象中,其调用这个DAO对象和与持久层通信,并通过Spring把DAO对象与BSO实现关联,同时进行UDDI中心注册供BSO发现以及WSDL描述相关的事务,供集成层进行异构集成。

3.3 域模型层

该层主要实现需求中的业务对象(BO)组成和相关线程调度机制,在实现时一般不用管DTOS,主要关注来自域对象的数据,为它们公开相关的结构类型,如Hibernate允许将数据库中信息存放到域对象中,这样即便连接断开的情况下也可以把数据显示到表示层,而那些对象同样可以返回给持久层,从而达到数据库里数据更新。在该层建立XML映射文件来管理持久性对象和保护值的对象,使之与数据逻辑和业务逻辑分离和增强数据访问的安全性,从而提高逻辑访问的松散耦合度,顺利使BO在集成层中控制完成分布式数据交换和控制管理。

3.4 显示层

采用Struts框架的Portlet实现,使用Web Services for Remote Portlet(WSRP)规范呈现Web服务进行交互,这些服务处理用户交互,并且为门户集合提供标记片断,用来管理用户请求,作出相应的反应,聚集显示。Portlet通常表现形式是用户访问各种不同来源的信息和应用程序位置,从本地或远程数据源获取信息,这些数据源包括数据库、事务处理系统、信息内容提供者或远程网站等。而WSPR定义了通用的、设计良好的接口,可以插入,面向呈现Web服务进行交互,同时WSPR依赖于标准的Web服务技术。虽然Web服务解决了后端服务能力,而WSRP却能够重用整个用户接口,因此可以通过UDDI注册、发现一个或多个Portlet进行访问处理数据。用提供者和消费者的关系实现交互,这样通过UDDI注册中心提供Portlet服务的WSRP提供者和寻找新应用程序的WSRP消费者集中在一起。Portlet分两个阶段进行处理,即操作阶段和呈现阶段,使用Ajax技术能够使这两个阶段方便地把请求对象传递给消费Portlet,然后DOM把数据解析成JSP形式呈现给用户。在执行过程中,Spring框架初始化web.xml和struts-config.xml,并初始化自身的Context对象,并将这个对象保存在ServletContext中给Action表单调用。如图5所示是DACMS时序图。

4 结论

通过对Web服务和Ajax的特性整合,然后在J2EE框架下用轻量级开源件构建一种DACMS,并在实现DACMS时,用层次软件结构思想把相应的特性和开源件的特征分配到各层中去。构成一款跨平台、跨语言、异步实时的新型分布式中间件;DAC-MS屏蔽了Web服务和Ajax特性的低层技术细节,使开发人员操作更加容易。

摘要:随着信息量日益增多以及应用系统开发复杂度增加,用基于Web服务的解决方案来构建系统就出现重复繁杂的工作,并且通过Web的方式也难以解决页面异步性与实时性。因此,提出一种基于分层结构的Web服务与Ajax整合的中间件(DACMS)来解决这些问题,其整合Web服务制定的相关技术、规范和Ajax的异步性、实时性等特性,并且用软件层次结构来构建DACMS;各层采用不同的轻重级开源件:Hibernate、Spring、Struts Portlet框架实现,这样开发人员就不必关心开发具体细节。

关键词:分层结构,中间件,Web服务,Ajax

参考文献

[1]Philip McCarthy.Ajax for Java developers:Build dynamic Java appli- cations[EB/OL].http://www-128.ibm.com/dev-eloperworks/java/ library/j-ajax1/?S_TACT=105AGX52&S_CMP=cn-a-j.Sep 2005.

[2]Joe walker,Mark Goodwin.Direct Web Remoting[EB/OL].http:// getahead.ltd.uk/dwr/ajax.

[3]Hibernate Reference Documentation Version:3.2.0.ga.http://www. hiber-nate.org.

[4]JSR-168.JavaTM Pottier Specification.

[5]Rod Johnson,Juergen Hoeller,Alef Arendsen,etc.Spring2.0.http:// www.s-pringframework.org.2004-2006.

[6]Richard Jacob,Andre Kramer.WSRP-UDDI Technical Note Version 1.0.OASIS.12/09/2003.http://www.oasis-open.org.

中间件向行业市场延伸 篇11

业务需求呼唤整合技术

回顾近年来的发展,工商企业市场始终是IT业务增长的最大来源。政府和企业纷纷在此领域下大力气,政府期待一个蓬勃的工商企业市场来促进国民经济的总体发展;企业则十分看重工商企业市场的活力和发展的巨大空间。

在IT应用方面,稍有规模的工商企业为了在市场上取得优势地位,先后部署了企业的信息化系统,应该说很多工商企业已经完成了初级的信息化建设。但是由于早期信息化系统建设的局限性,目前在企业内部存在着很多信息系统“孤岛”,与当今网络化的业务环境极不相称。另外,很多行业内部企业之间的兼并、重组要求业务进行整合。如近些年的中国电信重组、中国航空业的重组等要求IT 基础建设必须配合新型业务的需求。还有企业之间所形成的价值链关系也要求IT 系统的互通互联。正是看到这些现状和问题,IBM 和一些其他领导厂商提出了利用中间件进行业务整合的观念。

整合技术与行业密切相关

顾名思义,整合技术就是将彼此孤立的IT 系统有机地集成起来。在软件实施的层面上,整合又常常分为数据的整合与应用的整合。通过数据整合,可以以更集中的方式管理和控制数据,从而创造更大的规模效应。而应用整合则可以将运行于不同操作系统平台上的应用有效地集成起来,从而达到降低成本、增强系统可用性和充分利用现有资源的目的。

但是,无论是数据整合还是应用整合,都离不开行业的特点。不同行业的客户,业务需求不同,业务流程也会不同。相应地,IT 应用系统也要因行业的不同而采用不同的方法和策略。

尽管自1999年宣布退出应用软件业务以来,IBM软件部门就专心于整合的中间件技术和产品的开发与推广,并和领先的独立软件厂商(ISV)密切合作,希望在产品的横向上给客户和ISV以丰富的支持。但由于过度关注行业应用之间的共性和产品本身的技术更新,IBM软件部无论是在组织结构上还是销售模式上均以产品为导向,因而忽略了各行业应用的行业特殊性,在面向行业客户时,不能迅速有效提供特定行业的解决方案。所以2004 年1 月,IBM 软件部提出了面向行业客户的组织架构和营销模式并按行业构筑解决方案。这可以说是IBM 软件部在行业纵向上缩短了与客户的距离。

坚定不移走中间件战略

有意思的是,在此期间Oracle 走的路却不同。Oracle 虽然走出数据库厂商的局限性,努力向应用软件服务市场靠近,却也因此得罪了很多传统的软件应用提供商。我们看到SAP、Baan等应用软件厂商与Oracle渐行渐远,与IBM则越走越近。这一切使IBM 软件部门更加坚定了中间件的战略路线。

在谈到企业选择中间件产品进行应用整合需要考虑的问题时,IBM认为用户首先要考虑所选择的中间件平台是否开放。尽管在市场上针对“开放”出现了一些负面的声音,如开放带来混乱、高使用成本等,很多政府和IBM、HP等厂商仍坚定地举起开放大旗。其次,IBM认为客户需要考察所选择的中间件平台是否支持足够多的应用,以免限制自己的应用空间。记者相信IBM 这两条提示是中肯且有益的。

结语 >>

中间件服务器 篇12

随着招生规模和选课容量的扩大,原有选课系统已不能满足现在的需要。特别是当学生大量集中于某个时间段内选课时,系统访问量急剧增加,这对于提供Web应用的服务器而言,CPU;I/O处理能力成为瓶颈[1]。并且,随着用户数量的增加,给用户有限的时间进行选课,使得矛盾更加突出,容易造成系统拥堵,服务器无法响应等问题。

2 选课系统的体系结构

通过对选课过程分析,发现选课过程中大量时间是学生在浏览一些与自己课程相关的信息,其他课程及相关信息不是有效信息,被使用的频率极低。因此,我们在设计过程中应着重考虑以下问题:细分上述访问类型,过滤掉无效访问和数据传输;增加人性化设计、更好的信息提示;提高选课系统的效率,使选课系统更加方便易用。开发服务器、客户端的模式,并将Web作为中间层服务的选课模式[2] (如图1所示) 。其目的是通过减少单次使用时间,减少服务器连接次数,从而减少并发几率,提高服务效率,提高系统的可用性。

3 将Web服务作为中间层服务的特点

其主要目的是:分类处理数据以便减少数据传输量。

经过分析,根据对数据变动频率的分析,选课系统中的数据可以分为两类: (1) 频繁变动的数据,例如:选课学生使用的密码,每次选课后变动的课程。 (2) 非频繁变动的数据,例如:课程信息,经过排课后,某些课程可能因为一些特殊原因需要调整上课时间、地点、任课教师等。而学生的基本信息,包括学号、姓名、班级、专业、院系等,课程编号、名称、学时、学分、教室、地点等信息在选课期间基本不会发生变动。

把这两类数据分类处理,分别采取不同的处理方式,使经常变动的数据能够随时更新,不常变动或基本不变的数据定期更新。经过分类处理,从而减轻单次处理大量数据的压力。提高用户登录使用系统的效率。其数据流程图如图2所示。

4 选课系统的主要模块设计

4.1 中间层服务设计

为了利用Web服务,我们设计了几个Asp服务页面作为中间件,通过网页连接数据库进行身份验证、数据提取、选课数据提交等 (如图3所示) 。

在Web服务的中间层设计中,由于将系统数据进行了特殊考虑,因此,通过中间层传递的数据非常少。经过分析,传统选课系统也采用3层或多层的结构设计,但中间层要承担所有数据的转发传递工作,因此,运行过程中的传输速度慢,出现拥堵就难以避免。我们设计Web服务的中间层,执行功能包括用户身份验证和选课课程信息的提取,这个过程中传递的数据经过了严格的限制,每一个用户登录系统一次,通过Web中间层传递的数据不超过150个字符,这样,中间层服务就极大地提高了单次验证用户和提取用户选课数据的效率,减少了登录用户排队等待服务的时间,使得用户登录速度加快。用户一旦通过Web中间层的用户验证后,连接断开,提交之前不再连接中间层。经过统计,登录选课学生一般选课时间5~30分钟。以往我们限制学生选课的登录时间,因为登录时间越长,占用服务器资源越多,现在不仅不限制,还希望不要太短,不要频繁登录,减少Web中间层服务器的连接压力,同时学生登录以后有一段时间的斟酌考虑,比较、调整也需要留有时间,因此,这样的设计契合了学生的需求,也给系统运行带来好处。

4.2 中间层下载文件设计

经过分析,那些基本不变或变动较少的数据采取定期更新方式,打包以后直接下载给用户使用 (如图4所示) 。

Web服务器上的本地数据库文件,通过Web服务器上的SQL Server服务器进行数据调度更新,更新定期进行。具体过程如下:

步骤1:利用We b服务器上独立运行的S Q L Server服务器来调取数据。SQL Server服务器远程调取数据库服务器上的数据,写入本地Access文件,供客户端下载使用。SQL Server服务器中建立了一个本地包,调度本地包,使本地包能够每天执行一次,防止选课期间基础数据 (如任课教师、上课时间、上课地点等) 信息更改,使学生每次登录时下载使用的数据保持最新。

步骤2:在Web服务器上的SQL Server服务器中建立本地包,定期执行文件压缩。为了减少网络上传输的数据量,压缩过程非常重要,没有经过压缩的Access数据库文件大小为19 M左右,经过压缩,大小为430 k左右,无论在局域网还是在广域网,400 k大小的文件下载都不会耗费太长时间。

4.3 客户端程序设计

客户端应用程序能够弥补Web程序设计的不足,充分发挥本地资源调用的优势,通过客户端程序,完成数据库文件压缩包的下载,本地解压缩,动态创建本地数据库连接,并按照方便使用的方式显示课表。由于课程信息都从本地离线数据包中读取,因此不用与远程数据库连接,减少网络数据传输流量,并充分发挥本地应用程序响应速度快、界面易于构造的优势,给选课用户更好的体验和更加丰富的信息显示 (如图5所示) 。

5 选课系统主要模块的实现

5.1 客户端使用的本地数据库文件下载过程

此过程完成网络连接的测试,数据文件的下载,数据文件的解压缩,得到本地数据库文件。然后立即删掉压缩文件,避免给使用者的机器留下临时文件。当进度条填满时,开始调用登录界面 (如图6所示) 。

登录主要完成的任务是验证学号、密码是否有效。其数据传输过程如图7所示。

由于用户名、密码传递没有直接的用户输入,而是通过客户端程序推送过来,在进行数据传递的过程中,客户端程序首先对输入字符进行检查,不符合规范的输入,或异常的字符可以进行过滤,保证服务器不会受到注入式攻击。并且由于使用者不能直接看到中间层服务器的服务地址,无法直接通过网页调用,所有连接中间层服务器的操作都是通过客户端来实现,因此屏蔽了无效和多余的访问,保证了服务器的服务效率和安全。

服务器页面中调用服务器存储过程进行用户身份验证。验证结果通过,将返回一个字符串,否则返回错误信息 (如图8所示) 。

把返回的字符串按照4位1段进行分析,得到14个ID号,然后在本地客户端中查找到这些ID号代表的课程信息,从本地数据库中查询。

通过本地数据表,把所有服务器中本学期选课需要显示、查询的基本数据都已经在本地构造出来,这样就能够在学生选课过程中显示需要的各种信息,能够使选课进行过程中原来需要请求数据库服务器的网络访问回避了,从而使服务器的访问次数减少,原来需要网络传输的数据量也不需要,因此,学生在登录进选课服务器以后的选课期间,实际选课系统是不连接数据库的,相当于一个离线的系统。并且,本地数据的存取操作极大地提高了系统的执行效率,不会有速度慢、延迟的情况出现。

经过这样设计的选课过程,最大限度地减少了网上通过Web应用传输的数据,通过充分利用文件服务的优势,将本来需要大量在Web应用中内部传递的信息分离出来,只留下关键数据在Web应用中传输,从而保证了Web应用的响应速度,极大地提高了选课应用程序的效率。并且,经过这类结构设计的选课模型,把学校人数、课程门数等传统系统中非常影响系统运行效率的因素减到最少,由于大部分选课客户端都运行在校园网内的局域网环境之下,因此,数据传输很少出现延迟和拥堵。

目前,我们经过几次选课测试,出现拥堵次数的时段极大地减少,仅在极端的情况下才会出现;比如,选课开始时,由于开始时间确定,并发几率增高,登录验证稍有延迟,另外就是选课的退补选阶段,由于此阶段采取先选先得的原则,因此会出现短时拥堵的情况。但不会影响整体实施效果。

5.2 客户端的选课过程

使用Delphi开发的客户端程序连接本地数据库进行数据及界面处理时能够发挥Delphi的开发优势,在课程查询,课程选择时能够更加人性化,操作方式更加方便,界面也更友好 (如图9所示) 。

5.3 选课数据提交过程

选课结束,要进行数据提交,此过程和登录过程刚好相反,要在本地应用程序中对所选课程进行处理,将所有已选课程的ID号排列好,按照选课用户设计的选课志愿顺序进行排列,组成一个单独由课程ID号组成的长字符串,调用Web服务器上的Asp页面进行数据提交 (如图10所示) 。

提交的界面如图11所示。

至此,一次选课登录过程结束。

6 结束语

经过封装的数据传递过程,保证了数据传递的安全性,使得中间无论是网络还是其他原因造成的意外,都会保证数据传递的完整。由于数据处理的操作大部分是在数据库服务器进行,中间只是进行数据传递,因此,处理方式的一致性使得系统具有良好的可维护性。如果选课的规则改变,或有程序处理方式需要更新,只需要在服务器端进行更新,客户端不受任何影响。使得客户端C/S应用程序的缺点得以回避。

数据库结构保证了选课过程中对数据传递量的精确控制,使通过选课过程传递的数据量尽可能少,保证了整个系统的连接数据库、提取数据库中数据的效率。这也是客户端设计过程中的关键点。

参考文献

[1]上海交通大学选课系统[EB/OL].[2006-03].http://pec.sjtu.edu.cn/.

上一篇:颈椎病综合治疗下一篇:收藏青春的足迹