使用历史度量程序性地确定请求分派的执行模式的制作方法

文档序号:6359759阅读:113来源:国知局
专利名称:使用历史度量程序性地确定请求分派的执行模式的制作方法
技术领域
本公开涉及中间件 领域,并且更具体地,涉及利用历史度量程序性地(programmatically)确定请求分派的执行模式。
背景技术
当应用服务器处理诸如Web应用(例如,JAVA Servlet或JAVASERVER PAGE)的可执行代码时,Web应用中可能存在一个或多个请求分派。这些请求分派通常由指定要执行资源的includeO函数调用表示,诸如另一个servlet或JAVA SERVER PAGE (JSP)0指定的资源可被以异步或同步这两种模式之一执行。同步执行通常导致可执行代码阻塞(例如,挂起),直到指定的资源执行完成,这在许多情况下不能令人满意。另外,资源可以包括附加请求分派,它们可能执行其它资源,导致频繁给Web应用引入显著等待时间的执行链。从而,作为这种等待时间的结果,可能产生若干不利,这可以包括无响应的应用和/或过大的服务器负载。一种克服这些不利的解决方案是针对指定的资源采用异步执行模式。然而,异步执行引入开销,例如建立新线程、在输出中放置标记、以及取代用于服务器或客户端侧聚集的标记。在许多情况下,这种开销会增加显著减小异步执行提供的性能增益的等待时间。例如,资源的同步执行可能导致IOms的等待时间,而由于异步执行引入的开销(例如,线程设置代价),异步执行相同资源可能导致20ms的等待时间。另外,在动态服务器环境中,由于资源可获得性的改变,同步和异步资源执行可以具有变化的结果。由于Web应用通常部署在这些环境中,所以Web应用的性能有波动。为了解决这些问题,Web开发者经常进行哪种执行模式会产生最佳性能结果的有根据的猜测。这些猜测经常不会得到最优应用性能。从而,许多执行Web应用的服务器环境可能有不充分的资源使用和减少的放大器能力的问题,这无疑加重了信息技术(IT)基础设施的负担。

发明内容
本公开的一个实施例包括一种用于分派请求的方法。在该方法中,可以识别在执行时在第一可执行代码内要执行的请求分派。该请求分派可与唯一识别值相关联。请求分派的唯一识别值可以标识要执行的第二可执行代码。第一和第二可执行代码可以驻留在Web容器的部件内。该Web容器可以利用允许资源包括的任意各种技术。例如,Web容器可与运行时环境(例如,J2EE运行时环境)相关联。在执行第二可执行代码之前,可以确定第二可执行代码的执行模式。该确定可以涉及评估性能度量和阈值中的至少一个。所述阈值可以是用户建立的值和程序性建立的值中的至少一个。执行模式可以是异步执行模式或同步执行模式。响应于确定执行模式,可以基于使用确定的执行模式来执行请求分派。同步执行模式可以导致第一可执行代码在第二可执行代码的执行开始之前执行和完成。异步执行模式可以导致同时执行第一和第二可执行代码。公开的另一个实施例可以包括一种用于分派请求的系统。该系统可以包括能够识别和执行与第一可执行代码相关联的请求分派的分派引擎。分派引擎可以是运行时环境内的传输通道链的部件。该传输通道链可以与开放系统互连(OSI)层模型的传输层相关联。该运行时环境可以是支持资源包括的任意环境。例如在一个实施例中,运行时环境可以是JAVA 2 ENTERPRISE EDITION(J2EE)运行时环境。该系统还可以包括与第一可执行代码相关联的请求分派。请求分派可以与唯一识别值相关联。该唯一识别值可以标识要执行的唯一资源。请求分派可以触发唯一资源的执行。唯一资源可以包括第二可执行代码。该系统还可以包括与请求分派相关联的至少一个性能度量。可以在请求分派执行过程中自动收集性能度量。该性能度量可被用于修改请求分派的执行行为。可以存在配置为建立与请求分派相关联的阈值、执行模式和事件处理器中的至少一个的规则集。该阈值可以是用户建立的设置或自动确定的值。执行模式可以是同步执行模式或异步执行模式。同步执行模式可以导致第一可执行代码与第二可执行代码顺序执行,而直到第一可执行代码完成其执行,不允许第二可执行代码执行。异步执行模式可以导致同时运行第一和第二可执行代码。


现在参考附图仅以示例的方式描述本发明的优选实施例,附图中图I是例示了根据此处公开的发明布置的实施例的利用历史度量程序性地确定请求分派的执行模式的方法的流程图;图2是例示了根据此处公开的发明布置的实施例的利用历史度量程序性地确定请求分派的执行模式的可执行代码段和通信模型的框图;图3是例示了根据此处公开的发明布置的实施例的利用历史度量程序性地确定请求分派的执行模式的系统的框图;图4是例示了根据此处公开的发明布置的实施例的利用历史度量程序性地确定请求分派的执行模式的界面集合的框图。
具体实施例方式本公开提供了在运行时利用历史度量程序性地确定请求分派执行模式的解决方案。即,请求分派器可以在以同步模式和异步模式处理请求分派(例如,includeO )之间自动且智能地切换。每个请求分派可与诸如进程ID或统一资源标识符(URI)的唯一识别值、历史度量和规则集相关联。随着请求分派的每次执行,可以收集历史度量。度量可以包括但不限于执行持续时间和/或执行频率、处理器负载、存储器使用、网络输入/输出、相关请求分派数目等。利用历史度量,可以构建用于确定执行请求分派的后续执行的模式的规贝1J。例如,当请求分派的同步执行持续时间(例如,100ms)超过了用户指定的持续时间(例如,50ms)时,可以按异步模式执行请求分派的后续执行。与请求分派相关联的规则可以是用于确定适当执行模式的一个或多个任意复杂规则。从而,可以进一步改进Web应用的运行时优化。如本领域技术人员理解的,本发明可具体实现为系统、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文中一般都称为“电路”、“模块”或“系统”。此外,本发明还可以采取在一个或多个其上包括计算机可用程序代码的任何有形表示介质中体现的计算机程序产品的形式。可以采用一个或多个计算机可用或计算机可读的介质的任意组合。计算机可用或计算机可读介质可以是例如但不限于,电、磁、光、电磁、红外、或半导体的系统、装置或器件。计算机可读介质的更具体的例子(非穷举的列表)包括以下具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CDROM)、光存储器件或磁存储器件。计算机可读介质可以是非暂时存储介质,其中数据被以数字编码形式保存。计算机可读介质可以是能够保持信息的物理的、有形存储介质,所述信息可被计算装置提取,以便获得存储在存储介质上的数据内容。可以以一种或多种编程语言的任意组合来编写用于执行本发明的操作的计算机程序代码,所述编程语言包括面向对象的编程语言一诸如Java、Smalltalk、C++等,还包括常规的过程式编程语言一诸如“C”编程语言或类似的编程语言。程序代码可以完全地 在用户计算机上执行,部分地在用户计算机上执行,作为一个独立的软件包执行,部分在用户计算机上部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如,利用因特网服务提供商来通过因特网连接)。下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图例示和/或框图来描述本发明。应当理解,流程图例示和/或框图的每个块以及流程图例示和/或框图中块的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令通过计算机的处理器或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的一个或多个块中规定的功能/动作的装置。也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的一个或多个块中规定的功能/动作的指令装置的制造
品O也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程装置上执行一系列操作步骤,以产生计算机实现处理,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的一个或多个块中规定的功能/动作的处理。图I是例示了根据此处公开的发明布置的实施例的利用历史度量程序性地确定请求分派的执行模式的方法100的流程图。在方法100中,可以按照机器确定的方式自动执行与在应用服务器(例如,JAVA 2ENTERPRISE EDITION应用服务器)中执行的识别出的可执行代码(例如,JAVA servlet)相关联的请求分派。利用历史度量,可以在运行时执行请求分派确定,以便识别执行模式异步或同步。可执行代码可以是Web应用的一个或多个部件,包括但不限于 servlet、JAVAserver page, JAVA bean、JAVA class (类)、portlet 等。例如,可执行代码可以是提供动态web内容的JAVA web应用。
方法100可以在任意数目的适合系统(例如,系统300)的环境中执行。在本公开中,出于表述清楚和方便起见,提供了基于JAVA实现的例子。本公开的范围不限于此,并且可以使用任意各种技术(包括非JAVA的技术)实现此处详述的发明布置,只要这些实现技术支持资源包括。例如,在一个实施例中,如此处详述的,当使用历史度量确定请求分派的执行模式时,可以利用.NET技术。如此处使用的,请求分派可以包括允许执行开发者指定的资源的程序命令。在一个实施例中(例如,基于JAVA的实施例),请求分派可以是JAVA应用程序接口(API)方法,例如includeO和forward O。请求分派可被使用一个或多个标识机制唯一标识,包括但不限于,进程ID、自动/手动代码注释、加标签、统一资源定位符(URL)标识、唯一路径标识、唯一查询串等。每个请求分派可与一个或多个历史度量和允许基于应用服务器性能的优化请求分派的执行模式设置相关联。在步骤105,初始化Web容器内的可执行代码。可执行代码可以是在Web容器内执 行的Web应用。Web容器可以是在JAVA 2ENTERPRISE EDITION(J2EE)应用服务器(例如,JAVA VIRTUAL MACHINE (JVM))内执行的一个或多个构造。可以根据实现选择和执行方法100的目标实现环境来利用其它服务器(例如,.NET服务器),而不是J2EE应用服务器。在步骤110,识别与初始化的可执行代码相关联的请求分派。识别出的分派可与要执行的一个或多个资源相关联。资源可以是一个或多个可执行代码对象,例如servlet、一个或多个JAVA SERVER PAGE (JSP) Web页面等。在步骤115,如果存在用于识别出的分派的度量,方法可以继续到步骤120,否则进行到步骤155。与识别出的分派相关联的度量可以是一个或多个历史度量。度量可以包括但不限于,执行持续时间和/或执行频率、复杂度、处理器负载、存储器使用、网络输入/输出、相关识别出分派的数目等。例如,度量可以包括识别出的分派在确定的时间段上的平均执行持续时间。另外,可以追踪识别出的分派的每个执行模式的度量,从而允许最优决策形成功能。即,可以执行对异步执行模式和同步执行模式的度量的评估,以便建立Web应用的默认设置。在步骤120,如果识别出的分派的历史度量超出了以前建立的阈值,该方法可以继续到步骤125,否则进行到步骤140。例如,该阈值可以是诸如执行持续时间的定时值。在一个实施例中,历史执行时间和阈值可被数字地比较,以便确定以哪个模式执行识别出的分派。在缺少阈值的情况下,可以使用“最佳猜测”方法执行识别出的分派。例如,通过分析类似的分派,可以程序性地得出允许智能执行识别出的分派的阈值。在步骤125,向事件处理器注册分派事件。在步骤130,以可以包括非阻塞代码执行的异步模式执行识别出的分派。即,Web应用可以继续与识别出的分派同时执行。在步骤135,可以收集识别出的分派的度量。可以利用一个或多个度量收集部件来收集度量,诸如性能监视代理。性能监视代理可以包括但不限于负载监视器、可执行代码优化工具等。在步骤140,可以按同步模式执行识别出的分派。在步骤147,可以为识别出的分派收集度量。在步骤145,可以为识别出的分派收集度量数据。在一个实施例中,度量数据可以包括识别出的度量的阻塞持续时间。在步骤150,如果完成了识别出的分派执行,该方法可以继续到步骤157,否则该方法可以返回步骤140。在步骤155,使用默认设置执行识别出的度量,并且可以收集与该分派相关联的度量。在步骤157,可以基于历史度量可选择地修改阈值。例如,修改可以包括随时间增大/减小阈值。即,可以随着收集历史度量不断改进运行时性能。在步骤160,如果可获得与可执行代码相关联的更多分派用于处理,方法可以返回步骤110,否则继续到步骤165。在步骤165,可以终止对可执行代码的执行。应当理解,方法100的公开步骤不应被解释为以任意方式限制本发明。方法100可被连续并且实时执行,允许随着应用服务器资源可获得性波动而动态优化每个可执行代码。然而,为了避免对分派的可能降低性能的过度优化,可以通过方法100可选择地静态地确定每个请求。在一个实施例中,可以按允许最小化计算资源的间隔执行方法100。图2是例示了根据此处公开的发明布置的实施例的利用历史度量程序性地确定请求分派的执行模式的可执行代码段210和通信模型230的框图。在一个情况下,可执行代码段210可以是JAVA源代码文件。此处可以使用基于其它(非JAVA)技术的其它类型的代码段210,此处使用基于JAVA的例子,以便表达被解释为与任意特定实现语言无关的概念。在可执行代码段210中,请求分派应用程序接口(API)212可以允许基于一个或多个条 件(其包括但不限于,可用资源、性能历史等),自动以优化方式执行请求分派。在一个实施例中,API 212可以是封装已有请求分派器的包装类。在另一个实施例中,API 212可以是对传统请求分派器的“插入式(drop-in)”替换。S卩,已有的可执行代码可以保持不被修改,同时获得API 212的性能益处。在一个实施例中,请求分派器244可以是允许请求分派的透明、动态模式执行的传输通道链240的一个部件。利用API 212,应用开发者可以允许基于可获得的计算资源在运行时以最佳执行模式处理请求分派214。在一个实施例中,API 212可以是IBM WEBSPHERE Web容器平台的部件。例如,应用开发者可以通过一个或多个导入指令(例如,“import com. ibm.Websphere, ffebcontainer. RequestDispatch”)访问请求分派功能。请求分派214可以包括一个或多个参数,以便允许定制执行。在一个实施例中,自变量(例如,auto,500ms)可以允许应用开发者控制请求分派行为的一部分。另外,API 212可以允许本地管理和监视请求分派的功能,从而允许开发者保持对执行代码和运行时环境的控制。在一个实施例中,请求分派器244可以驻留在开放系统互连模型230的传输层232内。分派器244可以透明地接收和分派HTTP 246请求给适当的Web容器242。从而,分派器244可以独立于部署的应用和应用限制发挥功能。此处给出的附图仅用于说明目的,并且不应被解释为以任何方式限制本发明。在一个实施例中,API 212可以对应用开发者透明,从而请求分派语法可以与传统语法相同。另外,API 212可以是给Web应用自动提供功能的基本包的部件。即,应用开发者不需要手动导入API 212的功能。图3是例示了根据此处公开的发明布置的实施例的利用历史度量程序性地确定请求分派的执行模式的系统300的框图。在系统300中,请求分派器340可以允许按自动确定的模式执行与servlet 324相关联的分派326。程序性确定的模式可以是同步执行模式和异步执行模式。在一个实施例中,自动确定的执行模式可以传统方式执行。即,不需要分派行为的改变和/或开销而使得分派器340能够发挥功能。在一个实施例中,引擎342可以自动确定对于请求分派326的后续执行的执行模式。从而,响应于服务器320的资源可用性,分派326的每个实例可以按同步或异步模式执行。如此处使用的,每个servlet 324可通过请求分派326与一个或多个可执行资源相关联。Servlet 324 可以在 JAVA 2 ENTERPRISE EDITION(J2EE)应用服务器 320 (或在其它构想的实施例中,其它类型的服务器)的Web容器323内执行。Web容器323可以是动态运行时环境,例如JAVA VIRTUAL MACHINE运行时环境。例如,servlet324可以是Web应用,其可以在浏览器界面312内向进行请求的客户端310呈现基于Web的内容(例如,Web页面)。每个请求分派326可与唯一识别值相关联,例如,进程ID或唯一关键字和/或资源标识符(例如,统一资源定位符)。在一个实施例中,唯一关键字可以是自动产生的值(例如,由分派引擎342)或手动确定的值。在一个例子中,唯一识别值可被存储为可被在编译时提取的注释(或甚至源代码注释)。Servlet 324可以接收请求380,请求380可以触发请求分派326的执行。当运行时环境323遇到请求分派326时,可以分析分派326,以基于用户指定的资源标识符确定要执行哪个资源。在一个实施例中,分派器340可以与另一个运行时环境(例如,在不同Web容器内执行的servlet)协商指定资源的执行。请求分派器340可以基于一个或多个规则346和/或设置,唯一地识别和执行分派326。即,分派器340可配置为适应服务器320的资源可获得性(例如,服务器负载)。请 求分派器340可以包括分派引擎342、度量引擎343、性能监视器344、规则346和界面352。在一个实施例中,分派器340可以是Web容器323的可插入扩展。设置348可以是用户建立的设置或自动确定的设置。例如,可以基于servlet 324的性能动态确定用于分派的默认超时值。分派引擎342可以处理分派326,并且使用历史度量350程序性地确定适合的执行模式。引擎342可以负责识别和/或执行与分派326相关联的本地和远程资源。在远程地执行资源处理的情况下,引擎342可以将请求转发给可以执行处理的远程处理器。在本地地执行资源处理的情况下,引擎342可以管理请求分派326。度量引擎343可以收集与servlet 324和/或分派326相关联的历史度量。例如,可以在允许获得高级别度量的servlet 324级别收集度量。在一个例子中,度量引擎343 可以实时地或近似实时地收集度量。例如,引擎343可配置为在最后Y秒追踪最后X个分派326,其中X和Y是用户可配置的。另外,度量引擎343可用于监视Web容器323的实时性能,所述实时性能可以通过界面352给出。历史度量350可以包括资源信息,例如等待时间、执行模式和存储器使用。历史度量350可与每个分派326执行相关联。在一个实施例中,可以计算每个模式(例如,异步和同步)的度量,使得能够评估每个模式的总度量。以这种方式,引擎343可以在执行前为分派326计算适合的执行模式。在另一个实施例中,与分派326相关联的度量350可被聚集在一起,并且针对规则集360中的阈值(例如,规则360)进行评估。例如,可以将与异步执行相关联的存储器代价与存储器配额值(例如,阈值)进行比较,以便确定异步执行的开销是否是最优选择。在另一个例子中,可以将用于设置/无效异步环境的时间开销与以前建立的阈值比较,以便确定应当使用哪个模式(异步或同步)。规则集346可以包括用于确定分派326的执行模式的一个或多个任意复杂规则。规则集346可以是用户建立的和/或可以启发式确定的。在一个实施例中,多个度量可被一起评估,以便确定执行模式。规则集346可以包括,但不限于,阈值、执行模式以及与请求分派相关联的事件处理器等。例如,阈值可以是用户建立的设置或自动确定的值。规则集346还可以指定将要使用的聚集类型(例如,服务器侧相对于客户端侧),其可用于准备请求382。当分派326的执行完成时,请求328可被产生并且通过网络370传递给客户端310。此处给出的附图仅用于说明目的,并且不被解释为以任意方式限制本发明。系统300可以是分布式 计算环境、网络计算环境、面向服务的体系结构(SOA)等的一个或多个部件。在一个实施例中,系统300可以是IBM WEBSPHERE APPLICATION SERVER的一个或多个部件。在另一个实施例中,系统300可以包括.NET框架(或允许出于此处描述的目的包括资源的任意其它框架)的一个或多个部件。图4是例示了根据此处公开的发明布置的实施例的利用历史度量程序性地确定请求分派的执行模式的一组界面410、430的框图。可以在系统300的环境中给出界面410、430。在界面410中,可以在部分412中呈现与在Web容器内执行的一个或多个Web应用相关联的请求分派。Web应用可以是一个或多个可执行代码实体,例如JAVA servlet、JAVASERVER PAGE(JSP)等。在界面440中,可以呈现与请求分派412相关联的度量。在一个实施例中,对请求分派和度量442的呈现可以实时发生,使得能够容易地获得执行快照。界面410可以允许管理一个或多个正在执行的请求分派和相关请求分派。界面410可以包括部分412、420和交互界面元素422、430、432。在界面410中,可以在部分412中呈现与请求分派414相关联的信息。请求分派信息可以包括,但不限于,进程ID、执行持续时间、执行模式等。例如,部分412可以呈现与Servlet A相关联的每个请求分派和相关分派。在一个实施例中,管理员可以选择性地管理多组请求分派。界面410可以呈现附加信息,例如有效规则、性能度量等。与选择的请求分派414相关联的信息可被呈现在部分420内。例如,与界面元素430交互可以呈现与请求分派相关联的信息。在一个例子中,部分420可以允许修改诸如超时值、执行模式等的请求分派值。即,当自动优化证明不成功时,可以实现对请求分派的实时手动优化。在一个实施例中,界面410可以允许线程管理能力。例如,界面元素432可以允许终止选择的请求分派。与界面元素422的交互可以呈现检查界面440。界面440可以包括部分442,其可以呈现与选择的请求分派414相关联的度量。部分442可以包括历史度量,例如处理器使用、执行持续时间和存储器使用。例如,部分442可以使用收集的历史度量呈现请求分派的平均资源负载。在一个实施例中,可以按多个粒度级别呈现历史度量。例如,可以基于天、星期、月等的递增呈现历史度量。此处给出的附图仅用于说明目的,并且不应被解释为以任意形式限制本发明。在一个实施例中,界面410、440可以是JAVA 2ENTERPRISE EDITION优化工具的一个或多个画面。在另一个实施例中,界面410、440可以是集成开发环境(IDE)的部件。界面410、440可以是图形用户界面(GUI)、语音用户界面(VUI)、多模式界面等。与界面410、440相关联的界面元素可以包括,但不限于,交互式按钮、下拉菜单、单选元素等。此处使用的术语仅是出于描述特定实施例的目的,并且不旨在限制本发明。如此处使用的,单数形式“一个”(“a”、“an ”和“the”)旨在也包括复数形式,除非上下文清楚地指出。还应当理解,当在本说明书中使用时,术语“包括”(“comprise”和/或“comprising”)指出所述特征、整体、步骤、操作、元件和/或部件的存在,但是不排除一个或多个其它特征、整体、步骤、操作、元件、部件和/或它们的组的存在或添加。
下面权利要求书中所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于结合特别提出的其它元件执行该功能的任意结构、材料或动作。已经出于说明和描述的目的给出了本发明的描述,但是其不旨在是穷举的或将本发明局限在公开的形式。本领域普通技术人员将明了许多修改和变型,而不脱离本发明的范围。选择和描述实施例,以便最好地解释本发明的原理和实际应用,并且使得本领域普通技术人员能够理解本发明的适合于构想的特定使用的具有各种修改的各种实施例。图I至4的流程图和框图示出了根据本发明的各个实施例的系统、方法和计算机程序产品的可能实现的体系结构、功能和操作。就此而言,流程图或框图中的每个块可以表示代码的模块、段或部分,其可以包括用于实现指定的逻辑功能(多个)的一个或多个可执行指令。还应当注意,在某些替换实现中,块中标明的功能可以不按图中标明的顺序发生。例如,取决于涉及的功能,连续示出的两个块实际上可以大体并发地执行,或这些块有时可被以相反顺序执行。还应当注意,框图和/或流程图例示的每个块以及框图和/或流程图例示的块的组合可被以执行特定功能或动作的基于专用硬件的系统或专用硬件和计算机 指令的组合实现。
权利要求
1.一种用于分派请求的方法,包括 在运行时识别在第一可执行代码内要执行的请求分派,其中所述请求分派与识别值相关联,其中所述请求分派的识别值标识要执行的第二可执行代码; 在执行所述第二可执行代码之前,确定执行所述第二可执行代码的执行模式,其中确定动作包括评估性能度量和阈值中的至少一个,其中所述阈值是用户建立的值和程序性建立的值中的至少一个,其中所述执行模式是异步执行模式或同步执行模式;以及 响应于对执行模式的确定,基于所述执行模式执行请求分派,其中同步执行模式使得所述第一可执行代码停止并使得所述第二可执行代码启动和完成,此后停止的第一可执行代码继续执行,并且其中异步执行模式使得所述第一和第二可执行代码同时执行。
2.如权利要求I所述的方法,其中,所述第一和第二可执行代码驻留在Web容器的部件内,其中所述Web容器与运行时环境相关联。
3.如权利要求I所述的方法,其中,与所述请求分派相关联的唯一识别值是自动产生的唯一识别值、统一资源标识符(URI)、唯一路径值和唯一查询串中的至少一个。
4.如权利要求I所述的方法,其中,用于所述第一和第二可执行代码的执行模式能够在后续执行过程中被动态调整,其中所述第一和第二可执行代码是JAVA servlet, JAVASERVER PAGE (JSP)、JAVABEAN和JAVA使能门户组件中的至少一个。
5.如权利要求I所述的方法,所述对执行模式的确定还包括 使用请求分派的历史数据和它们的执行时间来建立性能度量。
6.如权利要求I所述的方法,所述对执行模式的确定还包括 当所述性能度量未超出阈值时,同步执行请求分派;以及 当所述性能度量超出阈值时,异步执行请求分派。
7.如权利要求I所述的方法,所述对请求分派的执行还包括 响应于请求分派的执行性能,将与请求分派相关联的模式设置从第一执行模式切换到第二执行模式,其中所述模式设置指示执行所述请求分派的模式,其中所述模式是异步执行模式和同步执行模式中的至少一个,其中切换动作使得以第二执行模式执行请求分派的后续执行。
8.如权利要求I所述的方法,其中,所述性能度量是与请求分派的历史执行相关联的定时信息中的至少一个。
9.如权利要求I所述的方法,还包括 在请求分派的执行过程中程序性地收集与请求分派器相关联的至少一个性能度量,其中所述性能度量是资源分配值。
10.如权利要求I所述的方法,还包括 透明地封装已有的分派API的功能,其中所述已有的分派API以同步执行模式执行请求分派,其中封装允许异步或同步执行请求分派。
11.一种用于分派请求的系统,包括 分派引擎,该分派引擎能够识别和执行与第一可执行代码相关联的请求分派,其中所述分派引擎是运行时环境内的传输通道链的部件,其中所述传输通道链与开放系统互连(OSI)层模型的传输层相关联; 与所述第一可执行代码相关联的请求分派,其中所述请求分派与唯一识别值相关联,其中所述唯一识别值标识要执行的唯一资源,其中请求分派触发对所述唯一资源的执行,其中所述唯一资源是第 二可执行代码; 与所述请求分派相关联的性能度量,其中在请求分派执行过程中自动收集所述性能度量,其中所述性能度量用于修改请求分派的执行行为;以及 规则集,配置为建立与请求分派相关联的阈值、执行模式和事件处理器中的至少一个,其中所述阈值是用户建立的设置或自动确定的值中的至少一个,其中执行模式是同步执行模式和异步执行模式中的至少一个,其中同步执行模式使得所述第一可执行代码停止并使得所述第二可执行代码启动和完成,此后停止的第一可执行代码继续执行,并且其中异步执行模式使得所述第一和第二可执行代码同时执行。
12.如权利要求11所述的系统,其中,与所述请求分派相关联的唯一识别值是自动产生的唯一识别值、统一资源标识符(URI)、唯一路径值和唯一查询串中的至少一个。
13.如权利要求11所述的系统,还包括 性能监视器,配置为识别唯一请求分派并且监视识别出的请求分派的性能,其中实时执行所述识别和监视。
14.如权利要求11所述的系统,还包括 允许用户定制所述系统的用户界面,其中定制是用户建立的阈值、用户建立的性能度量和用户建立的执行模式中的至少一个。
15.如权利要求11所述的系统,其中,所述分派引擎能够响应于至少一个性能度量修改所述阈值。
16.一种计算机程序产品,包括计算机可读存储介质,所述计算机可读存储介质具有包含在其内的计算机可用程序代码,所述计算机可用程序代码包括 存储在有形存储介质内的计算机可用程序代码,所述计算机可用程序代码能操作为在运行时识别在第一可执行代码内要执行的请求分派,其中所述请求分派与唯一识别值相关联,其中所述请求分派的唯一识别值标识要执行的第二可执行代码; 存储在有形存储介质内的计算机可用程序代码,所述计算机可用程序代码能操作为在执行所述第二可执行代码之前,确定执行所述第二可执行代码的执行模式,其中确定动作包括评估性能度量和阈值中的至少一个,其中所述阈值是用户建立的值和程序性建立的值中的至少一个,其中所述执行模式是异步执行模式或同步执行模式;以及 存储在有形存储介质内的计算机可用程序代码,所述计算机可用程序代码能操作为响应于确定动作,基于所述执行模式执行请求分派,其中同步执行模式使得所述第一可执行代码停止并使得所述第二可执行代码启动和完成,此后停止的第一可执行代码继续执行,并且其中异步执行模式使得所述第一和第二可执行代码同时执行。
17.如权利要求16所述的计算机程序产品,其中,所述第一和第二可执行代码驻留在Web容器的部件内,其中所述Web容器与运行时环境相关联。
18.如权利要求16所述的计算机程序产品,还包括 存储在有形存储介质内的计算机可用程序代码,所述计算机可用程序代码能操作为识别与所述请求分派相关联的至少一个性能度量,其中所述性能度量是历史度量,其中所述历史度量是指示请求分派的历史执行的至少一个属性的统计值。
19.如权利要求16所述的计算机程序产品,还包括存储在有形存储介质内的计算机可用程序代码,所述计算机可用程序代码能操作为响应于请求分派的执行性能,将与请求分派相关联的模式设置从第一执行模式切换到第二执行模式,其中所述模式设置指示执行所述请求分派的模式,其中所述模式是异步执行模式和同步执行模式中的至少一个,其中切换动作使得以第二执行模式执行请求分派的后续执行。
20.如权利要求16所述的计算机程序产品,还包括 存储在有形存储介质内的计算机可用程序代码,所述计算机可用程序代码能操作为在请求分派的执行过程中收集与请求分派器相关联的至少一个性能度量,其中所述性能度量是资源分配值。
全文摘要
一种请求分派器可以在以同步模式和异步模式处理请求分派(例如,include())之间自动切换。每个分派可与诸如进程ID或统一资源标识符(URI)的唯一识别值、历史度量和规则集相关联。随着请求分派的每次执行,可以收集历史度量。度量可以包括,但不限于,执行持续时间和/或执行频率、处理器负载、存储器使用、网络输入/输出、相关分派的数目等。使用历史度量,可以构造用于确定执行分派的后续执行的模式的规则。从而,可以进一步改进Web应用的运行时优化。
文档编号G06F9/46GK102782652SQ201180011674
公开日2012年11月14日 申请日期2011年2月28日 优先权日2010年3月1日
发明者C·J·霍华德, M·A·莫尔登豪尔, M·E·康希尼, S·J·肯纳, S·R·佩特森 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1