CN100342369C - 用于与多重调度池进行消息接发的应用服务器的系统 - Google Patents

用于与多重调度池进行消息接发的应用服务器的系统 Download PDF

Info

Publication number
CN100342369C
CN100342369C CNB028228723A CN02822872A CN100342369C CN 100342369 C CN100342369 C CN 100342369C CN B028228723 A CNB028228723 A CN B028228723A CN 02822872 A CN02822872 A CN 02822872A CN 100342369 C CN100342369 C CN 100342369C
Authority
CN
China
Prior art keywords
request
formation
resource
thread
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CNB028228723A
Other languages
English (en)
Other versions
CN1589442A (zh
Inventor
亚当·梅辛杰
唐·弗格森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
BEA Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEA Systems Inc filed Critical BEA Systems Inc
Publication of CN1589442A publication Critical patent/CN1589442A/zh
Application granted granted Critical
Publication of CN100342369C publication Critical patent/CN100342369C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Abstract

本发明的实施例提供了在应用或事务服务器中配置调度策略的能力。对于servlet和JSP而言,以每个URL(统一资源定位符)为基础进行配置,对于RMI和EJB而言,以每个方法为基础进行配置。可用调度选项包括在读取请求的同一个线程中执行该请求、或将其列入馈送工作线程池的队列中的能力。利用这一配置,可以控制请求的服务参数的不同质量。可以通过在读取请求的线程中直接执行该请求从而跳过队列,而使请求加速。或者,可以通过将一些请求分配给仅由有限数量的线程管理的队列来对其进行节流。

Description

用于与多重调度池进行消息接发的应用服务器的系统
版权通知
本专利文献的部分公开内容包含受到版权保护的内容。当其在专利商标局专利文件或记录中出现时,版权所有人不反对任何人影印复制该专利文献或该专利公开,否则无论如何都保留所有版权。
优先权声明
本申请要求享受2001年10月5日提交的申请号为60/327,543的临时申请“SYSTEM FOR APPLICATION SERVER MES SAGING WITH MULTIPLEDISPATCH POOLS(用于与多重调度池进行消息接发的应用服务器的系统)”的优先权,通过引用将其合并于此。
技术领域
本发明的实施例总的涉及应用和事务服务器,特别涉及用于支持消息排队和具有多重调度池(dispatch pool)的线程的系统。
交叉引用
本申请涉及2001年10月5日提交的申请号为60/327,530、发明人为AdamMessinger和Don Ferguson的临时专利申请“SYSTEM FOR APPLICATIONSERVER MESSAGING WITH ASYNCHRONOUS QUEUES(用于与异步队列进行消息接发的应用服务器的系统)”和2002年10月3日提交的申请号为10/264,973、发明人为Adam Messinger、Sam Pullara和Dave Brown的实用新型专利申请“SYSTEM FOR INTEGRATING JAVA SERVLETS WITHASYNCHRONOUS MESSAGES(用于使Java小服务程序与异步消息结合的系统)”,通过引用将这两个申请都合并于此。
背景技术
Sun MicroSystem公司与整个企业软件界的领导者们合作开发的Java 2平台企业版(J2EE)规范定义了一种用于开发多层企业应用程序的现行标准。J2EE提供了一种设计、开发、组装以及调配(deployment)企业应用程序的、基于组件的方法,其既减小了成本,又允许集中设计和实现。J2EE平台为开发者提供了多层分布式应用模型、重新使用组件的能力、统一的安全模型以及灵活的事务控制。其不但可以提供能比以前更快地进行销售的革新的用户解决方案,而且所得到的独立于平台的J2EE基于组件的解决方案并不受任何一个厂商的产品和应用程序接口(API)的约束。
J2EE规范定义了下述种类的组件:应用客户机组件;企业Java豆(EJB,Enterprise JavaBean);小服务程序(servlet)和Java服务器页面(JSP)(也称为网络组件);以及小程序(applet)。多层分布式应用模型意味着根据功能将应用逻辑划分为多个组件,而多个不同的应用组件可以组成同一个或不同服务器上的J2EE应用程序。应用组件实际安装在哪里取决于该应用组件属于多层J2EE环境中的哪一层。图1中描绘了这些层。如其中所示,应用服务器层104用于开发EJB容器和/或诸如servlet、JSP、以及html页面的显示(presentation)容器114。而这些又用作客户机层102与后端层106之间的接口,其中在客户机层102调配客户机108和客户机应用程序,而后断层106用于容纳诸如企业资源计划(ERP)系统的企业或遗留(legacy)应用程序。
客户机层——其可以是浏览器、基于Java的程序或其它客户机层内运行的网络激活编程环境,既可在公司防火墙之内也可在公司防火墙之外。
应用服务器层——通常这一层容纳显示逻辑和业务逻辑的组合,以支持客户机请求。显示逻辑通过JSP页面和显示HTML页面的servlet支持,而业务逻辑通过远程方法调用(RMI)对象和EJB 112支持。EJB依赖于事务、生命周期、状态管理、资源共享、安全性等的容器环境,其一起组成豆(bean)执行的运行时间环境。
后端层——这一般是现有应用程序和数据存储的组合。由于其可能包括诸如企业资源计划(ERP)、主机事务处理、数据库系统以及其它遗留信息系统的系统,所以其也被称为企业信息系统(EIS)层。
由于J2EE应用程序的组件分离地、并且经常在不同的器件上运行,所以需要有客户机和应用服务器层代码查找并引用其它代码和资源的方式。客户机和应用程序代码可以例如使用Java命名和目录接口(JNDI)116来查找用户定义的诸如企业豆的对象,以及诸如Java数据库连接器(JDBC)数据资源对象的位置和消息连接的环境条目,而所述位置又用于查找后端层中的资源。
可以在调配时间在网络和企业豆组件上配置诸如安全性和事务管理的应用程序行为。这一调配时间特征使应用逻辑与可能随组装而改变的配置设置分离开来。J2EE安全模型让开发者配置网络或企业豆组件,使得仅由授权用户访问系统资源。例如,网络组件可以配置为提示输入用户名和密码。企业豆组件可以配置为只有特定组中的人员才可以调用其方法中的某些种类。或者,servlet组件可以配置为其一些方法可以被每个人访问,而一些方法仅被一个组织中某些有特权的人访问。相同的servlet组件可以对另一个环境配置为所有方法都可以被每个人访问,或者所有方法都只能被选定的少数人访问。
一些应用服务器,例如BEA系统公司,San Jose,California的WebLogic服务器产品,使用访问控制表(ACL)机制,其允许对服务器上运行的组件的利用进行精细控制。利用ACL,开发者可以在Java方法级定义哪个用户或哪组用户可以或不可以执行什么。这一ACL机制覆盖了在应用服务器上运行的任何内容,除了在EJB规范中定义了其自身的访问控制机制的EJB之外。安全领域允许管理员从现有授权或授权系统中引入信息到ACL。
Java Servlet
servlet是扩展网络服务器的功能性的程序。servlet接收来自客户机的请求,动态产生响应(可能查询数据库以满足该请求),然后向客户机发送包含HTML或XML文件的响应。servlet与CGI类似,但是因为servlet使用Java类和流,所以通常更容易编写。因为servlet被编译为Java字节代码,并且在运行时间servlet实例保持在存储器中,所以其执行更快,每个客户机请求产生一个新线程。servlet使得以动态方式产生数据给HTTP响应流更加容易。每个客户机请求作为新连接执行,因此请求之间的流控制并不容易。为此,会话管理维持特定客户机在请求间的状态。在一些应用服务器中,servlet使用HTTP会话对象来保存其在方法请求之间的状态。为了排除故障,这一对象可以在集群的环境中复制。
Java服务器页面
JSP页面是基于文本的、用于开发servlet的显示中心(presentation-centric)方式。JSP页面提供servlet的所有优点,当其与JavaBean类合并时,提供一种使内容和显示逻辑保持分离的容易的方式。JSP页面和servlet都比公共网关接口(CGI)更理想,这是因为其是独立于平台的,并且使用较少的开销。JSP页面可以与JavaBean类一同使用,来定义用于建立由具有相似外观和感觉的页面组成的网站的网络模板。JavaBean类执行数据呈现(rendering),因此模板中没有Java代码。这意味着模板可以由HTML编辑器维持。使用JSP页面的、简单的基于网络的应用程序可以用于使用自定义标记或小脚本(scriptlet)取代JavaBean类来将内容绑定到应用逻辑上。自定义标记被插入标记库中,而标记库被引入到JSP页面中。scriptlet是直接嵌入JSP页面的小Java代码段。
数据库访问服务(JDBC)
JDBC充当通向相关数据库的桥梁,并且按ODBC(开放式数据库互连)规范建模。其通过使用驱动器,将数据库与程序代码分离开来。JDBC的一些实现支持高级数据类型,并且还支持可滚动结果集和成批更新的功能。
Java消息接发服务(JMS)
JMS是用于支持Java程序之间的消息交换的J2EE机制。即Java如何支持异步通信,其中发送者和接收者不需要彼此了解,因此可以独立操作。JMS当前支持两种消息接发模型:
点对点——其基于消息队列。在这种模型中,消息产生者将消息发送到队列中。消息用户可以将其自身附在队列上以倾听消息。当消息到达队列时,用户将其从队列中取出,并对其响应。消息可以仅发送到一个队列,并仅由一个用户使用。用户具有过滤消息以指定其想要的确切消息类型的选项。
出版和定购——其允许产生者向一个主题、并向该主题的所有注册用户发送消息,以检索这些消息。在这种情况下,许多消费者可以接收相同的消息。
Java IDL和多线程服务器
在CORBA领域,已尝试允许CORBA对象使用接口定义语言(IDL)来指定协议,即其如何与其它对象交互。利用Java IDL,可以在Java领域和CORBA领域之间定义协议。从Sun的Java开发工具包(JDK)1.2版开始,对象请求代理程序(ORB)允许Java应用程序经由因特网交互ORB(IIOP,Internet interORB)协议来调用远程CORBA对象。在多线程CORBA服务器中,事件队列提供一种实现该CORBA服务器上的穿线策略的方法。在实践中,事件队列支持CORBA请求的期望穿线策略,并在穿线策略内集成非CORBA事件的处理。诸如来自lona软件的Orbix服务器的多线程CORBA服务器,可以例如实现确定创建多少线程、何时创建这些线程、以及由哪些线程来处理哪些请求的策略。实现特定的策略通常包括创建多个队列和工作线程,并对逻辑编程以确定哪个队列用于每个到来事件。
因此,多线程CORBA服务器可以同时处理几个CORBA请求。这样做的一个主要优点是增加总吞吐量。可以对不同的需要,根据处理请求的工作应当如何在其间共享来自定义穿线策略。这些选项包括下述内容:
每个操作一个线程:在这种场景下,创建新线程来处理每个到来请求。这一选项提供最大的并行性,但是有时如果服务器以最大负荷接收大量同时发生的请求,则创建太多线程。
线程池的使用:在这种场景下,将请求排队,并由线程池中的第一个可用线程来处理。通过限定池的大小,限制线程的最大数,并因此限制服务器的负荷。
每个对象一个线程:按照这一选项,为每个对象维护一个或多个请求队列。这一选项提供对象间的完全并行性,但是使得对每个单独对象的访问串行化。
每个客户机一个线程:为每个客户机维护一个请求队列。这一选项通过控制分配给每个客户机的线程资源数确保了客户机的平等待遇。
J2EE服务器中的线程处理
当前在基于J2EE的事务和应用服务器中使用的穿线策略的一个问题是请求的概念或优先级设定。尽管可以为了最大吞吐量而按照请求管理设计穿线策略,但是按照请求设定优先级的选项很少。许多当前的服务器产品使用线程池来从网络的客户机读取请求。一旦将完整的请求读入队列中,就必须在服务器中调度执行。但是很少允许开发者在调度之前给完整的请求设定优先级。
给请求设定优先级是普遍期望的特征,但是很难实现,因为担心其增加了基础服务器代码的复杂性和其产生的诸如优先级反转的新问题。多个队列的增加将给软件管理员或开发者提供优先级机制,其比真实的优先级方案更好地处理这些担心。
请求的节流是应用服务器用户普遍请求的另一个特征。这一般在部分工作量需要大量存储器、CPU时间或其它资源的情况下请求。系统不能同时处理大量这样的请求。
许多应用服务器提供这样的调度选项,即允许在读取请求的同一个线程中执行该请求或将该请求列入馈送工作线程池的队列中。利用这一配置,可以控制请求的服务参数的不同质量。例如,可以通过在读取请求的线程中直接执行该请求从而跳过队列,而使请求加速。或者,可以通过将一些请求分配给仅由有限数量的线程管理的队列来对该请求进行节流。
发明内容
为了满足上述要求,本发明的实施例提供了一种应用服务器使用的系统或机制,其增强了服务器穿线模型,即分配线程以执行工作请求的策略。本发明的实施例可以用于较宽范围的应用服务器,包括例如BEA系统公司,SanJose,California的WbeLogic服务器产品。设计为使用本发明实施例的应用服务器或任何服务器采用一个使用多重线程池——包括异步池(有时称为读取线程)和同步池(有时称为执行线程)——的穿线模型。这种池的组合允许系统给请求设定优先级。这一设计也成功地容许执行阻塞操作的用户代码。
在本发明的一个实施例中,异步线程池在异步输入机制(这里称为多路复用器或复用器)上等待异步读取结果变得可用。一旦有结果可用,来自池中的线程查看消息,并通过进行适当的回叫来调度该消息。调度回叫通常对要求由同步线程池进行后面的处理的请求进行排队。然而,某些非阻塞的有优先级的请求在回叫中被直接服务。通过积极地接受输入,在低优先级的请求运行的同时,高优先级的请求不等待被读取。
同步线程池等待请求队列。一旦有请求可用,来自同步池中的线程从队列中取出该请求,对其进行处理,并发出结果。在处理该请求的同时,线程可以执行代码,例如发出结果,这导致线程阻塞。
异步输出和异步响应的加入减轻了一些进行线程处理调节的需要,而这是传统系统中的共同任务。此外,本发明的实施例还允许配置多重同步线程池,以便提供对不同请求类型的处理的更精细控制。
本发明的实施例还支持在单个服务器上提供多重执行队列的能力。这些队列单独地与当前执行队列相似。每个执行队列具有分配来从队列中带动工作的工作线程池。根据本发明的一个实施例,每个服务器具有一个默认执行队列,以及零个或一个或多个自定义执行队列。多重队列的加入提供了一些优于传统系统的优点,包括支持优先级设定、节流请求以及减少队列争用。可以为高优先级和低优先级的请求独立地分配队列。而系统管理员可以调节分配给这些队列的线程数,直到达到每一类工作所需要的吞吐量。
附图说明
图1展示了可以利用本发明实施例的J2EE兼容服务器体系结构。
图2展示了根据本发明实施例的穿线模型。
图3展示了根据本发明实施例的多重调度队列系统。
图4展示了根据本发明实施例的多重线程调度系统。
图5展示了根据本发明实施例的多重调度处理的流程图。
具体实施方式
经过广泛的描述,本发明的实施例提供了灵活调度策略系统的扩展,用于事务、应用以及消息接发服务器,特别地,用于RMI(远程方法调用)、EJB(企业Java豆)以及Servlet。并入了本发明实施例的应用服务器、事务服务器或消息接发服务器(下文中都简单地统称为应用服务器)使用线程池来从网络的客户机读取请求。一旦读取了完整的请求,其必须在服务器中调度执行。本发明的实施例提供了配置这一调度策略的能力。对于servlet,这以每个URL(统一资源定位符)为基础进行配置。对于RMI和EJB,该调度策略以每个方法为基础进行配置。
本发明的实施例提供的调度选项允许请求在和读取该请求的同一线程中执行,或者列入馈送工作线程池的队列中。利用这一可变调度配置,可以控制请求的服务参数的不同质量。例如,可以通过在读取请求的线程中直接执行该请求从而跳过队列,来使请求加速。或者,可以通过将一些请求分配给仅由有限数量的线程管理的队列来对这些请求进行节流。
本发明的实施例提供了涉及应用服务器消息接发的新特征,但是这些新特征可以用于任何需要一种消息接发的服务器类型。每个服务器设计的核心是穿线模型,即分配线程执行工作请求的策略。根据本发明的实施例,服务器采用使用两个线程池、即异步池(读取线程)和同步池(执行线程)的穿线模型。调度选项中池和灵活性的这种组合允许管理员有效地给请求设定优先级,同时容许执行阻塞操作的用户代码。
图2展示了本发明实施例提供的线程池206的图解,其用于将请求发送到服务器资源205。服务器包括每个资源的配置信息,其确定特定资源使用的调度策略211。根据一个实施例,异步线程池208在异步输入机制202(有时称为多路复用器)上等待异步读取结果变得可用。一旦有结果可用,来自池中的线程查看消息,并通过进行适当的回叫来调度该消息。调度回叫通常将要求由同步线程池进行后面处理的请求进行排队。然而,某些非阻塞的有优先级的请求在回叫中被直接服务。通过允许异步线程池积极地接受输入,在低优先级请求216运行的同时,高优先级请求212不等待被读取。由于这些线程应该从不阻塞,所以通常其数量较少,可能每个CPU只有一个。本发明的实施例额外地提供了异步线程池执行网络输出操作的能力。在2001年10月5日提交的申请号为60/327,530、发明人为Adam Messinger和Don Ferguson的临时专利申请“SYSTEM FOR APPLICATION SERVER MES SAGING WITHASYNCHRONOUS QUEUES(用于与异步队列进行消息接发的应用服务器的系统)”和2002年10月3日提交的申请号为10/264,973、发明人为AdamMessinger、Sam Pullara和Dave Brown的实用新型专利申请“SYSTEM FORINTEGRATING JAVA SERVLETS WITH ASYNCHRONOUS MESSAGES(用于使Java小服务程序与异步消息结合的系统)”中对这一具体特征进行了更详细的描述,通过引用将这两个申请都合并于此。
如图2所示,同步线程池210等待请求队列204。一旦有请求可用,来自池中的线程从队列中取出请求,对其进行处理,并发出结果216到资源205。在处理请求的同时,线程可以执行代码,例如发出结果,这导致线程阻塞。所以,应该调节线程数,以使得每个CPU中总有一个线程处于可运行状态。由于性能的原因服务器的适当调节非常重要。本发明的实施例中使用的异步输出和异步响应的加入减轻了一些进行这一调节的需要。本发明的实施例还给管理员提供了配置多重同步线程池的能力,以便提供对不同请求类型的处理进行更精细的控制。
调度
调度是取出服务器请求并将其发送到要服务的适当地方的处理。在可以使用本发明实施例的应用服务器或服务器中,通常有两种类型的调度,直接调度和排队调度。服务器请求可以是来自服务器的任何信号,包括例如从网络读取的输入结果、时间触发器、或一些其它工作片段的继续。
在直接调度中,产生到来消息的线程也处理该消息。在调度线程处理请求时,其不被其它线程所代替,因此要执行的工作不会将调度线程阻塞任何显著的时间量是非常重要的。例如,如果界面(socket)读取线程是被阻塞的服务请求,则服务器将不能处理任何新来的消息,并对进一步的输入不做响应。类似地,如果时间触发器线程被阻塞,则服务器中重要的定时事件将不被递送。因此,通常通过内部API而使直接调度可用,并且直接调度仅用于高优先级的系统级消息。
图3展示了传统的执行队列机制。如图中所示,来自客户机的指向诸如统一资源定位符(URL)或数据库的特定资源的请求在执行队列304中排队。一个或多个工作线程306、308或线程处理的集合从该队列中检索条目310,并面向该资源执行该条目,向客户机返回结果。这一机制的问题在于队列以先入先出方式操作,而无法给特定条目设定优先级,以使队列中一个条目在另一个之前处理。
在排队调度中,调度线程将到来消息放在队列中,稍后使其从那里移出队列,并由工作线程服务。在一些实施例中,只有一个执行队列,且只有一个执行线程池被分配来使请求从队列中出列,并服务该请求。其它实施例可以使用多重执行队列。尽管队列长度无限制时必须小心避免存储器使用的问题,但是队列长度可以有限制或无限制。通常将所有用户请求调度到队列中,而不直接指向队列。
多重队列
图4展示了如何使用本发明实施例中提供的多重队列来建立调度策略。如图4所示,将来自客户机的请求发送到从多个队列界面402、404、406中选择的队列界面。这些界面并行操作,允许一个界面上的条目与另一个界面上的条目同时或在其之前执行。这一分离和并行的操作允许系统给请求设定优先级。使用一个或多个异步线程412、414、416的集合来对该界面请求进行服务,并提供访问资源的入口。异步线程组(例如412和414)可以在界面组(例如404和406)之间被共享。或者界面402可以具有专用线程416,供该界面内特定请求的可靠或高优先级服务使用。体现或并入了本发明实施例的应用服务器支持在单个服务器上具有多重执行队列的能力。通常,每个执行队列具有分配来从队列中带动工作的工作线程池。在一个实施例中,每个服务器具有一个默认执行队列,零个或一个或多个自定义执行队列。多重队列的加入提供了一些优点,包括支持优先级设定、节流请求以及减少队列争用。
为请求设定优先级
如上所述,为请求设定优先级是普遍期望的特征。传统上,这是难于解决的领域,因为担心可能增加基础代码的复杂性和可能产生诸如优先级反转的附加问题。如在本发明实施例中所使用,多重队列的加入提供了比“真实的”优先级机制更好地处理这些担心的优先级机制。如果管理员如此期望,则可以独立地为高优先级和低优先级请求分配队列。然后管理员可以调节分配给这些队列的线程数,直到达到每一工作类所需要的吞吐量。
请求节流
请求的节流是应用服务器用户普遍请求的特征。在部分工作量需要大量存储器、CPU时间或其它资源的那些情况下,节流是重要的。通常,系统不能同时处理大量这样的请求。本发明的实施例提供了请求节流机制,即,所有这些类型的请求都可以发送到配置有适当数量的线程的队列,以保证节约系统资源。
队列争用的减少
队列争用是服务多重短请求的重负荷系统的基准程序中的问题。本发明的实施例提供通过将工作量分摊到几个队列上而成功解决这一问题的机制,可以减少队列争用。请求按照使吞吐量最大化的方式跨多个队列分布。
图5展示了根据本发明实施例的多重队列调度策略的流程图。如图中所示,在步骤502,服务器接收访问特定资源的请求。这可以是访问例如特定服务器、URL或数据库的请求。在步骤504,调度线程将该请求放在多重消息队列或界面中的一个上。在步骤506,提供默认执行队列和多重自定义执行队列的组合使系统或系统管理员可以通过指定将该请求放在哪个界面或队列中来给该请求设定优先权。在步骤508,工作线程从适当的消息队列中检索请求,并在步骤510,在服务器处理该请求,并将结果返回客户机。
RMI和HTTP实现
根据本发明的一个实施例,典型的远程方法调用(RMI)实现适于利用多重队列。RMI描述符被一般化为允许设置每方法排队策略。这一功能提供了指定直接或排队调度的机制。在使用Java虚拟机(JVM)的一个实施例中,将RequestDispatcher(请求调度器)消息调度到RJVM级。然后RJVM查询其RuntimeDescriptor(运行时间描述符),并确定对该请求应当使用哪个调度策略。
使servlet实现适用于利用多重队列可以相似地执行。在一个实施例中,描述调度策略的元数据可以位于servlet的调度描述符中。请求通常排队的点就是确定要调用的servlet的点。在这一点上,可以确定适当的调度策略,并采取适当的行动。HTTP隧道机制也可以修改为使用这一机制。在一些实现中,定时服务可以适应于利用多重队列。也可以对任何API进行添加,以允许调度策略的规范有特定的定时器。这可以与当前在定时线程中直接为触发器服务的直接调度机制结合。
在特定的应用服务器中,几个内部实现使用排好队的调度来处理辅助当前处理的请求的工作。这经常进行,以防止锁定保持得比需要的要长,但是通过多重队列的加入,也可以通过将该辅助请求排队到一不同队列中,来区分工作优先级。
另外,许多用户请求执行这一相同的排队调度辅助请求的能力。在本发明的一个实施例中,允许用户在指定的队列中排入java.lang.Runnable函数。然后将该Runnable(可运行)包裹在ExecuteRequest中,并放在期望的队列中。
配置执行队列和线程池
为了允许执行队列和线程池的配置,本发明的实施例提供了一组命令和语法。下面的部分提供了对配置servlet、jsp、ejb以及rmi对象的指导,以根据本发明的实施例使用这些池。显然,本发明的实施例不限于下面为了说明的目的而描述的特定实现,而是可以用于其它实现和其它应用服务器或服务器。
配置执行队列
在服务器配置(例如config.xml文件)中,开发者可以通过服务器配置中的“ExecuteQueues”标记来定义ExecuteQueues集合,例如:
<Server
 Name=“myserver”
 NativeIOEnabled=“true”
 ListenPort=“7701”
 ExecuteQueues=“testqueue”>
<ExecuteQueue
 Name=“testqueue”
 ThreadCount=“4”/>
上面给出的例子将导致产生名为testqueue的执行队列,其具有四(4)个执行线程的关联池。
配置Servlet以使用ExecuteQueue
为了配置servlet,开发者或管理员可以使用servlet初始化(init)参数,例如通过使用web.xml文件来配置的系统中的标记“wl-dispatch-policy(wl调度策略)”,来设置队列名称。web.xml文件包含init-param(初始化参数)部分,入下面所示的示例:
<servlet>
    <init-param>
      <param-name>wl-dispatch-policy</param-name>
      <param-value>testqueue</param-value>
      <description>Queue to use for processing requests to this servlet
      <description>
    </init-param>
  </servlet>
配置JSP以使用ExecuteQueue
可以象servlet一样登记JSP。下面的代码例子给出了登记使用名为“testqueue”的队列的JSP:
<servlet>
  <servlet-name>foo</servlet-name>
  <jsp-file>/myapp/fuo.jsp</jsp-file>
  <init-param>
    <param-name>wl-dispatch-policy</param-name>
    <param-value>testqueue</param-value>
  </init-param>
</servlet>
配置EJB和RMI以使用ExecuteQueue
EJBC和RMIC可以修改为采用dispatchPolicy(调度策略)标记,以允许调度策略或命令行的配置,即:
Java weblogic.rmic-dispatchPolicy testqueue...
Java weblogic.ejbc-dispatchPolicy testqueue...
优先级设定和服务质量
本发明一些实施例允许设定特定线程池中线程的优先级。然而,根据本发明的一个实施例,没有提供允许该配置来设定池中线程的优先级的机制。这是有意图的,因为线程调度的语义随平台而改变,而且如果所有执行线程具有相同的优先级,则系统不太可能遇到资源缺乏/优先级反转的问题。然而,仍可以将高优先级的通信调度到较少使用的队列,或者调度到具有大量执行线程的队列,并实现在不明显地使用线程优先级的情况下更快地为高优先级请求进行服务的目的。
与优先级设定密切相关的主题是服务质量(QOS)。使用该调度策略,可以确保一定类型的请求将具有一定数量的线程。如果有一些类型的请求必须以固定的速率继续处理,而不管机器上的任何其它负荷,则这将是有用的。
死锁的避免
使用分离的执行队列的很好原因是避免死锁条件。当对请求的服务要求附加的执行请求来完成时,可以为该附加的请求配置分离的队列。例如,考虑servlet“a”从JMS队列“b”中进行读取的情况。如果所有服务器的执行线程都在执行servlet“a”,则将没有剩余的执行线程来从队列“b”递送消息,因此不能进行任何工作。这一情况可以通过为servlet“a”定义分离的队列而避免。
吞吐量的节流和优化
使用分离队列的另一个很好的原因是对使用一些固定资源池的请求进行节流。例如,如果特定的作业使用大量存储器,则将其调度到具有有限数量的关联线程的队列中可能更好。以这种方式,系统可以限制同时运行的这种类型作业的最大数量,并使服务器耗尽存储器的任何风险最小化。
相关使用是将这些来自一个特定的池中的需要访问资源的请求与不需要访问的另一个池中的那些请求分离开来。例如,考虑服务器为两个EJB服务的情况。EJB“a”使用连接池来访问数据库,而EJB“b”仅执行一些存储器内的工作(或者可能使用不同的池)。如果线程数大于池中的连接数,则系统可能遭遇一种情况,其中在处理对“a”的请求时,一些线程尝试从池中得到连接而被阻塞。同时,队列中可能有其它对“b”的请求,只要有自由的执行线程,其就可能继续下去。通过将“a”和“b”请求调度到不同的队列,可以避免这种情况。
性能考虑
具有多重执行队列是非常有用的工具,但是必须小心使用或配置。管理员必须考虑到一些事情,包括:
资源使用的浪费:因为给每个队列分配了固定数量的线程,有可能有许多线程什么也不做,而其它队列上的请求处于空闲。线程不是廉价的资源,因此应当避免分配超额的线程。
活锁和优先级反转:尽管如上所述,对分离队列的明智使用可以减少死锁的几率,但是其还引入一种新的可能的问题,而其可能非常难于除去。作为不重要的例子,有可能从同一个客户机向同一个服务器发出两个远程呼叫,但是这两个远程呼叫调度到分离的队列,则会返回与预期不同的顺序。
前面对本发明的描述是为了说明和描述的目的而提供的。其并不打算穷尽,或将本发明限定为所公开的精确形式。显然,许多修改和变更对本领域技术人员是显而易见的。选用和描述实施例是为了最佳地说明本发明的原理及其实践应用,从而使本领域技术人员能够明白本发明适用于预想的特定用途的不同的实施例和各种修改。期望本发明的范围由所附权利要求及其等价物限定。

Claims (34)

1.一种用于接收和处理来自客户机应用程序的对服务器资源的请求的系统,包括:
服务器请求接口,用于接收来自客户机的、访问服务器资源的请求;
异步线程处理池,其在服务器中运行以等待来自客户机的所述请求;
多个执行队列界面,配置为对访问服务器资源的请求排队,其中每个执行队列界面具有分配来从所述执行队列界面中推出请求并执行针对该服务器资源的请求的线程池;以及
定义调度策略的数据,该调度策略以每个资源为基础进行配置,其中在接收请求时服务器采用所述调度策略控制所述异步线程池的使用,并将所述请求调度到所选择的一个执行队列界面,其中所述与每个执行队列界面关联的线程池执行针对所述服务器资源的请求。
2.如权利要求1所述的系统,其中该请求指定在访问资源时要提供给客户机应用程序的服务质量。
3.如权利要求1所述的系统,其中可以为每个资源配置多重执行队列。
4.如权利要求1所述的系统,其中所述服务器通过调度策略来指定是直接调度还是排队调度。
5.如权利要求1所述的系统,其中所述资源是小服务程序。
6.如权利要求1所述的系统,其中所述资源是Java小服务程序页面。
7.如权利要求1所述的系统,其中所述资源与特定的执行队列名相关联。
8.如权利要求1所述的系统,其中每个执行队列的线程池可以配置为考虑到与该执行队列关联的请求的优先级。
9.如权利要求1所述的系统,其中至少一个执行队列的线程池是异步的。
10.如权利要求1所述的系统,其中至少一个执行队列的线程池是同步的。
11.如权利要求9所述的系统,其中异步线程池在多重执行队列中是共享的。
12.如权利要求1所述的系统,其中所述调度策略以每个资源为基础进行配置,以便通过所选择的一个所述执行队列上的优先级来对指定请求排队。
13.一种用于接收和处理来自客户机应用程序的对服务器资源的请求的方法,包括以下步骤:
接收来自客户机的、访问服务器资源的请求;
由异步线程处理池等待该请求;
由所述异步线程池将每个请求在多个配置为对访问服务器资源的请求进行排队的执行队列界面中的一个上进行排队,其中所述异步线程池在接收到请求时采用以每个资源为基础进行配置的调度策略,将所述请求调度到选定的一个所述执行队列界面上,然后所述与每个执行队列界面关联的线程池执行针对所述服务器资源的请求。
14.如权利要求13所述的方法,其中该请求指定在访问资源时要提供给客户机应用程序的服务质量。
15.如权利要求13所述的方法,其中可以为每个资源配置多重执行队列。
16.如权利要求13所述的方法,其中客户机应用程序指定是直接调度还是排队调度。
17.如权利要求13所述的方法,其中所述资源是小服务程序。
18.如权利要求13所述的方法,其中所述资源是Java小服务程序页面。
19.如权利要求13所述的方法,其中所述资源与特定的执行队列名相关联。
20.如权利要求13所述的方法,其中每个执行队列的线程池可以配置为考虑到与该执行队列关联的请求的优先级。
21.如权利要求13所述的方法,其中至少一个执行队列的所述线程池是异步的。
22.如权利要求13所述的方法,其中至少一个执行队列的所述线程池是同步的。
23.如权利要求21所述的方法,其中异步线程池在多重执行队列中是共享的。
24.如权利要求13所述的方法,其中所述调度策略以每个资源为基础进行配置,以便通过所选择的一个所述执行队列上的优先级来对指定请求排队。
25.一种用于接收和处理来自客户机应用程序的对服务器资源的请求的系统,包括:
服务器请求接口,用于接收来自客户机的、访问服务器资源的请求;
等待所述请求的异步线程池,和与接收到请求的队列界面关联的同步线程池;以及
其中所述异步线程池在接收到请求时采用以每个资源为基础进行配置的调度策略,将所述请求调度到选定的一个所述执行队列界面上,然后所述与每个执行队列界面关联的线程池执行针对所述服务器资源的请求。
26.如权利要求25所述的系统,其中所述异步线程池执行针对所述服务器资源的请求而无需调度到所述队列。
27.如权利要求25所述的系统,其中所述调度策略基于所述请求的优先级。
28.如权利要求25所述的系统,其中所述线程模型包括分配给所述队列的多重同步线程池,用于提供对处理不同请求类型的精密控制。
29.一种用于接收和处理来自客户机应用程序的对服务器资源的请求的方法,包括步骤:
通过服务器请求接口接收来自客户机的、访问服务器资源的请求;
由异步线程池使用用于所述服务器资源的调度策略来将所述请求调度到队列界面上,其中所述队列界面与同步线程池关联;
由所述同步线程池从所述队列界面中推出所述请求;以及
由所述同步线程池执行针对所述服务器器资源的请求。
30.如权利要求29所述的方法,其中所述异步线程池执行针对所述服务器资源的请求而无需调度到所述队列。
31.如权利要求29所述的方法,其中所述调度策略基于所述请求的优先级。
32.如权利要求29所述的方法,其中所述线程模型包括分配给所述队列的多重同步线程池,用于提供对处理不同请求类型的精密控制。
33.一种用于接收和处理来自客户机应用程序的对服务器资源的请求的系统,包括:
服务器请求接口,用于接收来自客户机的、访问服务器资源的请求;
多个执行队列界面,配置为对访问服务器资源的请求排队,其中每个执行队列界面具有分配来从所述执行队列界面中推出请求并执行针对该服务器资源的请求的线程池;以及
其中所述异步线程池在接收到请求时采用以每个资源为基础进行配置的调度策略,将所述请求调度到选定的一个所述执行队列界面上,然后所述与每个执行队列界面关联的线程池执行针对所述服务器资源的请求。
34.一种用于接收和处理来自客户机应用程序的对服务器资源的请求的方法,包括步骤:
接收来自客户机的、访问服务器资源的请求;
使用用于所述服务器资源的调度策略将该请求调度到多个执行队列界面上,其中每个执行队列界面与线程池关联;
由关联的线程池从所述执行队列界面中推出请求,以及
由所述线程池执行针对该服务器资源的请求,
其中所述异步线程池在接收到请求时采用以每个资源为基础进行配置的调度策略,将所述请求调度到选定的一个所述执行队列界面上,然后所述与每个执行队列界面关联的线程池执行针对所述服务器资源的请求。
CNB028228723A 2001-10-05 2002-10-04 用于与多重调度池进行消息接发的应用服务器的系统 Expired - Lifetime CN100342369C (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US32754301P 2001-10-05 2001-10-05
US60/327,543 2001-10-05
US10/264,439 US6886041B2 (en) 2001-10-05 2002-10-03 System for application server messaging with multiple dispatch pools
US10/264,439 2002-10-03

Publications (2)

Publication Number Publication Date
CN1589442A CN1589442A (zh) 2005-03-02
CN100342369C true CN100342369C (zh) 2007-10-10

Family

ID=23276980

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028228723A Expired - Lifetime CN100342369C (zh) 2001-10-05 2002-10-04 用于与多重调度池进行消息接发的应用服务器的系统

Country Status (6)

Country Link
US (2) US6886041B2 (zh)
EP (1) EP1438678B1 (zh)
JP (1) JP4287276B2 (zh)
CN (1) CN100342369C (zh)
AU (1) AU2002362654B2 (zh)
WO (1) WO2003032185A1 (zh)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003570B2 (en) * 2001-10-05 2006-02-21 Bea Systems, Inc. System for integrating java servlets with asynchronous messages
US6886041B2 (en) * 2001-10-05 2005-04-26 Bea Systems, Inc. System for application server messaging with multiple dispatch pools
US7222148B2 (en) * 2002-05-02 2007-05-22 Bea Systems, Inc. System and method for providing highly available processing of asynchronous service requests
US20030233485A1 (en) * 2002-06-13 2003-12-18 Mircrosoft Corporation Event queue
WO2004056237A2 (en) * 2002-12-17 2004-07-08 Susan Marie Waters Crib shield system and other breathable apparatus
US7039914B2 (en) * 2003-03-07 2006-05-02 Cisco Technology, Inc. Message processing in network forwarding engine by tracking order of assigned thread in order group
JP4041002B2 (ja) * 2003-03-24 2008-01-30 株式会社三菱東京Ufj銀行 データベース更新処理システム、データベース更新のための更新データ入力方法、更新データ処理方法、およびプログラム
US7185060B2 (en) * 2003-03-26 2007-02-27 Microsoft Corporation Message processing pipeline for streams
US7424721B2 (en) * 2003-05-19 2008-09-09 Sun Microsystems, Inc. Inter-object communication interface bridge
US7246359B2 (en) * 2003-07-31 2007-07-17 International Business Machines Corporation Methods, systems and computer program products for maintaining association integrity of enterprise JavaBeans (EJB) during EJB passivation and reactivation
US8041821B2 (en) * 2003-11-26 2011-10-18 International Business Machines Corporation Connection pool management
US7693847B1 (en) * 2004-07-13 2010-04-06 Teradata Us, Inc. Administering workload groups
US8176117B2 (en) * 2003-12-19 2012-05-08 Stmicroelectronics, Inc. Accelerator for object-oriented communications and method
US7444536B1 (en) 2004-04-16 2008-10-28 Sun Microsystems, Inc. RMI-IIOP request failover mechanism
US7448041B2 (en) * 2004-04-28 2008-11-04 International Business Machines Corporation Interfacing an application server to remote resources using Enterprise Java Beans as interface components
US7657892B2 (en) * 2004-05-20 2010-02-02 Bea Systems, Inc. System and method for application server with self-tuned threading model
US7509429B2 (en) * 2004-05-28 2009-03-24 Sap Ag Message endpoint activation
US20050267918A1 (en) * 2004-05-28 2005-12-01 Gatev Andrei A System and method for bundling deployment descriptor files within an enterprise archive for fast reliable resource setup at deployment time
US20050289212A1 (en) * 2004-06-01 2005-12-29 Tankov Nikolal D Non-transactional resource reference
US7594237B2 (en) 2004-06-01 2009-09-22 Sap Ag Program object to support connection generation
US9582313B2 (en) * 2004-06-03 2017-02-28 Sap Se Connection resource system
US7676810B2 (en) * 2004-06-03 2010-03-09 Sap Ag Identification of execution context
US7657658B2 (en) * 2004-06-07 2010-02-02 Sap Ag Resource adapter deployment
CN100347675C (zh) * 2004-06-29 2007-11-07 北京大学 应用服务器的性能优化方法
US20050289551A1 (en) * 2004-06-29 2005-12-29 Waldemar Wojtkiewicz Mechanism for prioritizing context swapping
US20060026214A1 (en) * 2004-07-29 2006-02-02 International Business Machines Corporation Switching from synchronous to asynchronous processing
US7565662B2 (en) * 2004-09-24 2009-07-21 International Business Machines Corporation Program agent initiated processing of enqueued event actions
US8055821B2 (en) * 2004-11-17 2011-11-08 International Business Machines Corporation Apparatus, system, and method for converting a synchronous interface into an asynchronous interface
US7770150B2 (en) * 2004-12-15 2010-08-03 International Business Machines Corporation Apparatus, system, and method for sharing and accessing data by scopes
US7565395B2 (en) * 2005-02-01 2009-07-21 Microsoft Corporation Mechanism for preserving session state when using an access-limited buffer
CA2596896C (en) * 2005-02-22 2012-09-25 Nextair Corporation Wireless communication device use of application server applications
US8090873B1 (en) * 2005-03-14 2012-01-03 Oracle America, Inc. Methods and systems for high throughput information refinement
US8055689B1 (en) 2005-03-14 2011-11-08 Oracle America, Inc. Methods and systems for distributing information model nodes in memory
US8005791B1 (en) 2005-03-14 2011-08-23 Oracle America, Inc. Methods and systems for publishing aggregated data to a business logic tier
JP2008537818A (ja) * 2005-03-21 2008-09-25 デクステラ・インコーポレイテッド モバイルデータシステムのためのアダプタアーキテクチャ
US8005933B2 (en) * 2005-04-13 2011-08-23 International Business Machines Corporation Probabalistic throttling of application server requests
GB0516444D0 (en) * 2005-08-10 2005-09-14 Symbian Software Ltd Improving the efficiency of file server requests in a computing device
CN100450105C (zh) * 2005-09-13 2009-01-07 中兴通讯股份有限公司 一种基于java消息服务的同步消息接口实现方法
US8671133B2 (en) * 2005-11-29 2014-03-11 The Boeing Company System having an energy efficient network infrastructure for communication between distributed processing nodes
CN100385863C (zh) * 2005-12-29 2008-04-30 华为技术有限公司 一种媒体资源分配方法
US9092278B2 (en) * 2006-07-07 2015-07-28 International Business Machines Corporation Determining the processing order of a plurality of events
US20080148275A1 (en) * 2006-10-30 2008-06-19 Alexander Krits Efficient Order-Preserving Delivery of Concurrent Messages
EP2095276B1 (en) * 2006-12-19 2016-11-30 International Business Machines Corporation Method and system for reducing difference in the time of retrieval of data retrieved from different sources
US9112808B2 (en) * 2007-02-06 2015-08-18 At&T Intellectual Property Ii, L.P. Devices, systems, and methods for providing data
US20080209435A1 (en) * 2007-02-23 2008-08-28 Microsoft Corporation Scalable workflow management system
US7711822B1 (en) * 2007-03-26 2010-05-04 Oracle America, Inc. Resource management in application servers
US20080270974A1 (en) * 2007-04-30 2008-10-30 Krasimir Topchiyski Enterprise JavaBeans Metadata Model
US8326816B2 (en) 2010-05-06 2012-12-04 Oracle International Corporation Fine grain synchronization for database replay
US8438144B2 (en) * 2010-08-27 2013-05-07 Oracle International Corporation Transactionally consistent database replay in an environment with connection pooling
US8611378B2 (en) 2007-05-29 2013-12-17 Red Hat, Inc. Message handling multiplexer
US7733863B2 (en) * 2007-05-30 2010-06-08 Red Hat, Inc. Out of band messages
US8505028B2 (en) * 2007-05-30 2013-08-06 Red Hat, Inc. Flow control protocol
US7921227B2 (en) * 2007-05-30 2011-04-05 Red Hat, Inc. Concurrent stack
US7992153B2 (en) * 2007-05-30 2011-08-02 Red Hat, Inc. Queuing for thread pools using number of bytes
US7793140B2 (en) * 2007-10-15 2010-09-07 International Business Machines Corporation Method and system for handling failover in a distributed environment that uses session affinity
US8719841B2 (en) * 2007-11-16 2014-05-06 Microsoft Corporation Dispatch mechanism for coordinating application and communication medium state
US8505030B2 (en) * 2007-11-16 2013-08-06 Microsoft Corporation Coordinating resources using a volatile network intermediary
US9021503B2 (en) * 2007-11-16 2015-04-28 Microsoft Technology Licensing, Llc Coordinating application state and communication medium state
CN101262352B (zh) * 2008-03-04 2010-10-13 浙江大学 一体化安全管理中数据统一加速处理方法
US8205202B1 (en) * 2008-04-03 2012-06-19 Sprint Communications Company L.P. Management of processing threads
US8429540B1 (en) 2008-10-10 2013-04-23 Adobe Systems Incorporated End user created collaborative and non-collaborative workspace application container system and method
US20100241760A1 (en) * 2009-03-18 2010-09-23 Microsoft Corporation Web Front-End Throttling
US20100250651A1 (en) * 2009-03-31 2010-09-30 Inventec Corporation Data access method for making asynchronous request to block device
US8301706B2 (en) 2009-06-15 2012-10-30 Microsoft Corporation Routing of pooled messages via an intermediary
US9292702B2 (en) * 2009-08-20 2016-03-22 International Business Machines Corporation Dynamic switching of security configurations
US8230478B2 (en) 2009-08-27 2012-07-24 International Business Machines Corporation Flexibly assigning security configurations to applications
US8296411B2 (en) * 2010-03-01 2012-10-23 International Business Machines Corporation Programmatically determining an execution mode for a request dispatch utilizing historic metrics
US8549538B2 (en) * 2010-03-18 2013-10-01 Microsoft Corporation Coordinating communication medium state for subtasks
US8250234B2 (en) 2010-04-26 2012-08-21 Microsoft Corporation Hierarchically disassembling messages
US9886315B2 (en) * 2010-08-27 2018-02-06 Ebay Inc. Identity and semaphore-based quality of service
US8856460B2 (en) 2010-09-15 2014-10-07 Oracle International Corporation System and method for zero buffer copying in a middleware environment
US9727396B2 (en) * 2010-11-30 2017-08-08 Red Hat, Inc. Message queue deployment
US20120151479A1 (en) * 2010-12-10 2012-06-14 Salesforce.Com, Inc. Horizontal splitting of tasks within a homogenous pool of virtual machines
US9086909B2 (en) * 2011-05-17 2015-07-21 Oracle International Corporation System and method for supporting work sharing muxing in a cluster
US9110715B2 (en) * 2013-02-28 2015-08-18 Oracle International Corporation System and method for using a sequencer in a concurrent priority queue
CN103164273A (zh) * 2012-09-06 2013-06-19 佳都新太科技股份有限公司 一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法
GB2507294A (en) 2012-10-25 2014-04-30 Ibm Server work-load management using request prioritization
CN103197968B (zh) * 2013-03-18 2016-03-30 焦点科技股份有限公司 一种融合同步异步特点的线程池处理方法及系统
CN104063279B (zh) * 2013-03-20 2018-12-28 腾讯科技(深圳)有限公司 任务调度方法、装置和终端
US9280372B2 (en) 2013-08-12 2016-03-08 Amazon Technologies, Inc. Request processing techniques
US10346148B2 (en) 2013-08-12 2019-07-09 Amazon Technologies, Inc. Per request computer system instances
US9348634B2 (en) 2013-08-12 2016-05-24 Amazon Technologies, Inc. Fast-booting application image using variation points in application source code
US9705755B1 (en) * 2013-08-14 2017-07-11 Amazon Technologies, Inc. Application definition deployment with request filters employing base groups
US10235223B2 (en) * 2014-05-21 2019-03-19 Georgia State University Research Foundation, Inc. High-performance computing framework for cloud computing environments
CN104598563B (zh) * 2015-01-08 2018-09-04 北京京东尚科信息技术有限公司 高并发数据存储方法及装置
CN104793071A (zh) * 2015-03-28 2015-07-22 合肥天海电气技术有限公司 基于j2ee分布式技术的电网故障诊断系统
WO2017066966A1 (en) * 2015-10-22 2017-04-27 Oracle International Corporation System and method for providing mssq notifications in transactional processing environment
US10261902B2 (en) 2016-01-04 2019-04-16 Toshiba Memory Corporation Parallel processing of a series of data units for writing
US10635497B2 (en) * 2017-05-05 2020-04-28 Cavium, Llc Method and apparatus for job pre-scheduling by distributed job manager in a digital multi-processor system
US10616346B2 (en) * 2017-07-28 2020-04-07 International Business Machines Corporation Server connection capacity management
CN109117260B (zh) * 2018-08-30 2021-01-01 百度在线网络技术(北京)有限公司 一种任务调度方法、装置、设备和介质
US11553047B2 (en) 2018-11-30 2023-01-10 International Business Machines Corporation Dynamic connection capacity management
CN109840144B (zh) * 2018-12-28 2023-09-19 航天信息股份有限公司 一种针对跨机构批量服务请求的信息服务调度方法及系统
US11277317B2 (en) * 2019-08-05 2022-03-15 International Business Machines Corporation Machine learning to predict quality-of-service needs in an operational data management system
CN110598155A (zh) * 2019-09-17 2019-12-20 北京锐安科技有限公司 一种Ajax请求调用方法、装置、计算机设备及存储介质
CN111193774A (zh) * 2019-12-10 2020-05-22 天翼电子商务有限公司 提高服务器系统吞吐量的方法、系统以及服务器系统
CN111538600B (zh) * 2020-02-25 2023-09-12 远景智能国际私人投资有限公司 消息处理方法、装置、计算机设备及存储介质
CN112612586A (zh) * 2020-12-24 2021-04-06 大唐互联科技(武汉)有限公司 一种基于反应式架构设计连接设备的方法及系统
CN113342764A (zh) * 2021-06-12 2021-09-03 四川虹美智能科技有限公司 不同云端服务器之间的数据同步方法及装置
US20240064207A1 (en) * 2022-08-16 2024-02-22 Capital One Services, Llc Systems and methods for asynchronous and synchronous network communication
CN117453422B (zh) * 2023-12-22 2024-03-01 南京研利科技有限公司 数据处理方法、装置、电子设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006274A (en) * 1997-01-30 1999-12-21 3Com Corporation Method and apparatus using a pass through personal computer connected to both a local communication link and a computer network for indentifying and synchronizing a preferred computer with a portable computer
WO2001033345A1 (en) * 1999-11-02 2001-05-10 Alta Vista Company System and method for enforcing politeness while scheduling downloads in a web crawler
FR2802373A1 (fr) * 1999-12-14 2001-06-15 Ibm Systeme et methode pour personnaliser la qualite des services en fonction des clients dans un environnement informatique collaboratif

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2149445A1 (en) * 1994-07-27 1996-01-28 Aziza Bushra Faruqi Separation and transmission control method and apparatus for a microkernal data processing system
US6006247A (en) * 1995-03-21 1999-12-21 International Business Machines Corporation Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system
US5774668A (en) * 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5928323A (en) * 1996-05-30 1999-07-27 Sun Microsystems, Inc. Apparatus and method for dynamically generating information with server-side software objects
US6192389B1 (en) * 1997-03-28 2001-02-20 International Business Machines Corporation Method and apparatus for transferring file descriptors in a multiprocess, multithreaded client/server system
US5987454A (en) * 1997-06-09 1999-11-16 Hobbs; Allen Method and apparatus for selectively augmenting retrieved text, numbers, maps, charts, still pictures and/or graphics, moving pictures and/or graphics and audio information from a network resource
CA2220578A1 (en) * 1997-11-10 1999-05-10 Northern Telecom Limited Distributed service network
US6859451B1 (en) * 1998-04-21 2005-02-22 Nortel Networks Limited Server for handling multimodal information
US6189033B1 (en) * 1998-07-16 2001-02-13 Hewlett-Packard Company Method and system for providing performance guarantees for a data service system of a data access network system
US6304906B1 (en) * 1998-08-06 2001-10-16 Hewlett-Packard Company Method and systems for allowing data service system to provide class-based services to its users
US6480865B1 (en) * 1998-10-05 2002-11-12 International Business Machines Corporation Facility for adding dynamism to an extensible markup language
US6401126B1 (en) * 1999-03-10 2002-06-04 Microsoft Corporation File server system and method for scheduling data streams according to a distributed scheduling policy
US6691208B2 (en) * 1999-03-12 2004-02-10 Diva Systems Corp. Queuing architecture including a plurality of queues and associated method for controlling admission for disk access requests for video content
US6292792B1 (en) * 1999-03-26 2001-09-18 Intelligent Learning Systems, Inc. System and method for dynamic knowledge generation and distribution
US6031747A (en) * 1999-08-02 2000-02-29 Lockheed Martin Missiles & Space Company Interleaved synchronous flyback converter with high efficiency over a wide operating load range
US6880126B1 (en) * 1999-08-03 2005-04-12 International Business Machines Corporation Controlling presentation of a GUI, using view controllers created by an application mediator, by identifying a destination to access a target to retrieve data
US6732330B1 (en) * 1999-09-30 2004-05-04 International Business Machines Corporation Scripting language blocks to support multiple scripting languages in a single web page
US6718516B1 (en) * 1999-09-30 2004-04-06 International Business Machines Corporation Method for verifying context between multiple related XML tags in document object model (DOM)
US6516337B1 (en) * 1999-10-14 2003-02-04 Arcessa, Inc. Sending to a central indexing site meta data or signatures from objects on a computer network
US6779152B1 (en) * 1999-12-07 2004-08-17 International Business Machines Corporation Method for rotating a dynamic HTML table
US6421673B1 (en) * 1999-12-13 2002-07-16 Novient, Inc. Method for mapping applications and or attributes in a distributed network environment
WO2001042966A2 (en) * 1999-12-13 2001-06-14 Novient, Inc. Attribute and application synchronization in distributed network environment
US20010047385A1 (en) * 1999-12-30 2001-11-29 Jeffrey Tuatini Passthru to shared service funtionality
US20020049788A1 (en) * 2000-01-14 2002-04-25 Lipkin Daniel S. Method and apparatus for a web content platform
US7702995B2 (en) * 2000-04-24 2010-04-20 TVWorks, LLC. Method and system for transforming content for execution on multiple platforms
US6327628B1 (en) * 2000-05-19 2001-12-04 Epicentric, Inc. Portal server that provides a customizable user Interface for access to computer networks
US6763520B1 (en) * 2000-08-24 2004-07-13 Cognos Incorporated Fair assignment of processing resources to queued requests
CA2427354A1 (en) * 2000-10-31 2002-08-01 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
US6910187B2 (en) * 2001-01-23 2005-06-21 Mci, Inc. Graphical user interface for procuring telecommunications services on-line
US7546576B2 (en) * 2001-06-15 2009-06-09 Lightsurf Technology, Inc. Software framework for web-based applications
US6948151B2 (en) * 2001-06-29 2005-09-20 International Business Machines Corporation System and method for dynamic packaging of component objects
US6886041B2 (en) * 2001-10-05 2005-04-26 Bea Systems, Inc. System for application server messaging with multiple dispatch pools
US6873984B1 (en) * 2002-02-20 2005-03-29 Oracle International Corporation Data mining recommendation web beans and JSP tag libraries
US7080379B2 (en) * 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006274A (en) * 1997-01-30 1999-12-21 3Com Corporation Method and apparatus using a pass through personal computer connected to both a local communication link and a computer network for indentifying and synchronizing a preferred computer with a portable computer
WO2001033345A1 (en) * 1999-11-02 2001-05-10 Alta Vista Company System and method for enforcing politeness while scheduling downloads in a web crawler
FR2802373A1 (fr) * 1999-12-14 2001-06-15 Ibm Systeme et methode pour personnaliser la qualite des services en fonction des clients dans un environnement informatique collaboratif

Also Published As

Publication number Publication date
JP4287276B2 (ja) 2009-07-01
US20030093499A1 (en) 2003-05-15
WO2003032185A1 (en) 2003-04-17
EP1438678B1 (en) 2016-11-16
US6886041B2 (en) 2005-04-26
EP1438678A1 (en) 2004-07-21
EP1438678A4 (en) 2009-07-29
US20050149612A1 (en) 2005-07-07
CN1589442A (zh) 2005-03-02
JP2005505833A (ja) 2005-02-24
AU2002362654B2 (en) 2008-03-06

Similar Documents

Publication Publication Date Title
CN100342369C (zh) 用于与多重调度池进行消息接发的应用服务器的系统
CN1302409C (zh) 爪哇小服务程序和http客户机间异步消息接发的系统和方法
CN101694709B (zh) 一种面向服务的分布式工作流管理系统
US7882501B1 (en) System and method for enabling dynamic modifed class reloading in an application server environment
US6859834B1 (en) System and method for enabling application server request failover
US8321871B1 (en) System and method of using transaction IDS for managing reservations of compute resources within a compute environment
US7912957B2 (en) Autonomic service routing using observed resource requirement for self-optimization
KR100898315B1 (ko) 인핸스드 런타임 호스팅
AU2002362654A1 (en) System for application server messaging with multiple dispatch pools
US20030028645A1 (en) Management system for a cluster
US20030105884A1 (en) System and method for using Web services with an enterprise system
WO2001013228A9 (en) Graceful distribution in application server load balancing
CN1601478A (zh) 用于在被争夺的互斥锁上被动态限定的自旋线程的方法与系统
CN1645330A (zh) 用于应用程序分布式管理的启用网格的虚拟机的方法和系统
CN1617501A (zh) 向应用程序通知状态变化的灵活体系结构
JP2004206712A (ja) トポロジ・アウェア・グリッド・サービス・スケジューラ・アーキテクチャ
CN1906580A (zh) 对于具有可移动对象的启用网格的虚拟机的方法和系统
KR20060041928A (ko) 프린트 시스템 및 방법
von Laszewski et al. Features of the Java commodity Grid kit
EP0695993A2 (en) System and method for interprocess communication
CN1889048A (zh) 组件的实现方法以及系统
Pallickara et al. Swarm: Scheduling large-scale jobs over the loosely-coupled hpc clusters
CN1835450A (zh) 网格作业管理器
CN1976349A (zh) 爪哇小服务程序和http客户机间异步消息接发的系统和方法
US7543294B2 (en) Dynamic priority inheritance algorithm for scheduling dynamic configurable devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: ORACLE INT CORP

Free format text: FORMER OWNER: BEA SYSTEMS CORP.

Effective date: 20110418

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20110418

Address after: California, USA

Patentee after: ORACLE INTERNATIONAL Corp.

Address before: California, USA

Patentee before: BEA SYSTEMS, Inc.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20071010