具体实施方式
本发明将在下面所例举的因特网或Web实现的背景下进行阐述。不过,应当理解的是本发明并不限于这样的信息网络结构。本发明一般可应用到希望进行有效和高效负载均衡和QoS路由的环境中。
为了引用方便,细节描述的剩余部分将被分为下列各节:(1)说明性结构概述;(2)说明性的方法/系统。
1.说明性结构概述
最先参照图1,它是一个举例说明本发明信息系统实现技术的方框图。如图所示,信息系统10包括一个或多个属于高服务质量类的客户机11-H、一个或多个属于低服务质量类的客户机11-L,一个或多个Web服务器12、通过统一资源定位符(URL)13-1至13-n可访问的内容源14-1至14-n。应当理解的是,内容源可以但不限于后端数据库和/或其它例如消息/事务系统的后端系统、用于在运行时刻创建数据的服务器程序等等。应当进一步理解的是,系统100中的组成部分可以是例如因特网或万维网的较大分布式信息系统的一部分。
也可具有更多服务质量类(例如3,4,5,6个等等)。属于较高服务质量类的客户机被给予访问较高质量内容的优先。在许多情形中,较高的质量内容要求较多的服务开销。较高质量内容的例子包含但并不限于更详细的内容、更新的内容和更高分辨率的图像等等。系统将每个内容源描述为包含高开销版本(15-1至15-n)和低开销版本(16-1至16-n)的内容。高开销版本通常比低开销版本有更高的质量。注意,可以有多于二个的内容版本(例如3,4,5,6个等等)。不同的 版本通常会要求不同的服务开销。版本的服务开销通常与此版本的质量相关。
可以通过高质量内容或较低质量内容满足Web客户机要求。高质量内容通常消耗更多的生成开销。为了满足广泛的需求以提高服务满意度,Web页面可以被区分成具有不同级别开销的版本。这样的方法同样可以适于配置具有不同容量的Web服务器以为客户机提供不同的服务。如图1所示,Web页面具有多个版本,这些版本通常使用不同的开销来生成。
在数据驱动的Web站点中,内容可以从例如数据库服务器和主机的后端信息系统中检索出来。在这样的环境中,内容的区分通过区分的内容复制和查询路由来实现。
图2举例说明的是一个本发明的示例性分层后端信息系统实现技术的方框图。如图所示,系统20包括一个或多个(前端)Web服务器、一个或多个应用服务器21、一个或多个智能路由中间设备22和分层后端服务器23和24。这些后端服务器可以是数据库服务器。同样,可以有多个高端服务器23和/或多个低端服务器24。
高端服务器23存储具有最高级的质量的最新信息。如果高端服务器被太多的客户机请求所吞没,则响应时间会受到不利的影响。因此,在负载过重期间,高端服务器23可以仅满足这些请求中的一部分请求。
低端服务器24周期性地从高端服务器23复制内容。低端服务器24含有不太频繁更新的信息或精度要求不高的信息。当业务量超过高端服务器23的容量时,低端服务器24开始服务于请求,请求来自于低优先(less-favored)的客户机,并且/或者低端服务器24中的内容足以满足客户机的要求(例如图像分辨率、文件大小等等)。
低端服务器24可不同于高端服务器23以减少与不同查询类型相关的成本。例如,高端服务器23能够运行DB2(可以从纽约州的Armonk的IBM公司获取),而低端服务器24则能够运行MySQL(可从华盛顿州的西雅图的MySQL有限公司获取)。低端服务器可以服务 于所选择的查询以在该种类型的操作中利用MySQLT限制。能够使用DB2的DataPropogator/DataJoiner将数据传输给MySQL。重要的是解决这两个系统之间可能会出现的不兼容问题。
2.说明性方法/系统
2.1 QoS方法
伺服一个版本的内容的开销通常与它的质量有关。高质量的版本通常消耗更多的资源。基于数据的质量和系统的配置,存在多种方式来实现本发明的QoS方法,例如:质量区分、数据划分和查询类型区分。
在质量区分方法中,后端服务器存储具有不同开销的内容。高端服务器23存储高质量内容,而低端服务器24包含具有较低开销的数据。应当理解的是,可以存在多于二个的服务器,其存储多于两种的不同质量级别的内容。处理低开销数据时的低端服务器的性能可以匹配或甚至超过高端服务器的性能。在数据划分方法中,所有后端服务器中的数据可以具有相同的开销,但是某些后端服务器不完全复制整个数据集。在第三种方法中,后端服务器以不同的方式进行优化,以服务于特定查询类型。
在质量区分方法中,客户机可以较多开销的成本被提供高质量的内容。高质量内容可以消耗较多的中央处理单元(CPU)时间。高分辨率的图像消耗更多的网络带宽。最新的时间敏感内容不经常进行高速缓存,因此要求较多的开销进行检索。
质量区分方法可以应用于下列类型的环境中:
(i)高端服务器存储更详细的文件和高分辨率的图像,而低端服务器存储降级的版本。当业务量少的时候,请求被路由到高端服务器。在高负载状态下,高级客户机仍然路由到高端服务器,而其它客户机由低端服务器提供服务。客户机简表可以基于它们的预订(例如付费高的顾客比付费低的顾客享受更好的数据质量),或基于例如其设备的容量的客户机特性。例如,使用手提式设备的那些顾客可以享受与该设备的呈现能力匹配的低分辨率图像的服务。
(ii)在流式查询服务中,内容频繁更新,数据的最新程度决定了服务的质量。高端服务器存储最新的数据,低端服务器周期性地从高端服务器复制内容。当业务量很大时,低付费顾客从低端服务器得到内容服务以防高端服务器过载。
尽管在许多情况下希望获得高质量的内容,但是存在低等待时间优先的情形。使用例如无线或拨号网络的低带宽链路的客户机可以优先选择服务器的响应而不是内容质量。因此,客户机具有不同的服务需求。于是能够通过区分内容质量并且改变响应的等待时间而提供QoS。
在数据划分方法中,数据集被划分和分配给不同的后端服务器。例如,在电子商务(e-commerce)Web站点中,一个后端服务器可存储详细目录数据,而另一个后端服务器可存储顾客信息。对不同数据源操作的查询被路由到合适的后端服务器。这种方法能够进行有效的数据缓存、检索,并且利于磁盘和存储器访问密集的操作。然而,其效率取决于数据相关性。如果操作频繁地同时使用详细目录数据和顾客数据,则需要多个连接以从不同的后端服务器检索出数据。
使用查询类型区分的应用如下所述。后端服务器具有不同的系统类型,其中某些后端服务器比其它后端服务器能够更好地进行特定的操作。路由模块使用这种差别在性能和成本方面获益。例如,像MySQL那样的简单数据库实现在例如选择的查询类型方面优于其它数据库。因此某些后端服务器可以被定制成对这些类型的查询提供服务。对硬件配置进行定制以加速指定操作也是有益的。例如,更多的随机访问存储器(RAM)可以大大加速联合操作。更加强大的CPU可以加速计算密集的查询的执行。这种方法可以考虑数据分布以改善数据局部性。
2.2基于负载的质量区分
图3是一个根据本发明的实施例,举例说明基于负载质量区分方法的方框图。所例举的方法可以通过一个或多个后端服务器来实施。在图3的基于负载的质量区分方法中,以相同方式对待多个客户机。服务于服务的内容的版本由系统负载决定。系统负载可以是CPU使用 率和存储设备的业务强度的函数。
例如,示例性策略可以定义如下:(i)当CPU使用率在80%以下时,所有的请求都能享受高质量的服务;(ii)当CPU使用率大于90%时,所有的请求都享受低质量的服务;(iii)当CPU使用率在80%和90%之间时,50%的请求给予高质量的服务,而另外50%给予低质量的服务。
在这种方法中,版本选择器32从Web服务器31接收URL。如果URL具有不同开销的多个版本,则咨询系统负载监视器33。系统负载监视器33监视Web服务器、网络和后端服务器的负载。监视器将负载信息34发送到版本选择器32。负载信息34可以是例如CPU使用率、磁盘业务量等等的形式。版本选择器32基于负载信息和策略选择合适的URL版本(例如,低开销版本35或高开销版本36),检索出内容并与Web服务器31进行通信。
2.3基于类的质量区分
图4是一个根据本发明的实施例,举例说明基于类的质量区分方法的方框图。所例举的方法可以通过一个或多个后端服务器来实现。正如图4所描述的那样,所请求的URL的版本由该客户机所属的QoS类来确定。该客户机的QoS类通过请求所来自的网际协议(IP)地址和/或其它例如登录名、Cookie等等的客户信息来识别。
较高优先类的请求享受较高质量的内容服务。例如,基于类的路由策略如下:(i)类1:100%为高质量;(ii)类2:35%为高质量,25%为中等质量,45%为低质量;(iii)类3:50%为中等质量,50%为低质量。
在这种方法中,Web服务器41对超文本传输协议(HTTP)请求进行分析,提取该客户机的身份和浏览器特性。这样的信息42被送给版本选择器43。版本选择器43基于QoS信息和策略选择适当的URL版本(例如,低开销版本44或高开销版本45),检索出相应的内容,并与Web服务器41进行通信。
2.4混合质量区分
图5是一个根据本发明的实施例,举例说明混合质量区分方法的方框图。所例举的方法可以通过一个或多个后端服务器来实现。在图5中,用于服务于请求的版本由该客户机的QoS类和当前系统的负载共同确定。例如,能够制定如下策略:(a)当CPU的使用率在80%以下时,为所有的请求提供高质量的服务;(b)当CPU使用率大于80%时:(i)类1:80%的请求享受高质量的服务,20%采用低质量的服务;(ii)类2:35%为高质量,20%为中等质量,45%为低质量;(iii)类3:50%为中等质量,50%为低质量。
在这种方法中,版本选择器53从Web服务器51接收该客户机的URL和QoS类52。如果URL具有不同开销的多个版本,则咨询系统负载监视器54。系统负载监视器54监视Web服务器、网络和后端服务器的负载。监视器54向版本选择器53发送负载信息55。版本选择器53基于负载信息、该客户机的QoS类和策略选择适当的URL版本(例如版本号56)信息,检索出(57)内容,并与Web服务器51进行通信。
2.5分层配置
在图2所示的多层环境中,内容可以通过后端服务器23和24检索。请求被路由到适当的服务器以获得恰当的服务。路由中间设备22执行路由功能。分层后端服务器可以具有不同容量。例如,在数据库环境中,数据表可以不完全在所有的后端服务器中进行复制。具有最完整复制的服务器则是高端服务器23,具有部分复制的服务器是低端服务器24。高端服务器通常比低端服务器24具有更多的容量。
当HTTP请求到达时,前端Web服务器21对请求进行分析并提取客户机身份(如果有的话)。客户机身份与服务于请求的QoS类有关。Web服务器21可以调用应用服务器(例如IBM公司的WebSphere应用服务器)中的业务应用逻辑。这些业务应用不必知道后端服务器的配置。因此,对这些应用进行重写可能并无必要。
当业务应用与后端服务器进行通信时,它们首先将查询传递到路由中间设备22。后者基于查询所属的QoS类、后端服务器的负载分 布和查询的类型(例如,它们是否更新数据源)将这些查询发送到适当的后端服务器。下面描述所例举的路由策略和实施方法。
2.6路由策略
路由中间设备22根据特定路由策略将查询发送到后端服务器。在这种配置中的路由策略的例子可以包含:
(1)数据仿射性(affinity)
如果应用需要访问没有驻留在低端服务器24中的数据库表,该应用使用高端服务器23。这种策略适用于数据没有完全被复制的情形。
(2)数据一致性
如果已知应用包含数据插入、更新或删除操作,则虚拟驱动程序(下面在图9的环境中描述)选择高端服务器23作为它的数据源,以保持低端服务器24的更新。也可以将路由中间设备22编程为调度此查询,以在应用完成时对低端服务器24进行更新。
(3)查询复杂度
如果应用含有不好在一个服务器中处理、否则会使得对这些查询的处理过程与其它服务器相比导致其等待时间很长的查询,这个应用将使用高端服务器23。这些操作的例子包含联合和递归选择。这种情形的检测可以不需要分析该应用代码。可通过对两个服务器以前的访问时间进行比较来进行识别。
(4)QoS策略
在基于QoS的策略中,服务器选择是业务量构成和请求的优先级的函数。这样的策略在下面的2.11节将进一步地阐述。
(5)服务器负载
在负载均衡策略中,如果高端服务器23表现为高负载,则接下来的请求使用低端服务器24。这样的策略将在下面的2.10节进行进一步的阐述。
2.7后端服务器选择
在多节点后端服务器配置中,具有不同版本的内容可以在后端服 务器间进行复制。含有高质量内容的版本的后端服务器通常为服务这些请求而消耗更多的资源。例如,一个服务器可以是频繁接收外部更新处理的数据库服务器。它维持着最新的数据。其它的服务器可以是文件服务器,它缓存来自数据库服务器的查询结果。数据库服务器会比文件服务器花费更多的CPU时间以处理查询。然而,该数据库产生更新的版本。
图6是一个根据本发明的实施例,举例说明后端服务器选择方法的方框图。如图6所述,URL和QoS信息被传给版本选择器61,它决定URL的哪一个版本应当服务于请求。然后版本选择器61将该版本号传给服务器映射模块62。服务器映射模块62维护内容复制信息63,该信息在所有后端服务器中映射内容和其多个版本的复制位置。服务器映射模块62基于版本号和复制状态提取服务器地址。然后模块62连接到地址64并将查询路由到此地址。这种功能可以在路由中间设备22中实现。
2.8系统实现方案
本发明提供了不同的可选实现方式,包含集中式模式和分布式模式。
在集中式模式中,由集中式路由中间设备作出路由决策,集中式路由中间设备具有关于业务量、系统负载和/或后端服务器之间的配置差别的知识。Web应用与路由中间设备进行通信以获得路由指令。
在分布式模式中,路由决策不是通过集中式实体来做出的。Web应用基于后端服务器中负载分布的局部估计将查询发送到适当的后端服务器。Web应用周期性地将它们各自的路由策略集中起来,如果在必要时对其进行修改以保持策略的一致性。
2.8.1集中式模式
图7是一个根据本发明的实施例,举例说明集中式负载均衡模式的方框图。如图所示,Web应用71-1至71-m与交换机72进行通信。交换机72使用路由策略73以处理服务器选择、查询传输和将结果转送到Web应用。交换机72可以作为上述的路由中间设备模块 22(图2)来实施。路由策略73在上述的2.6节举例进行了说明。
一个优点是路由中间设备对针对后端服务器75-1至75-n的业务量具有全局的观点。交换机72因此能够确保路由决策的一致性。然而,当业务量很大时,交换机72可以成为一个瓶颈。这样的实现同样对驻留在不同机器中的多个Web应用会需要特殊的应用程序设计接口(APIs)74,以便和与后端服务器75-1至75-n交互的交换机72进行通信。因此这种模式会需要改变已存在的应用。
2.8.2分布式模式
图8是一个根据本发明的实施例,举例说明分布式负载均衡模式的方框图。在这种模式下,Web应用81-1至81-m使用相应的交换机83-1至83-m局部地做出它们自己的路由决策(就后端服务器84-1至84-n而言),并周期性地与仲裁器82进行通信。仲裁器82将全局路由和业务量信息85合并,并指示Web应用调整它们的路由策略。这种模式对路由功能进行分布,因而比集中式模式更加可伸缩。仲裁器81可以利用分别在下面的2.10节和2.11节阐述的本地检测方法和QoS策略协调方法。
2.9路由中间设备的实现
图9是一个根据本发明的实施例,举例说明路由中间设备的方框图。在这个实施例中,路由中间设备是根据基于Java servlet的系统进行实施的。假定数据库服务器提供后端服务。
如图9所示,路由中间设备由两部分组成:调用方servlet 91和虚拟JDBC驱动程序93。调用方servlet 91能够通过信息传递或共享存储器与虚拟JDBC驱动程序93进行通信。
在Java servlet环境中,调用方servlet(91)可以是指在Web服务器(90)结束协议处理之后获得HTTP请求的处理句柄的服务器。调用方servlet可以解析URL和实际业务应用逻辑之间的映射,并为业务应用逻辑构建运行时间环境。应用servlet 92可以由调用方servlet 91进行调用,并实现业务逻辑。
JDBC驱动程序94-1至94-n可以是应用(例如Java servlet)和 数据库服务器95-1至95-n之间的接口。JDBC驱动程序从应用接收命令(结构化查询语言命令或SQL),根据指定协议对它们进行转换,将命令发送到数据库服务器,并从数据库中检索出结果。
虚拟JDBC驱动程序93驻留在应用和实际的JDBC驱动程序94-1至94-n之间,驱动程序94-1至94-n与数据库服务器95-1至95-n进行通信。驱动程序93从这些应用接收命令并将它们转递到实际的JDBC驱动程序。在传递期间,驱动程序93可以根据目的驱动程序的规格接收命令。驱动程序93同样也能够选择命令发送的目的地。
调用方servlet 91从HTTP请求中获得客户机信息。这样的信息可以包含确定其优先级的客户机身份和指示其呈现能力的浏览器类型。然后,在将请求发送给执行业务逻辑的应用servlet 92之前,调用方servlet 91将此信息94发送到虚拟JDBC驱动程序93。当应用servlet 92需要与数据库联系时,它可以首先建立数据库连接。
一个建立数据库连接的示例性方法是调用例如下面的函数:
Connection conn=DriverManager.getConnection(url,“username”,“password”)
其中url是一个指向数据库服务器地址的字符串。
与直接连接到实际数据库服务器相反,应用servlet 92可以首先通过将其地址赋给参数url来调用虚拟JDBC驱动程序93。然后,后续命令可以被虚拟JDBC驱动程序93截取。
虚拟JDBC驱动程序93处理查询路由和查询语法差别的消除。更具体地,当虚拟JDBC驱动程序93被调用时,驱动程序决定哪个实际数据库服务器应当服务于来自应用servlet的后续查询。这种方法在这里的2.6节、2.7节、2.10节和2.11节进行了描述。
在不同的数据库服务器中有许多依赖于平台的SQL模式。因此,可能有必要向不同的数据库提供适当的SQL。有多种解决方案,例如延缓查询具体化(deferred query materialization)和查询重写。
延缓查询具体化为查询语言提供抽象层。与直接使用SQL查询 相反,应用逻辑使用与后端数据库实现无关的特殊API以构建查询逻辑,并将其翻译成与真实平台相关的数据库查询。因此,应用逻辑经常不需要了解其与之交互的实际数据库,而且程序员能够把更多的注意力集中在业务逻辑本身。这种类型的例子包含Java数据对象(JDO)规范(加利福尼亚州圣克拉拉市的Sun Microsystem公司)。这个方法的缺点是现有的应用可能必须重新编写以采用分层服务。可选地,查询也能够在被导向分层服务器之前进行重写以消除语法差别;于是,分摊(amortize)了修改现有应用的开销。
在选择实际数据库服务器和消除查询语法差别之后,虚拟JDBC驱动程序93调用与数据库服务器相关的实际JDBC驱动程序并将查询传递给该实际JDBC驱动程序。后者执行数据库处理逻辑。
2.10负载检测
检测服务器负载的一种方式是利用响应时间变化。然而,因为对单个数据库查询的访问时间可能变化很大,它并不总是服务器负载的可靠标志。
负载检测技术可以基于每个URL的总数据库访问时间和相关HTTP请求处理时间之比的变化。数据库访问时间可以通过结果集的大小、查询复杂性和查询并发度来决定,而查询并发度是非常不稳定的。然而,相应的servlet可能需要处理结果集并构建查询命令,查询的复杂性与访问数据库服务器的复杂性成近似为线性的关系。于是,当数据集变化不是很大时,该比值能够表示哪个服务器是过载的。由于数据库的访问时间过长而产生的较高比值表明该数据库负载更多。相反,较低的比值表明该Web负载较少。
更具体地,那些没有数据更新操作的URL的数据库服务器选择算法如下。如果以前的访问表明URL是数据库访问密集的(以总数据库访问时间为特征),则在完成时,它的总数据库访问时间和HTTP处理时间的比值可以估计出来,并可以与先前的值进行比较。如果它们的差值超过了一定的门限,可以指令交换机将某些业务量路由到辅助数据库服务器。否则,当前的业务量负载对于高端服务器(图2中的 23)容量可以被认为是可接受的,而且当前业务量速率和比值可以作为将来的参考而记录下来。
负载检测算法可以确定使用高端服务器23的同时请求的最大数目Max。量Max可以定义如下:
在上述方程式中:
(i)正实数a和b是调节参数并且满足a+b=1。较高的a值导致高端服务器23的业务量更加逐渐的减少,而较低的a值对于防止高端服务器23的过载更有效。
(ii)Max是同时请求的最大数目的先前值。
(iii)Rate是高端服务器23的当前业务量速率。
(iv)r是被监视查询的数据库访问时间和HTTP处理时间之比,而 是它的均值。
(v)Δ是控制多大的r的变化被认为是正常的变化门限。超出该门限的变化被认为是出现过载。
该方程式的思路如下。同时连接的当前最大值由它的历史值和当前的业务量速率所确定。调节参数a和b确定每个分量影响Max值的程度;a值越大,b值越小使得Max受业务量变化的影响较小,反之亦然。如果比值r在变化范围之内,则高端服务器23可以被认为是未得到充分利用,使得能够处理额外的业务量而不受惩罚。一旦r在它的变化范围之外,当前的业务量速率和Max的历史值接近高端服务器23的容量。这种方法的一个优点是对当前应用的修正很少,并且可适应各种各样的servlet应用。
该算法的一个说明性实施例以下面示例性代码(FACILITIES)的形式明确表达出来。本领域的技术人员同样可以在本发明的宗旨和范围内进行变化。
FACILITIES:
boolean contain_update(url):布尔函数,断定所给定的url是否包含插入/删除/更新查询。
long db_processing_time(url,db):返回数据库db处对给定url的处理时间的函数。
float ratio(url):返回URL的数据库访问时间与HTTP处理时间的比值的函数。
R:主服务器的当前业务量速率。
delta:比值变化的门限。
Max:主服务器的最大并发连接。
Conn DB_select(url)
{
if(contain_update(url))
return primary;/*更新查询被发送到主服务器*/
if(R>Max)
return secondary;/*如果主服务器的业务量很大,辅助服务器开始工作*/
if(db_processing_time(url,primary)>db_processing_time(url,secondary))
return secondary;/*url由最能够处理该查询的服务器服务*/
}
Postprocessing(url)
{
计算和存储选定数据库db处URL的平均数据库访问时间。
计算数据库访问时间与HTTP处理时间的比值,用r表示。如果URL由辅助数据库提供服务,则退出。
if(r>ratio(url)*(1+delta))
Max=a*Max+b*R;
Else
Max++;
}
Helper modules:
boolean contain_update()....
long db_processing_time()....
float ratio()....
R:....
Dealta:....
Max:....
Functions:
Conn DB_select()....
Postprocessing()....
当servlet建立访问数据库的连接时,调用函数DB_select。函数返回数据库连接。当该servlet终止时,调用函数Postprocessing。此函数收集运行时间统计并重新计算用于选择数据库连接的全局变量。算法的复杂性与跟踪的URL数目成线性关系,大部分操作是字符串匹配。路由开销相对很低。
2.11 QoS策略协调
QoS策略协调处理接收从Web服务器接收业务量组成和数据库选择信息,并且检查数据库调度的综合效果是否一致。如果有必要,QoS策略协调处理通知Web服务器改变其本地决策函数参数。
可以利用多个因素对数据库查询进行路由,包含:请求优先级和来自不同类的业务量组成。该算法一个说明性实施例如下。本领域的技术人员同样可在本发明的宗旨和范围内进行各种变化。
对于属于类i的请求r,布尔变量Si表示r是否能够访问高端服务器23:
其中
(i)1()是布尔函数。
(ii)λi是属于类I的自从时间点t以来已经到达的请求的数目。
(iii)Wi是优先级权重。
(iv)Max是高端服务器23能够接受的同时请求的最大数目。
(v)Ci是自时间t以来已经使用高端服务器23的类i的请求的数目。
从该方程式推出,在集群Web服务器环境(服务器基于它自己的业务量条件进行数据库选择)中,总体上整个Web服务器上的请求路由可能是不正确的。因此,可以设立代理(agent)对分布式选择算法进行仲裁以逼近理想值。
在时间帧T期间,在Web服务器p处的高端服务器23的使用率Np为:
其中λi p和Maxp是Web服务器p处的本地观测值。Wi p为这个服务器所用的本地优先级权重。
从所有Web服务器中得出的高端服务器23的理想综合使用率Nideal为:
在大部分情形下,Wj+Wj p不能确保 因此,本地优先级加权矢量Wi p可以调整以近似于理想值。
2.12外化(externalized)程序逻辑
本发明的另一方面是将用于对顾客分类或选择后端的程序逻辑外化。通过为系统提供一个或多个具有可变性的点来完成外化(externalization),这些点是程序代码中作为针对外化库(externalizedrepository)的需要执行的逻辑的调用的点。绑定是动态的,逻辑可以随时间变化而不用对系统代码重新进行编译。可以使用例如“BRBeans”的技术(纽约州,Armonk的IBM公司)来产生这种效果,例如见A.Nartovich等人的“WebSphere Application ServerEnterprise,A Programmer”,第4版,第3章,IBM红皮书,2002年2月,这里参考引用了其公开内容。
外化的逻辑可以进一步被指定为信息技术中非专业人员能够编 写的一组规则,见例如,I.Rouvellou等人的“Extending BusinessObjects with Business Rules”,第33届面向对象语言和系统技术国际会议论文集,法国Mont Saint-Michel/St-Malo,IEEE计算机学会出版,第238-249页面,2000年6月,这里参考引用了其公开内容。
2.13服务器提供方
本发明的另一方面是如何确定客户机的类、如何创建有区分的内容。这些功能能够由服务器提供方来执行。服务器提供方最好依据愿意付多少费用以得到更好的服务而赋予客户机不同的服务质量类。付费较高的客户机赋予较高的服务质量类。
服务器提供方也具有提供不同内容的能力。服务器提供方通过找出高峰期间的瓶颈资源来达到此目的。例如,服务器提供方可以确定通过数据库提供大量动态内容的Web站点的瓶颈资源为数据库。为了降低数据库的开销,服务器提供方会为频繁的查询提供缓存器。该缓存器能够用于以较低的开销创建动态内容。缺陷在于该缓存器可能没有完全最新的数据。高付费客户会被给予访问最新版本的优先。
服务器提供方能够周期性地监视系统以确定出该系统的哪些部分在不同时期将成为瓶颈。例如,在某些点上,瓶颈可以是数据库。在其它点上,瓶颈可以是网络。服务器提供方不断地修正有区分的内容,以及如何服务于不同的客户机,以响应条件的变化。
例如,服务器提供方根据以前与客户确立的服务协议,可以指定服务质量策略。该策略可以包括多个预订,每个预订被指定内容质量和服务等待时间。对有限的高级服务预订可以以低服务等待时间和高内容质量提供服务。对中等服务预订可以提供高质量内容或低等待时间的服务。对未加限制的最大努力服务预订可以提供未指定内容质量和等待时间的服务。
2.14说明性计算系统
图10是一个根据本发明的实施例,根据可实现的信息系统的一个或多个部分/步骤(例如,可根据该信息系统执行的图1至图9的情形中描述的系统/方法),举例说明计算机系统的硬件实现的方框图。 例如,图10中所例举的结构可以用于实现上述提到的任何和所有的客户机设备、服务器、路由中间设备、版本选择器、服务器映射模块、交换机、仲裁器、servlet、驱动程序等等。
此外,应当理解的是,各个组成部分/步骤可以在一个这样的计算机系统上实现,或更好地,在多于一个的这样的计算机系统上实现。在分布式计算系统的实现情形中,单个计算机系统和/或设备可以通过适当的网络,例如因特网或万维网连接。另一方面,该系统可以通过专用或本地网络实现。本发明并不限于任何特定的网络。
如图所示,该计算机系统100可以根据通过计算机总线110或可选连接方案连接的处理器102、存储器104、I/O设备106和网络接口108实现。
应当理解的是,在这里术语“处理器”旨在包含任何处理设备,例如包含CPU(中央处理单元)和/或其它处理电路的设备。同时应当理解,术语“处理器”可以指多于一个的处理设备,并且各种与处理设备相关的单元可由其它处理设备共享。
在这里使用的术语“存储器”旨在包含与处理器或CPU相关的存储器,例如RAM、ROM、固定存储器设备(例如,硬盘驱动器)、可移动存储设备(例如,软盘)、闪存等等。
此外,这里使用的短语“输入/输出设备”或“I/O设备”旨在包含一个或多个输入数据给处理单元的输入设备(例如,键盘、鼠标等等),和/或一个或多个提供与处理单元相关的结果的输出设备(例如扬声器、显示器等等)。
还有,在这里使用的短语“网络接口”旨在包含例如一个或多个无线收发信机,其使得该计算机系统能够通过适当的通信协议与另一个计算机系统进行通信。
因此,包含执行这里描述的方法的指令或代码的软件部件可以存储于一个或多个相关的存储设备(例如,ROM,固定或移动的存储器)中,当准备利用它时,部分或全部装载(例如,装入RAM)并由CPU执行它。
尽管在这里参照附图描述了本发明的说明性实施例,然而应当理解的是,本发明并不限于这些精心设计的实施例,可以由本领域的技术人员对其做出各种其它的变化和修正,并且不背离本发明的范围和实质。