服务器内调度和分派排队客户请求的装置和方法

文档序号:6414759阅读:162来源:国知局
专利名称:服务器内调度和分派排队客户请求的装置和方法
技术领域
本发明涉及客户-服务器(也叫“分布式”)计算领域,其中一个计算设备(“客户机”)请求另一个计算设备(“服务器”)去执行客户机的部分工作。
过去几年以来,客户-服务器计算在信息技术世界中已经变得越来越重要。这种分布式计算允许-台计算机将其某些工作委托给另一台计算机,后者-例如-有可能更适于执行该工作。
客户-服务器计算的益处,由于使用了称为面向对象的程序设计(OOP)这种著名的计算机程序设计技术,已经进一步得到加强。面向对象的程序设计允许客户机与服务器位于不同的(异类的)“平台”。平台是计算机用来进行工作的特定硬件-软件-操作系统-通讯协议的一种组合。OOP允许客户应用程序和服务器应用程序在它们自己的平台上运行,而无须考虑客户应用程序的工作请求将如何与服务器应用程序通信并被接受。同样,服务器应用程序无须考虑OOP系统将如何接收、转换服务器应用程序的处理结果并将其传送回发出请求的客户应用程序。
OOP技术如何与异类客户-服务器系统结合,其细节在美国专利号5,440,744和欧洲专利公开申请号EP0677,943A2中有所解释。本文引用这两篇公开文献作为参考。不过,下文将给出一例基本体系结构,以利读者有上下文来理解本发明的环境。


图1所示,客户机10(例如可以是一台安装了IBMOS/2操作系统的个人电脑)有一个应用程序40在其操作系统上运行(“IBM”和“OS/2”是IBM公司的商标)。应用程序40将定期地要求将工作在服务器计算机20上执行,并且/或者将数据从服务器20返回,供应用程序40以后使用。服务器计算机20例如可以是一个运行IBM的MVS操作系统的高能主计算机(MVS也是IBM公司的商标)。就本发明来说,要求由服务器执行通讯访问的请求,是用户与第一个应用程序40的交互作用提出的,还是应用程序40不依赖用户的交互作用而独立操作、在程序运行期间自动提出请求的,这对于本发明来说无关紧要。
当客户计算机10希望提出一个请求,要求服务器计算机20的服务时,第一应用程序40向第一逻辑装置50通知所要求的服务。通知方法例如是,将某个远程过程的名称连同一列输入和输出参数一起发送给第一逻辑装置50。第一逻辑装置50然后处理这样的任务,即通过查阅在存储器60中存储的对可用通讯服务的定义,建立与第二计算机的必要通讯。所有可能的服务都被定义成一个对象类内聚框架(cohesive framework of object classess),这些类(class)是从一个单一对象类导出的。用这种方法来定义服务在效能和可重用性方面具有很多优点。
为了建立与服务器20的必要通讯,第一逻辑装置50首先判断需要使用框架中的哪个对象类,然后创建该对象的一个实例(instance);向该对象发送一个信息,以使该对象调用它的一个子程序(method)。其结果是通过连接装置80建立了与服务器计算机20的链路,随后发送一个请求到第二逻辑装置90。
第二逻辑装置90将请求传递到服务器计算机20上运行的第二应用程序100(本文以下称为服务应用程序),以便服务应用程序100能执行该请求要求的特定任务,例如运行一个数据检索过程。该任务一旦完成,服务应用程序可能需要将结果发送回第一计算机10。服务应用程序100在执行请求任务期间以及在向第一计算机10反馈结果时,与第二逻辑装置90交互作用。第二逻辑装置90建立对象的实例,并在服务器应用程序100要求时,按要求调用这些对象的适当子程序。对象实例是根据存储器110中存储的对象类内聚框架创建的。
由于采用以上技术,客户应用程序40就不向通讯体系结构暴露。此外,服务应用程序100是通过为其环境的标准机构被调用的,所以它不知道自己正被远程调用。
对象管理组织(OMG)是一个国际性组织,涉及在图1所示异类平台上的客户-服务器计算的各个方面。OMG已经发布了客户计算机(例如10)与服务器计算机(例如20)通讯(以OOP形式)的公开标准。这些标准中有一部分定义了一种对象请求代理器(ORB-Object Request Broker),它起着客户机与服务器计算机之间面向对象的桥路的作用。ORB从面向对象的执行细节中断开客户和服务器应用程序的连接,至少执行第一第二逻辑装置50与90以及连接装置80的部分工作。
图2表示这种系统的常规体系结构。一旦客户请求经过对象请求代理器21进入服务器,对象请求代理器就寻找能执行请求的某个服务器对象,并将请求发送给该服务器对象的对象适配器22(也由OMG标准定义),请求被存储在对象适配器的缓冲器中,等待由服务器对象处理。缓冲器是一个先进先出队列,在缓冲器一端收到的第一个请求第一个从另一端离开。服务器对象有多个并行执行线程(23a、23b、23c),服务器对象可以在其中任何线程上执行自己的一个实例。这样,服务器对象就可以同时处理多个请求。对象适配器22负责查看并行的执行线程中哪个准备好执行另一个请求,并将位于缓冲器外出端的请求分配给下一个可用执行线程。这在上述美国专利中被描述成服务器将排队请求分派给执行线程的“分派”机制。
这种现有体系结构的一个重要问题是,执行客户请求的应答时间不可预测。就是说,某个客户请求在服务器对象的对象适配器队列22中可能排在许多其它请求之后,有时该特定客户请求又可能是队列中的唯一请求。等待回答的客户无法预测何时能收到服务器对象的应答。另一个问题是,在请求对象适配器队列中,非常重要的客户请求可能会排在不太重要的请求之后。
这种可预测性问题阻碍了用异类客户-服务器系统来执行分布式处理,使这类分布式处理-特别是当要求执行环境一致、可预测、有保障时一只能在同类客户-服务器体系结构(例如访问主计算机的计算机终端)上执行。
本发明的一个方面是,提供一种在面向对象的异类客户-服务器计算环境中调度并分派客户请求供服务器对象执行的装置,该装置包含一个存储请求的缓冲器,缓冲器有一个输入端和一个输出端,前者与一个向该装置输送客户请求的通讯通道相连;与缓冲器输出端相连的多个并行执行线程;一个调度装置,用于将缓冲器中存储的客户请求分配到多个执行线程,其特点是,调度装置根据一个优先级确定规则来排定缓冲器中存储的客户请求的优先顺序,其中,优先级确定规则既考虑多个执行线程的状态也考虑被存储的各请求的性质。
最好是,缓冲器包含在对象适配器内。
最好是,调度装置用优先级确定规则来为缓冲器中的各请求分配优先级值,并将缓冲器中较高优先级值请求放在较低优先级值请求的前面,使最高优先级值的请求下一个被调度,供服务器对象执行。
本发明的第二个方面是,提供一种在面向对象的异类客户-服务器计算环境中调度并分派客户请求供服务器对象执行的方法,该方法包含以下步骤确定关于多个输入的排队的客户请求中各请求的信息;确定关于服务器对象的多个并行的执行线程中各执行线程的信息;将一个优先级确定规则应用到所述确定步骤所获得的信息;根据所述应用步骤的结果,调度从多个排队请求组成的队列进行分派的顺序。
本发明的第三个方面是,提供一种计算机程序产品,它在计算机上运行时,执行本发明第二个方面的方法。
因此,运用本发明来处理排队客户请求,就能更加有效、更易控制,极大地提高了向客户返回结果的可预测性。高优先级的客户请求能在低优先级的客户请求之前得到处理,可以在执行线程之间进行工作负荷管理,从而使排队请求的处理效率高,可以预测。
要更好地理解上述发明,可以阅读下文结合以下各附图对一个最佳实施例的详细说明。
图1的框图表示一种已知的采用对象技术的异类客户-服务器体系结构,本发明可应用到其上下文。
图2是按照常规设计的一种服务器体系结构的框图。
图3是按照本发明一个最佳实施例的一种服务器体系结构的框图。
图4是表示按照本发明一个最佳实施例的处理步骤的一个流程图。
图5是表示按照本发明一个最佳实施例,在分配优先级之后,对象适配器的队列中的请求。
图6是表示按照本发明一个最佳实施例,在请求被根据所分配优先级而重新排序之后,对象适配器的队列中的请求。
在图3的最佳实施例中,服务器进程接收的来自客户进程的请求,首先由服务器的对象请求代理器31接收。ORB31然后将以某服务器对象为目的地的请求传递到该服务器对象的对象适配器32。该服务器对象有多个并行的执行线程33a、33b、33c,各执行线程上能并行运行该服务器对象的不同实例,以便执行大量的客户请求。这些与上述的图2表示的现有技术类似。
根据图3表示的本发明的最佳实施例,在图2表示的现有技术中附加了软件单元。这些附加软件单元是优先级确定单元34和请求重定序单元35。优先级确定单元34从对象适配器32接收一个输入,也从各执行线程33a~33c接收输入并向对象适配器32提供一个输出。请求重定序单元35与对象适配器32之间有一条输入输出双向连路。
在以下为说明本最佳实施例的操作而描述的例子中,服务器对象代表一个银行帐户。于是对象适配器32中排队的各种请求都是要访问某银行帐户的请求。有一个排队请求是来自某客户ATM(自动柜员机)要求从该帐户提取资金的请求。发出该请求的请求人,拥有该帐户,并希望提取一些资金。发出第二个排队请求的是一个直接存工资的付款方客户。该请求来自该帐户所有人的雇主,雇主正要将雇主发的月工资加到该帐户所有人的银行帐户中。第三个排队请求来自另一个客户ATM,目的是查看该帐户的余额。发出该请求的是帐户所有人的太太,她在城中与所有人不同地点的另一个ATM上。第四个请求是个直接借贷请求,发自向该帐户所有人的家庭供电的电力公司。该请求是要从该帐户转出一个月的电费。
优先级确定单元34根据一个程序化的规则运行,以确定在对象适配器32中等待由服务器对象执行的各排队请求的优先级。例如,规则的一部分规定,查看帐户余额的请求应赋予一个低优先级值,因为对于该客户来说,如果先执行其它等待的请求,然后再答复其请求,则答复结果将更有意义。就是说,如果大笔资金将要通过直接借贷而被转出该帐户,要求查看帐户余额的请求人最好在直接借贷发生之后而不是直接借贷发生之前得到余额通知。只有这样,查看余额的请求人才能得到最新的余额通知。
规则的另一部分规定,如果线程33a、33b和33c上负荷很重(正在执行高于一般层次的处理),处理负荷较轻的请求被赋予较高的优先级值。例如,加入帐户所有人的工资的请求,不需要太多的客户交互作用,诸如验明客户身份的PIN(个人身份号码)查验例程,因为这是向帐户存款的请求,而不是取款请求。因此这种请求涉及的处理负荷较轻,在执行线程负荷很重的时期,应当赋予较高的优先级。
规则的另一部分可能会规定,队列中的某个客户的请求应比其它客户有更高的优先级。例如,在ATM等待的银行帐户的所有人应比直接借贷和直接存款请求的优先级更高。另一种选择是,直接存款请求可以比任何借贷请求的优先级更高,这样就会增加帐户中资金足够用于借贷的机会。
规则的确切细节可以按照程序员希望的特定方式而定夺,这样就能灵活地控制由优先级确定单元34执行的优先确定。
于是,优先级确定单元34从对象适配器32中的排队请求接受输入,以确定各排队请求的性质。优先级确定单元34也从执行线程33a、33b和33c接受输入,以确定它们当前的状态。然后,优先级确定单元34为每个排队请求分配一个优先级值,优先级值的范围是最高值到最低值。
接着,请求重定序单元35检查每个排队请求分到的优先级值,并根据它们的优先级值重新排定排队请求的次序,使最高优先级值的请求排在队列的顶部,下一个分派给执行线程,其它请求按优先级值的降序而降序排列。
应当注意,排队请求的次序可以动态改变,就是说,如果系统状态发生变化,则即使重定序单元35已经重新排定了请求的次序,该次序也可以改变。例如,如果在重定序单元35重新排定了排队请求的次序后,线程33b突然被释放,则优先级确定单元34就执行程序化规则的这样的规定部分,即如果线程33b被释放,则应将高优先级值赋予计算密集型请求(例如帐户所有人要求从ATM提取资金的请求,这种请求涉及PIN查验以及其它的客户交互作用)。这种做法的原因例如是,线程33b特别适合处理较重的处理负荷,所以一旦释放,就应尽快调度一个适当的请求在线程33b上执行,以尽量高效率地平衡各线程间的工作负荷。为此,程序员也可以设置优先级确定单元对其输入应用该项规则的频率。一种选择是,队列中每收到一个新请求时;另一种选择是,每当从队列分派一个请求时;第三种选择是,经过预定的一段时间后(例如5秒)。
再者,程序员可以按照其精确要求来编制由优先级确定单元34遵循的规则。例如,如果程序员认定,有效地平衡工作负荷比向客户报告最新的帐户余额更重要,则可以精确地设定几个优先级,当线程33b释放时,就将比帐户余额查询请求更高级的优先级赋予处理负荷较重的请求。
本发明的最佳实施例执行的步骤如图4的流程图所示。
在步骤41,优先级确定单元34检查在对象适配器32的队列中等待的各个请求。步骤42,优先级确定单元34检查各线程33a、33b和33c的状态。步骤43,优先级确定单元用从步骤41和42收集的信息作为某优先确定规则的输入参数。如上所述,该规则以及预先编制,反映了程序员希望的优先确定方案。
步骤44,优先级确定单元34根据步骤43对各排队请求应用优先确定规则的结果,为每个排队请求分配一个值。确切地说,在对象适配器32的队列中等待的各个请求都被赋予一个数字值,这种值依赖于对该请求应用优先确定规则的结果。
例如,如图5所示,在对象适配器32的队列中等待着3个请求请求1(若是采用现有技术的先进先出系统,该请求应当是下一个离开队列的请求),请求2(紧邻请求1之后),请求3(紧邻请求2之后)。当在步骤43应用规则后,如果请求1得到优先级值2,请求2得到优先级值3,请求3得到优先级值1,则这些数字值被存储在栏502,该栏与登载各排队请求的列表栏501并排。
步骤45,请求重定序单元35检查对象适配器32的队列的栏502,重新排定栏501中的请求的次序,使得最高优先级的请求(请求3)位于栏501的顶部(见图6),其它两个请求按照它们得到的优先级顺序排在该第一个请求之后。
这样,本发明向分布式异类处理平台上下文提供了为当今商务处理环境所要求的高度可预测、高效率的结果。大量的客户由于系统范围的负荷平衡而因此得以高效地使用服务器可用资源。此外,就客户每次调用位于异类平台的服务器对象的保障处理时间而言,客户也能从服务器得到一致性的、高度可预测的结果。
权利要求
1.一种在面向对象的异类客户-服务器计算环境中调度并分派客户请求供服务器对象执行的装置,该装置的特征在于包含一个存储请求的缓冲器,缓冲器有一个输入端和一个输出端,前者与一个向该装置输送客户请求的通讯通道相连;与缓冲器输出端相连的多个并行执行线程;一个调度装置,用于将缓冲器中存储的客户请求分配到多个执行线程,其特点是调度装置根据一个优先级确定规则来排定缓冲器中存储的客户请求的优先顺序,该优先级确定规则既考虑多个执行线程的状态也考虑被存储的各请求的性质。
2.权利要求1的装置,其特征在于缓冲器包含在一个对象适配器内。
3.权利要求1的装置,其特征在于,调度装置应用优先级确定规则来为缓冲器中的各请求分配优先级值,并在缓冲器中将较高优先级值请求放在较低优先级值请求的前面,使最高优先级值的请求下一个被调度,供服务器对象执行。
4.一种在面向对象的异类客户-服务器计算环境中调度并分派客户请求供服务器对象执行的方法,该方法包含以下步骤确定关于多个输入的排队的客户请求中各请求的信息;确定关于服务器对象的多个并行的执行线程中各执行线程的信息;将一个优先级确定规则应用到该确定步骤所获得的信息;根据该应用步骤的结果,调度从多个排队请求组成的队列进行分派的顺序。
5.权利要求4的方法,其特征在于缓冲器包含在一个对象适配器内。
6.权利要求4的方法,其特征在于,应用步骤的结果是,通过应用优先级确定规则为缓冲器中的各个排队的请求分配优先级值;调度步骤将队列中较高优先级值请求放在较低优先级值请求的前面,使最高优先级值的请求下一个被调度,供服务器对象执行。
7.权利要求4的方法,其特征在于,应用步骤执行的频率由程序员选择。
8.一种在计算机可读介质上存储的计算机程序产品,当用于在计算机上运行时,执行一种在面向对象的异类客户-服务器计算环境中调度并分派客户请求供服务器对象执行的方法,其特征在于包含以下步骤确定关于多个输入的排队的客户请求中各请求的信息;确定关于服务器对象的多个并行的执行线程中各执行线程的信息;将一个优先级确定规则应用到该确定步骤所获得的信息;根据该应用步骤的结果,调度从多个排队请求组成的队列进行分派的顺序。
全文摘要
一种在面向对象的异类客户—服务器计算环境中调度并分派客户请求供服务器对象执行的装置,该装置包含:一个存储请求的缓冲器,缓冲器有一个输入端和一个输出端,前者与一个向该装置输送客户请求的通讯通道相连;与缓冲器输出端相连的多个执行线程;一个调度装置,用于将缓冲器中存储的客户请求分配到多个执行线程,其特点是,调度装置根据一个优先级确定规则来排定缓冲器中存储的客户请求的优先顺序,该优先级确定规则既考虑多个执行线程的状态也考虑被存储的各请求的性质。
文档编号G06F9/46GK1225472SQ9812597
公开日1999年8月11日 申请日期1998年12月31日 优先权日1998年2月4日
发明者T·弗罗因德, I·S·C·豪斯顿 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1