电子商务平台技术:应用服务器


(来源:http://www.cnw.com.cn/issues/2000/43/4309.asp)

应用服务器已经成为电子商务应用中一种非常关键的中间件技术。如今,各大主要软件厂商纷纷将应用服务器作为其电子商务平台的基础,IBM的Websphere便是典型例子,Oracle的Internet Application Server 也成为其平台产品的重要部分,Sybase 的Enterprise Application Server更是其门户产品的基础。本文阐述了应用服务器相关技术及发展方向,并就目前主流的应用服务器产品进行了简单介绍。

Web应用的开发经历了三个阶段。在第一阶段,大家都使用Web服务器提供的服务器扩展接口,使用C或者Perl等语言进行开发,例如CGI、API等。这种方式可以让开发者自由地处理各种不同的Web请求,动态地产生响应页面,实现各种复杂的Web系统要求。但是,这种开发方式的主要问题是对开发者的素质要求很高,往往需要懂得底层的编程方法,了解HTTP协议,此外,这种系统的调试也相当困难。

在第二阶段,大家开始使用一些服务器端的脚本语言进行开发,主要包括ASP、PHP、Livewire等。其实现方法实质上是在Web服务器端放入一个通用的脚本语言解释器,负责解释各种不同的脚本语言文件。这种方法的首要优点是简化了开发流程,使Web系统的开发不再是计算机专业人员的工作。此外,由于这些语言普遍采用在HTML中嵌入脚本的方式,方便实际开发中的美工和编程人员的分段配合。对于某些语言,由于提供了多种平台下的解释器,所以应用系统具有了一定意义上的跨平台性。但是,这种开发方式的主要问题是系统的可扩展性不够好,系统一旦比较繁忙,就缺乏有效的手段进行扩充。此外,从一个挑剔者的眼光来看,这种方式不利于各种提高性能的算法的实施,不能提供高可用性的效果,集成效果也会比较差。

为了解决这些问题,近年来,出现了一个新的Web应用开发方法,也就是应用服务器的方式。由于应用服务器本身也是一个正在不断发展的概念,所以我们还很难给出一个完全确切的定义,不同的产品之间也有很大的差别,但是其核心结构,以及解决的主要问题都是相近的,区别仅仅在于各个产品解决问题的算法不同。下面我们主要分析一下需要解决的问题以及一般的解决方法,这些方法都各有利弊,适用于不同的场合。

应用服务器解决的问题

体系结构

应用服务器应当具备的首要特性是至少三个层次的服务器端体系结构。所有的应用请求,都将通过请求接收层,一般就是Web服务器,转给应用处理层中的应用服务器处理。应用服务器是独立的进程,对业务进行处理,并进行事务管理,将其中的所有数据操作转给第三层,也就是数据处理层的数据库服务器。在一定的情况下,也可以转给后面的其他系统。应用服务器体系结构的核心在一般的Web服务器和数据库服务器之间,增加专门的应用服务器来完成业务处理,而不是象第二阶段的方法一样,直接从Web服务器访问数据库服务器。

负载均衡

使用应用服务器体系结构,增加了一层,使系统的复杂度大大增加,但是这也带来很多的好处。最基本的好处就是给系统带来了可扩展的性能。当用户建立自己最初的系统时,无法精确预计未来的系统规模。如果一开始设计的系统规模很小,那么就无法适应可能出现的未来大规模发展。如果已开始设计的规模很大,那么很有可能会造成投资的浪费。在这种情况下,用户的最佳选择是可以先建立一个小规模的系统,而在系统规模扩大时,可以方便地进行扩充,不需要进行应用的重新开发和调整等高风险性的操作。应用服务器体系结构就可以满足用户的这种要求。所有的应用服务器系统,都具有负载均衡的能力,即将用户发来的请求,恰当地分配给各个应用服务器,使大家可以分别负担系统的负载。通过使用负载均衡,用户在扩大系统时,可以仅仅增加几台新的服务器,安装应用服务器软件,进行恰当的配置即可,无需对应用进行任何修改,这样就满足了可扩展性能的要求。

应用服务器实现负载均衡的方法很多,但各有利弊。首先是负载分配算法。当前主要的负载分配算法有两种。一种是精确的负载分配,即系统存在一个分配器,在收到请求时,先询问分配器,找到一个合适的请求,再交给合适的应用服务器进行处理。另一种是基于统计的负载分配,即在收到请求时,根据预先设置的权值,按概率,直接分配给后面的各个应用服务器。精确的算法可以保证不出现某些应用服务器很忙,而有些没事干的情况,但是每个请求需要两次通信才完成,所需的时间较长。基于统计的分配,由于需要预先对各个应用服务器的负载进行估计,很难做到非常准确,所以可能造成分配不均,但是其优点是只需一次通信,处理速度较快。在应用服务器本身的实现上,又有基于进程和基于线程这两种方式。基于进程的方式是指预先生成所有的应用服务器进程,在收到请求时,由某个应用服务器进程来完成所有的处理。而基于线程的方式是指在每台计算机上只建立很少的应用服务器进程,在收到请求时,临时生成一个线程来完成处理。基于进程的方式由于不需要任何创建线程的操作,所以速度较快。但是由于每个进程所占用的资源比每个线程的要多,所以同样一台计算机上可以同时运行的进程数比线程数要少,因此其并行处理能力要弱于基于线程的方式。

高可靠性

应用服务器是一种特定形式的分布式系统,而分布式系统最重要的特征之一是建立高可靠性的系统。在应用服务器领域,我们一般说的可靠性是指错误容忍和错误恢复两个特性。错误容忍是指在发生一定的错误,包括硬件错误、软件错误和网络错误的情况下,系统对外仍然可以正常工作。这里所说的一定的错误,对于大多数应用服务器系统,是指至少还有一台应用服务器还在工作。错误容忍有两个等级,一个比较初步的等级是发生错误时正在处理的请求将不能被正确处理,当然用户可以重发请求,此外可能由另一个正常的服务器处理完成。比较完善的等级是将这些处理了一部分的请求转给其他服务器来继续处理,用户端感觉不到任何区别。当然,这个等级提供的服务较好,但是一般是以性能和复杂度为代价的,各个应用可以根据自己的特点,选择某个错误容忍等级。在发现错误和容忍错误的前提下,更加完善的应用服务器还可以进行错误恢复,即错误发生后,如果经过自动或手工的处理,错误被排除了,那么这些应用服务器应当可以恢复工作,继续为用户提供服务。这方面的技术与提供高可用性的技术相关。

数据库连接池

众所周知,数据库处理往往是整个业务处理中最耗时的步骤。而在各种数据库操作的步骤中,数据库的连接和释放往往又特别耗时。在应用服务器系统中,一般都采用数据库连接池(Connection Pool)的技术,即在系统初起,或者初次使用时,完成数据库的连接,而后不再释放此连接,而是在处理后面的请求时,反复使用这些已经建立的连接。这种方式可以大大减少数据库的处理时间,有利于提高系统的整体性能,因此被广泛地应用在各种应用服务器产品中。

分布会话管理

由于标准的HTTP请求是每个请求一个连接的,为了方便用户使用,系统一般都会利用Cookie、IP地址识别等技术来实现会话管理。例如在用户登录后,记住用户的基本信息等。在单服务器的情况下,会话管理是比较容易实现的,但是在多服务器时,存在会话信息的存放地点问题。当前一般的解决方法有两种。

一种是在每个服务器上保存自己的会话信息,这样,我们进行负载分配时,必须是基于会话的,而不是基于请求的,不然会造成会话信息的不一致。另一种是专门建立一个会话服务器,利用它进行会话信息的保存。这样做可以方便负载分配算法,易于进行错误容忍。但是其缺点是增加一次网络通信的时间,使处理速度减慢。

嵌入对象

在应用服务器中,一般都提供嵌入对象,以便完成各种底层的功能,并实现与其他系统的连接。但是各个应用服务器之间在嵌入对象方面的差别很大。主要在对象放置的位置和对象接口上。应用服务器中的嵌入对象,一般可以放置在应用服务器上,也可以放置在应用服务器后端。放在应用服务器上,可以使对象访问成为本地的访问,不需要进行任何网络通信,性能较好,但是这些对象在各个应用服务器上会同时存在,因此,不能实现对象的长期内部状态。放置在应用服务器上时,我们又有两种实现,一种是全对称的,即各个应用服务器上都安装所有的对象,另一种是非对称的,有些对象只安装于某些服务器上,这样做还需要负载分配程序的配合。如果将嵌入对象放 在应用服务器后端,实际上就又增加了一个层次,即嵌入对象层,使整个系统变成四层。这样做会增加网络通信,降低性能,但是对象的设计将比较灵活,而且可以使用各种现有的对象连接接口。当前已经成为标准的对象访问接口主要是CORBA和DCOM。CORBA是由OMG(Object Management Group)定义的标准接口,在国外已经被广泛地应用,包括EJB等都使用CORBA标准,而DCOM是Microsoft定义的标准,可以直接连接ActiveX控件。当前也有一些应用服务器有自己独有的对象访问接口。

开发方法

应用服务器的开发方法和第二阶段的开发方法类似,一般都是以某种服务器端脚本语言为主要的开发语言。这些语言一般都是将我们经常使用的某种语言,或某些语言的特性,以嵌入页面的方式使用。为了便于开发,有些应用服务器还提供开发版的服务器,以便进行各种调试工作。为了能够最好地方便用户的开发,各个应用服务器一般还提供自己的集成开发环境,将本地编辑、上传、项目管理和调试工具等集中在一起,使开发工作在一个界面内全部完成。还有一些开发环境同时提供后台系统的开发环境,以便同时进行开发管理。此外,还有一些产品内置一些代码的自动生成器,数据库设计辅助工具等,例如ORM(Object Relationship Mapping)等。

高速缓存机制

为了达到最佳的性能,许多应用服务器都采用了高速缓存机制。在应用服务器中使用高速缓存一般包括两个地方,即页面的缓存和数据库的缓存。页面的缓存是指将特定的URL对应的页面在缓存中予以记录,以便在未来再次访问同一个URL时,直接使用。这里的缓存可以达到最佳的缓存性能,任何后面的操作都不需要进行了,只需将缓存读出,然后输出即可。但是,由于大多数URL对应的页面中,往往都有少量需要变动的信息,这些页面不能使用这种方法进行缓存。数据库的缓存是指系统对数据库的访问结果进行缓存,这样,相同的SQL再次去访问数据库时,就不需要进行真正的数据库操作,而只需读取缓存即可。这种缓存能够达到良好效果的前提是系统的主要开销在于数据库访问。由于系统依然需要进行有关页面生成等工作,所以缓存效果不如页面缓存,但是适用面比较广。

前面提到的若干技术问题都是当前应用服务器中主要需要解决的问题,当然还有很多 其他问题,例如如何实现跨平台甚至混合平台、如何实现应用的可管理性等。上述所有的解决方法都不能简单地判断优劣,而是适用于不同类型的系统。例如可靠性和高性能之间总是存在一定的矛盾,如果我们建立的一般的面向大众的商业系统,那么高性能的重要性大大增加,我们可以采用某些初步的可靠性策略,而如果我们建立的是电子银行系统,那么可靠性的要求就会超过高性能的要求,我们就需要采用更加完善的可靠性策略。因此,用户在选购应用服务器产品时,需要先充分了解自己的需求到底是什么,然后确定各个主要技术问题上,自己合适的解决方法,最后寻找使用这些解决方法的产品来完成自己的系统。

发展方向

应用服务器是一个不断发展的概念,越来越多的功能被加入到应用服务器中,没有人能够准确预计其发展轨迹。从当前的趋势来看,应用服务器的未来发展主要三个方面:

功能日渐完整

各个应用服务器厂商都在扩充自己的应用服务器产品,例如使自己的产品更加完整,能够包含上述所有的解决问题的方法,让最终使用的客户来决定系统的真正运行模式。

方便开发的工具日益增多

开发工具将不再局限在编辑器、项目管理工具等上面。未来的开发工具将大大增强Web系统的调试能力,同时也将提供更多的代码自动生成工具

基于XML的开放性通信体系

应用服务器将利用XML建立可互操作的平台,这里的互操作包括应用服务器之间的互操作,也包括应用服务器和后台系统之间的互操作。

产品篇

随着Internet电子商务活动的爆炸式增长,许多新兴公司乐于利用n层架构方式和最新的Java标准来开发新的系统。其他一些公司面临着集成仍保持其大部分业务运转的原有系统的任务。应用服务器为这两类公司提供了一个共同的基础。本文向大家介绍几种主流的Web应用服务器产品。(应用服务器产品比较列表)

AT Commerce Server 2000

由我国艾科公司自主开发的AT Commerce Server 2000为用户提供了一个可以构建各种电子商务模式的应用服务器平台。该产品提供Web Programming Script语言支持,该语言是Active Server Page的增强型语言,用户可以用它实现各种商务的逻辑,将电子商务行为转化为计算机的语言;支持 Merchant Object,保证了用户可以通过消息传递机制,方便实现商务的功能;同时支持Netscape Enterprise Server 、Microsoft IIS和Apache等多种Web服务器接口;支持Oracle、Sybase、SQL Server等各种常用数据库。

在某平台上所做的任何基于AT Commerce Server 2000的上层应用,可以非常平滑地移植到另一平台,用户只需要接受少量培训,就可以在该平台上完成电子商务系统的建 设。其他应用系统可以方便地与该平台相连,用户可以根据自己的实际需要,进行不同的软件搭配,形成多Web服务器、多应用服务器、多数据源等不同形式的工作模式。艾科公司还在该平台基础上开发出一系列B-B、B-C电子商务软件以帮助用户快速构建电子商务系统。

BEA WebLogic

BEA Weblogic Application Server是一款满足Web站点对性能和可靠性要求很高的产品,它同时符合最新标准。安装WebLogic非常容易。WebLogic EJB Deployer Tool提供了对管理多个EJB. jar 文件和配置WebLogic Server部署特性和资源的控制。Deployer Tool支持两级EJB部署的合法性检测,它自动检查特性和引用以确保它们包含正确的值,并检验关键EJB 所需的类是否符合EJB 1.1规范。

名为WebLogic Zero Administration Client(ZAC)发布向导的图形实用程序使你可以创建、发布和管理包括应用程序、小程序或Java代码库的软件包。ZAC 使你可以开发客户端Java应用并将这些应用打包分发。

IBM WebSphere 3.5

IBM的WebSphere 强调其在应用开发(WebSphere Studio和VisualAge for Java)、数据库(DB2 )和消息服务(MQseries)的集成性。这些产品构成了该公司总体电子商务产品战略的基础。

WebSphere安装简单易行。对WebSphere服务器以及它运行的应用的控制是在WebSphere高级管理控制台中执行的。由于WebSphere可以运行多个服务器,因此,你必须从控制台分别地启动每一个服务器进程。如果你必须重新引导系统的话,WebSphere 可以记住目前每个不同服务器的状态并自动地重新启动运行的服务器。

IBM提供了像WebSphere Studio 和VisualAge for Java这类专为开发基于Java应用而设计的其他产品。WebSphere 的高级版和企业版在发送时附带了IBM的DB2数据库产品和SecureWay 轻型目录访问协议服务器。企业版包括用于连接到外部数据库、CICS、IMS或MQSeries应用的一个组件代理应用适配器。

WebSphere以对多种平台的支持和符合最新的Java标准,提供了开发电子商务应用的可靠平台。

iPlanet Application Server

作为Sun与Netscape联盟产物的iPlanet公司生产的iPlanet Application Server 6.0 版满足最新J2EE规范的要求,并通过了全套J2EE证书测试套件的测试。

iPlanet Application Server的基本核心服务包括事务监控器、多负载平衡选项、对集群和故障转移全面的支持、集成的XML 解析器和可扩展格式底稿语言转换(XLST)引擎以及对国际化的全面支持。包括Directory Server、Web Server和用于Enterprise Application Integration的另一些附件在内的其他iPlanet产品之间实现了紧密的集成。

只要你的服务器满足基本的软硬件要求,在NT 4.0服务器上安装该产品很简单。如果你没有安装iPlanet的Directory Server的话,安装程序还会加载它。

iPlanet Application Deployment工具是基于Java的程序,它可以指导你完成一个应用的部署过程。iAS提供了一款与WebGain Studio、 Inspire JBuilder、IBM VisualAge以及Java企业版的Sun Forte这类第三方工具集成在一起的独立产品iPlanet Application Builder。

Oracle Internet Application Server 8i

Oracle公司在客户安装基础方面占有特殊的地位。Oracle的数据库产品毫无疑问是多种平台上的市场领先产品。Oracle的Internet Application Server(iAS)具有独特的优势:它与其余Oracle产品相互交融,例如,可以利用Oracle iAS向Web 部署任何基于Oracle Forms应用的Oracle Forms Service。

Oracle利用进行了一些扩展的Apache Web Server作为进入Oracle iAS的入口点。 Oracle为Apache开发了插件模块来处理Java小服务程序、Perl程序、PL/SQL程序以及安全套接层上的安全网页。Oracle iAS企业版配置了Oracle Portal (以前叫作WebDB)。Oracle Portal提供了部署企业信息用户所需的工具。

Oracle iAS是该公司将应用推向Web战略的关键组成部分。Oracle 的客户可比较容易地将他们的Oracle Forms和Oracle Reports放到Web上运行。但是, Oracle iAS价格也比较昂贵。

SilverStream Application Server 3.0

SilverStream Application Server 3.0版不仅为开发者提供了具有强烈吸引力的开发环境,而且符合最新标准。

安装SilverStream产品简单直观。SilverStream Application Server包括一个集成的HTTP Web 服务器。SilverStream Application Server参数的控制是利用SilverStream Management Console 完成的。

SilverStream Designer是一种开发全套Web应用(包括为观看Web 网页生成HTML的应用)的全功能设计环境。这种特性使这款产品与众不同,因为它实现了将来自同一个设计环境内部的Web应用的不同部分连接在一起。大量的向导使创建具有静态信息或输入数据格式的新网页成为一项简单的工作。

SilverStream Designer利用相似的基于向导的方式使开发客户端Java应用成为可能。格式向导使你可以从连接数据库中的表格中选择列以及预定义的查询。一旦你设计好基础网页,Designer使你可以像使用Microsoft Frontpage 那样在一个浏览器中预览设计的结果。你甚至可以利用拖放界面来添加Java对象。

Sybase Enterprise Application Server(EAServer)

Sybase EAServer将Sybase的Jaguar CTS和PowerDynamo紧密集成并加以发展,是同时实现Web联机事务处理(Web OLTP)和动态信息发布的企业级应用服务器平台。它对各种工业标准提供广泛的支持,符合基于组件的多层体系结构,是支持所有主要组件模型的应用服务器产品,并且在它的最新版本中加强了对PowerBuilder 组件和Enterprise JavaBeans (EJB)的深层支持。这样,用户可以运用它提供的灵活的开发能力,充分利用多样化的计算环境,建立更加高效的企业Web应用系统。

EAServer 支持多种组件模型,同一应用中可以结合使用各种组件,支持标准脚本语言和任意客户类型,集成了PowerSite 开发环境,使Web应用开发和提交方便快捷。除了优良的性能之外,EAServer还支持多种数据库访问方式,提供给用户可靠的安全性。