在客户机和服务器之间分配应用任务的方法以及应用服务系统的制作方法

文档序号:7952621阅读:540来源:国知局
专利名称:在客户机和服务器之间分配应用任务的方法以及应用服务系统的制作方法
技术领域
本发明涉及分布式应用、客户机/服务器构形(topography)、语音处理领域,并尤其涉及基于被访问的客户机资源的客户机/服务器应用任务分配。
背景技术
传统的客户机/服务器分布式应用没有考虑客户机在给定时间具有的处理能力的量,并且没有试图使可用的客户机资源与以客户机为中心的任务匹配。相反,客户机/服务器应用通常遵循“一刀切”范式,其中对每个客户机的处理方式与每个其它客户机都相同。对通过客户机可用的处理能力(在可用带宽、CPU能力、存储器和其它资源方面)的忽略会大大减小客户机的响应性。或者,无法访问和利用可用的客户机资源会不必要地消耗服务器资源以及其它有限的网络资源。
一刀切范式的缺陷在运行在具有有限资源的手持设备和其它计算设备上的客户机/服务器应用中尤其成问题。例如,与各种语音应用交互的手持设备例如智能电话(smart phone)、个人数据助理、普及计算设备、嵌入式设备等的广泛应用已使得语音识别和合成成为软件开发的最前沿。语音识别和语音合成能力可消耗极大量的计算资源例如CPU周期、RAM和非易失存储器。另外,利用分布式语音处理应用的设备的能力会有很大的变化。结果,一些客户机设备可本地执行语音处理任务,其它客户机设备可本地执行期望的语音处理任务的一部分,而还有其它的客户机设备不能使用本地资源执行重要的语音处理任务。
因为许多客户机设备具有多任务处理能力,从而当其它活动较低时这些客户机设备可本地执行语音处理任务,但是当执行其它以客户机为中心的任务时缺乏资源来本地执行语音处理任务,这种情况会变得更复杂。
因此,需要这样的机制,其可分析客户机内可用的能力和资源,并可根据该分析在客户机和服务器之间分配应用任务。优选地,此机制能够使用被静态和/或动态确定的客户机资源信息来分配任务。

发明内容
这里给出的主题包括根据文中公开的发明安排的一实施例的用于根据可用的客户机资源在服务器和/或客户机之间分配应用任务的系统、方法和装置。根据可用资源分配任务的一个优点是可因此将相当大的一部分服务器负荷卸载给客户机设备,而客户机设备的用户不会遭受差的性能。
可根据特定于应用的代码进行任务分配,在该代码中软件设计者可为计算密集的任务配置资源阈值。这些阈值可确定是在客户机还是在服务器上执行这些密集的任务。还可自动执行任务分配而不需要显式的开发者代码。开发者可选择的设置可开启或关闭针对开发者可选择的任务的自动任务分配,从而允许设计时的应用优化。因此,所提供的解决方案是非常灵活的方案,其可根据独立于任务的或特定于任务的配置设置来针对所有应用任务或针对所选择的应用任务实施。
例如,所公开的发明可用于在客户机和服务器之间分配语音处理任务。在一个实施例中,当语音处理任务是语音识别任务时,应用程序设计员可指定将在哪里加载语法以及根据语法的大小将在哪里执行语音识别任务。另外,客户机可周期性地将可用资源传达给应用服务器,从而服务器可根据客户机的当前可用的资源调整工作负荷。应用服务器还可向客户机动态轮询资源信息以进行其工作负荷确定。这些确定所基于的资源可包括但不局限于可用的客户机存储器、客户机CPU能力、和用于将数据传送给客户机的网络吞吐量。另外,在具体安排中,应用服务器还可接收对服务器资源可用性的指示,并通过平衡任务的性能需要与客户机和/或服务器的可用资源来作为其工作流程确定的基础。
本发明可根据与文中给出的材料一致的许多方面来实施。例如,本发明的一个方面可包括用于在客户机和服务器之间分配应用任务的软件方法。该方法可包括检测用于执行至少一个应用任务的基于客户机的计算资源的步骤。可将检测到的基于客户机的计算资源的至少一个指示传送给位于远程的应用服务器,并且远程服务器可根据至少一个指示确定是将至少一个应用任务分配给客户机还是服务器组件。
本发明的另一个方面可包括应用服务系统,该系统包括服务器引擎、客户机引擎、负荷分析器和负荷分配器。服务器引擎可位于应用服务器内,并且可被配置为选择性地执行用于应用服务器的至少一个应用任务。客户机引擎可位于在应用服务器的远程位置的客户机内,并且可被配置为选择性地执行用于应用服务器的一个或多个应用任务。负荷分析器可检测客户机的计算资源,并将此检测到的计算资源的指示传送给负荷分配器。负荷分配器可根据从负荷分析器接收到的指示选择性地在服务器引擎和客户机引擎之间分配应用任务。
应指出,本发明的各方面可实现为用于控制计算设备以实现文中所述的功能的程序,或使计算设备能够执行对应于文中所述的步骤的过程的程序。此程序可通过将该程序存储在磁盘、光盘、半导体存储器、任何其它的记录媒介内被提供,或者也可作为经由载波传递的被数字编码的信号被提供。所述的程序可以是单个程序,或者可被实现为多个子程序,每个子程序与单个计算设备交互或者以分布方式在网络空间内交互。


附图中示出目前优选的实施例,但是应理解本发明并不局限于所示的精确安排和手段。
图1是示出根据文中公开的发明安排的一实施例的分布式应用服务系统的示意图,该系统根据客户机资源在客户机和应用服务器之间分配任务。
图2是根据文中公开的发明安排的一实施例的根据客户机资源在客户机/服务器环境中分配应用任务的系统的流程。
图3是根据文中公开的发明安排的一实施例的用于在客户机和服务器之间分配应用任务的方法的流程图。
具体实施例方式
图1是示出根据文中公开的发明安排的一实施例的分布式应用服务系统100的示意图,该系统根据客户机资源在客户机120和应用服务器群集130之间分配任务。系统100可包括经由网络140通信连接到应用服务器群集130的客户机120。客户机120可包括客户机引擎122,该引擎是客户机120内的用于执行一个或多个任务的计算空间。应用服务器群集130可利用语音服务器132来执行一个或多个任务。例如,语音服务器132可管理TTS引擎群集134和/或识别引擎群集136,它们可分别执行文本到语音任务和语音识别任务。
在一个实施例中,客户机120可位于具有有限资源的计算设备例如手持设备、嵌入式设备、普及计算设备等中。具有有限资源的计算设备常常利用小型的操作系统平台,该平台可以是为包括或嵌入在移动或其它空间受限的设备内而设计的、桌面操作系统的缩小版本。例如,计算设备可利用来自加利福尼亚Sunnydale的PalmSource公司的Palm OS、嵌入式Linux操作系统等。客户机120还可位于与个人数据助理(PDA)或智能电话相比具有较少受限制的资源但是仍然局限于可定义的一组计算资源的传统计算设备例如台式计算机或笔记本计算机内。
负荷分析器112可以是分析客户机120的配置以及在任何给定时间点上可用于客户机120的计算资源124的计算组件。如这里所用的,计算资源124可包括可适当影响客户机120执行任务的能力的任何资源。更具体地,计算资源可包括但不局限于存储器、CPU能力和用于与客户机120交换数据的通信吞吐量水平。
在一个实施例中,负荷分析器112可以是客户机120的软件组件。在其它实施例中,负荷分析器112可以是应用服务器群集130的组件、独立的应用、网络140的网络元件的硬件或软件内包含的例程等。
负荷分配器114可根据从负荷分析器112接收到的指示在语音服务器132和客户机引擎122之间选择性地分配应用任务116,其中所述指示传达关于资源124的信息。在一个实施例中,负荷分配器114可以是应用服务器群集130的软件组件。在其他实施例中,负荷分配器114可以是客户机120的组件、独立的应用、网络140的网络元件的硬件或软件内包含的例程等。
在一个具体实施例中,负荷分配器114可确定执行所识别的应用任务所必需的资源水平。此外,负荷分配器114在确定必需的资源水平时,可考虑期望的性能水平、应用任务的执行时间需求以及其它这样的因素。负荷分配器114在进行任务分配确定时可利用被确定的资源水平、期望的性能水平、资源指示以及多个推理规则。
在另一个实施例中,特定的推理规则可根据建立的资源下限或建立的资源上限进行操作。具有被负荷分配器114确定为低于该资源下限的资源需求的应用任务116可总是被分配给客户机引擎122。具有高于资源上限的资源需求的应用任务可总是被分配给语音服务器132。具有位于该下限和上限之间的资源需求的应用任务可被负荷分配器114根据客户机120的当前可用的资源分配。
在又一个实施例中,负荷分配器114的资源分配可以是基于特定于正被分配的应用任务的类型的因素以及其中相关联的准则进行的。例如,当应用任务是语音处理任务时,负荷分配器114的确定可以是根据特定于语音处理的因素做出的。
更具体地,可被分配的一种类型的语音处理任务包括语音识别任务。任务分配器114可至少部分地根据语音识别任务中使用的语法的大小来选择性地分配语音识别任务。例如,可使用下面的伪代码来实现特定于语音识别任务的分配如果语法小(例如包括美国50个州),则将语音识别任务分配给客户机引擎122<grammar src=″state.jsgf″reco=″local″/>
如果语法大(例如包括100000个街道名称),则将语音识别任务分配给语音服务器132<grammar src=″streets.jsgf″reco=″server″/>
如果语法中等(例如包括一个州中的300个城市),则根据可用的客户机120的资源选择性地分配语音识别任务<grammar src=″cities.jsgf″reco=″resource_availability_dependent″/>
应理解,“语法小”的情况代表资源需求下限的实现,“语法大”的情况代表资源需求上限的实现。此外,下限和上限可被特别地配置以考虑客户机210的硬件和软件配置。例如,对于移动电话,“小”可被定义为包括50个或更多的条目,但是对于更稳健的计算平台例如个人数据助理,“小”可包括数千个条目。
另一种类型的可被分配的语音处理任务包括文本到语音转换任务。负荷分配器114可至少部分地根据文本到语音转换任务的复杂性来选择性地分配该文本到语音转换任务。复杂性可基于多种因素中的任何一个,这些因素包括但不局限于将被转换的文本的长度、得到的语音的音质、以及该文本到语音转换任务所需的多种语言(混合语言TTS)。例如,可使用下面的伪代码来实现特定于文本到语音转换任务的分配。
如果TTS复杂性低,则将TTS转换任务分配给客户机引擎122<prompt tts=″local″/>
如果TTS复杂性高,则将TTS转换任务分配给语音服务器132<prompt tts=″server″/>
如果TTS复杂性中等,则根据可用的客户机引擎120的资源来分配TTS转换任务<prompt tts=″resource_availability_dependent″/>
如图中所示,网络140可代表能够传送被数字编码的信息的任何通信机制。网络140可包括电话网络例如公共交换电话网络(PSTN)或移动电话网络、计算机网络例如局域网或广域网、电缆网络、卫星网络、广播网络等。此外,网络140可使用无线以及基于线路的通信路径。可根据任何通信协议例如基于包的通信协议或基于电路的通信协议经由网络140传送被数字编码的信息。
应理解,文中公开的本发明并不局限于语音处理应用,而是还可应用于其它应用从而其它应用可利用文中详细说明的动态卸载技术。当与其他应用一起使用时,可将语音服务器132替换为执行用于所述其他应用的一个或多个任务的一个或多个服务器引擎132。
应理解,图1中所示的安排仅用于说明的目的,且本发明在这方面是不受限制的。客户机120和应用服务器群集130都可以分布的方式或集中的方式来实现。例如,尽管典型的情况是从群集例如应用服务器群集130来提供应用,但是这里也考虑了非群集的服务器体系结构例如包含单个、独立的应用服务器的体系结构。
另外,可归于系统100的各个组件的功能可以与文中所示的方式不同的方式组合或分开。例如,在本发明的一个实施例中,负荷分析器112和负荷分配器114可被实现为单个集成的组件。在本发明的另一个实施例中,负荷分析器112的功能可在多个分离的软件组件中实现。
图2是根据文中公开的发明安排的一实施例的根据客户机资源在客户机/服务器环境中分配应用任务的系统200的流程。在一个实施例中,系统200可代表系统100的信息流。在这种实施例种,应用服务器205、负荷分析器210、负荷分配器215、客户机引擎220和服务器引擎230可分别对应于应用服务器群集130、负荷分析器112、负荷分配器114、客户机引擎122和语音服务器132。但是,系统200并不局限于此,而是可在任何能够根据客户机资源分配任务的系统的情境中执行。
在系统200中,如流程250所示,可从客户机引擎220向负荷分析器210传送详细描述客户机的硬件和软件配置以及能力的客户机规格说明。在一个实施例中,可在客户机注册期间或当客户机的用户远程连接到应用服务器205时执行流程250。另外,可使用客户机规格说明信息来建立特定于客户机的阈值。
在流程252中,负荷分析器210可向客户机引擎220轮询可用资源。特别地,客户机可位于多任务计算环境中,其中可在客户机上执行可能与应用服务器205提供的应用无关的多个任务。可用资源可以是影响客户机的处理应用任务的能力的任何资源,例如存储器、可用CPU周期以及应用服务器205和客户机引擎220之间的可用网络吞吐量。在流程254中,客户机引擎220可向负荷分析器210指示可用资源。流程252和响应流程254可不时地被重复以保持对资源可用性的精确报告。
在流程260中,可从应用服务器205将应用任务传送给负荷分配器215。如流程262所示,如果该任务所需的资源水平低于下阈值,则负荷分配器215可将该任务分配给客户机引擎220。在流程264中,如果该任务所需的资源水平高于上阈值,则可将该任务传送给服务器引擎230。
流程262和264是可选的和可分开实施的流程,其在被实施时可以是可配置的值。建立下阈值和上阈值的优点是加速任务分配。例如,当任务比较不重要并且消耗很少的资源时,下阈值允许将该任务自动分配给客户机引擎220以便本地执行。当任务非常消耗资源以至于客户机永远不能在期望的能力限制内执行该任务时,上阈值可允许将该任务自动分配给服务器引擎230。在一个实施例中,可根据客户机规格说明250在特定于客户机的基础上自动调整这些可配置的阈值。
在流程266中,当用于应用任务的资源水平位于下阈值和上阈值之间时,负荷分配器215可向负荷分析器210查询可用的客户机资源。此步骤也在其中可选地没有实施流程262和/或264的实施例中执行。在流程268中,负荷分析器210可将用于确定是否有足够的客户机资源可用于该应用任务的数据返回给负荷分配器215。在流程270中,当资源可用时,负荷分配器215可将任务分配给客户机引擎220。在流程272中,当资源不可用时,负荷分配器215可将任务分配给服务器引擎230。
图3是根据文中公开的发明安排的一实施例的用于在客户机和服务器之间分配应用任务的方法300的流程图。方法300可在系统100和/或系统200的情境中执行。但是方法300在这方面是不受限制的,并且可在其中根据客户机的资源在客户机和服务器之间分配分布式应用的资源的任何系统的情境内执行。客户机的资源可通过客户机的硬件规格说明静态地确定,和/或通过间歇地确定客户机可用于执行应用服务器任务的资源来动态地确定。
方法300可在步骤315开始,在该步骤可检测基于客户机的资源。在步骤310,可将检测到的资源指示给应用服务器。在步骤315,可判定是否更新资源信息。当将更新客户机的资源时,该方法可从步骤315循环回步骤305。更新资源可通过从应用服务器轮询客户机、通过周期性地使客户机将可用资源公布到应用服务器、通过这两种技术的组合或通过其它这样的技术发生。当在步骤315中不更新客户机的资源时,该方法可转到步骤320,在该步骤可识别将被执行的应用任务。在此步骤还可确定执行该应用任务需要的通常的资源水平。
例如,当该应用任务是语音识别任务时,可使用用于语音识别话语的语法的大小来确定所需的资源水平。在另一个实施例中,当应用任务是文本到语音转换任务时,可使用转换的复杂性来确定所需的资源水平。
在可选步骤325中,当用于该任务的资源水平低于指定的资源下限时,该方法可跳到步骤340,在该步骤可将该任务分配给客户机。否则该方法可转到步骤330。在可选步骤330中,当该任务的资源水平高于指定的资源上限时,该方法可跳到步骤345,在该步骤可将该任务分配给服务器。否则,该方法可转到步骤335。
在步骤335中,可确定客户机是否具有足够的可用资源以在可接受的性能水平上执行任务。当客户机具有足够的资源时,该方法可转到步骤340,在该步骤可将该任务分配给客户机。当在步骤335中客户机不具有足够的可用资源时,该方法可从步骤335转到步骤345,在该步骤可将该任务分配给服务器。
该方法可从步骤340或345前进到步骤350,在该步骤该方法可通过循环回步骤315而继续执行,在该步骤315,可更新资源可用性,并且可识别并根据客户机资源可用性分配另外的应用任务。
本发明可在硬件、软件或硬件和软件的组合中实现。本发明可在一个计算机系统中以集中的方式实现,或者以其中不同元件分散在一些互连的计算机系统上的分布方式实现。适于执行文中所述的方法的任何类型的计算机系统或其它装置都是适合的。典型的硬件和软件的组合可以是具有这样的计算机程序的通用计算机系统,该计算机程序在被装载和执行时控制该计算机系统以便该系统执行文中所述的方法。
本发明还可被包含在计算机程序产品中,该计算机程序产品包含可使能实现文中所述的方法的所有特征,并且当被装载在计算机系统中时能够执行这些方法。本上下文中的计算机程序是指旨在使具有信息处理能力的系统直接地或在以下任何一个或全部的操作之后执行特定功能的一组指令的以任何语言、代码和符号表示的任何表达a)转换成另一种语言、代码或符号;b)以不同的物质形式再现。
本发明可体现为其它形式而不会背离本发明的精神或基本属性。因此,应参照下面的权利要求而不是前述说明来指示本发明的范围。
权利要求
1.一种用于在客户机和服务器之间分配应用任务的软件方法,该方法包括以下步骤检测能够执行至少一个应用任务的基于客户机的计算资源;将该检测到的基于客户机的计算资源的至少一个指示传送给位于远程的应用服务器;以及该应用服务器根据该至少一个指示确定是将至少一个应用任务分配给客户机还是分配给服务器组件。
2.根据权利要求1的方法,其中,所述检测步骤还包括动态检测当前可用的基于客户机的资源,其中该方法还包括以下步骤在所述应用服务器操作时重复所述动态检测和传送步骤,从而该确定步骤是基于被间歇地更新的信息进行的。
3.根据权利要求1的方法,其中,所述确定步骤还包括以下步骤将由所述至少一个指示指示的基于客户机的计算资源与相关于所述应用任务的至少一个先前确定的资源阈值相比较;以及当所述基于客户机的计算资源有利地比较该先前确定的资源阈值时,将该至少一个应用任务分配给客户机,否则将该至少一个应用任务分配给服务器组件。
4.根据权利要求1的方法,还包括以下步骤为应用服务器任务建立资源下限;将与小于该资源下限的资源需求相关联的所有应用服务器任务分配给客户机。
5.根据权利要求1的方法,还包括以下步骤为应用服务器任务建立资源上限;将与大于该资源上限的资源需求相关联的所有应用服务器任务分配给服务器组件。
6.根据权利要求2的方法,还包括以下步骤为应用服务器任务建立资源下限;将与小于该资源下限的资源需求相关联的所有应用服务器任务分配给客户机;为应用服务器任务建立资源上限;将与大于该资源上限的资源需求相关联的所有应用服务器任务分配给服务器组件;以及执行所述确定步骤以选择性地分配具有位于该资源下限和资源上限之间的资源需求的所有应用服务器任务。
7.根据权利要求1的方法,其中,所述至少一个应用服务器任务包括语音识别任务,且其中所述确定步骤至少部分地基于该语音识别任务中使用的语法的大小。
8.根据权利要求7的方法,还包括以下步骤建立下语法大小,其中将使用具有低于所述下语法大小的相关联的大小的语法的所有语音识别任务分配给客户机。
9.根据权利要求7的方法,还包括以下步骤建立上语法大小,其是将使用具有高于所述上语法大小的相关联的大小的语法的所有语音识别任务分配给服务器组件。
10.根据权利要求1的方法,其中,所述至少一个应用服务器任务包括文本到语音转换任务,且其中所述确定步骤至少部分地基于该文本到语音转换任务的复杂性。
11.根据权利要求10的方法,其中,所述复杂性是根据将被文本到语音转换的文本的长度和得到的文本转换的语音所需的音质中的至少一个确定的。
12.根据权利要求10的方法,其中,所述复杂性是根据生成文本到语音结果所需的多种语言确定的。
13.一种应用服务系统,该系统包括位于应用服务器内并被配置为选择性地执行用于该应用服务器的至少一个应用任务的服务器引擎;位于在所述应用服务器的远程位置的客户机内并被配置为选择性地执行用于该应用服务器的所述至少一个应用任务的客户机引擎;被配置为检测所述客户机的计算资源并将这些被检测到的计算资源的指示传送给负荷分配器的负荷分析器;以及被配置为根据从该负荷分析器接收到的指示选择性地在该服务器引擎和该客户机引擎之间分配应用任务的负荷分配器。
14.根据权利要求13的系统,其中,所述负荷分析器被配置为动态确定用于所述客户机的当前可用的资源,并且其中该负荷分配器根据当前资源可用性将应用任务分配给该客户机。
15.根据权利要求13的系统,其中,所述负荷分析器位于该客户机内,且其中该客户机是手持计算设备。
16.根据权利要求13的系统,其中,所述负荷分析器检测的计算资源包括客户机的存储容量、客户机的CPU能力、和用于与客户机交换数据的通信吞吐量水平中的至少两个。
17.根据权利要求14的系统,其中,所述负荷分配器还包括资源下限,其中具有低于该资源下限的资源需求的应用任务总是被分配给所述客户机引擎;资源上限,其中具有高于该资源上限的资源需求的应用任务总是被分配给所述服务器引擎;
18.根据权利要求13的系统,其中,所述应用任务包括至少一个语音识别任务,且其中所述负荷分配器至少部分地根据该语音识别任务中使用的语法的大小来选择性地分配该语音识别任务。
19.根据权利要求13的系统,其中,所述应用任务包括至少一个文本到语音转换任务,且其中所述负荷分配器至少部分地根据该文本到语音转换任务的复杂性分配该文本到语音转换任务,其中复杂性是基于选自包括将被转换的文本的长度、得到的语音的音质、以及该文本到语音转换任务所需的多种语言中的组的至少一个因素。
20.一种机器可读的存储器,在该存储器上存储有具有多个代码部分的计算机程序,所述代码部分可被机器执行以便使该机器执行以下步骤检测能够执行至少一个应用任务的基于客户机的计算资源;将该检测到的基于客户机的计算资源的至少一个指示传送给位于远程的应用服务器;以及该应用服务器根据该至少一个指示确定是将至少一个应用任务分配给客户机还是分配给服务器组件。
全文摘要
一种用于在客户机和服务器之间分配应用任务的软件方法可包括检测用于执行至少一个应用任务的基于客户机的计算资源的步骤。可将该检测到的基于客户机的计算资源的至少一个指示传送给位于远程的应用服务器,该应用服务器可根据该至少一个指示确定是将至少一个应用任务分配给客户机还是分配给服务器组件。
文档编号H04L29/00GK1819576SQ20061000730
公开日2006年8月16日 申请日期2006年2月7日 优先权日2005年2月11日
发明者C·阿加皮, C·W·小克罗斯, N·D·梅蒂亚努, P·D·帕特尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1