CN1294492C - 动态调整活动资源的工作负荷的方法和系统 - Google Patents
动态调整活动资源的工作负荷的方法和系统 Download PDFInfo
- Publication number
- CN1294492C CN1294492C CNB200410092682XA CN200410092682A CN1294492C CN 1294492 C CN1294492 C CN 1294492C CN B200410092682X A CNB200410092682X A CN B200410092682XA CN 200410092682 A CN200410092682 A CN 200410092682A CN 1294492 C CN1294492 C CN 1294492C
- Authority
- CN
- China
- Prior art keywords
- working load
- group
- resource
- server
- key word
- 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 - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
Abstract
动态调整与至少一个父工作负荷组相关的活动资源的工作负荷的方法、系统和计算机程序。父工作负荷组包括一批工作负荷单元,每个工作负荷单元与一个关键字标识符相关,以致在关键字标识符的指定深度值下,属于该父工作负荷组的工作负荷单元共享相同的一系列值。活动资源独立确定是否存在过载情况。如果存在过载情况,那么增大父工作负荷组的深度值。如果存在欠载情况,那么活动资源还可合并工作负荷组。动态调整活动资源的工作负荷可被用作方法或系统的一部分,动态调整动态变化的一组活动资源内,分布式计算应用程序的工作负荷,随后把实体重定向到动态变化的目标资源。
Description
技术领域
本发明涉及分布式计算和面向实用程序的计算,其中一组计算设备协同提供特定的服务或功能。更具体地说,本发明涉及分布式的基于服务器的应用模型,其中单个应用程序客户机设备通过常规的通信基础结构,与一组动态变化的服务器应用程序中的一个或多个成员连接,并交换数据。
背景技术
分布式计算指的是一种计算机结构,其中一组计算设备(通常称为服务器)共同提供一种或多种与计算相关的服务。随着因特网的日益普及,分布任意特定应用中涉及的计算和处理已成为非常普通的实践,因为它允许在多个服务器间均分计算负担,有助于减少灾难性的单点故障。因此,许多不可缺少的基于因特网的服务,例如用于把机器主机名称解析成IP地址的域名服务(DNS)或流行的Google搜索引擎,被实现成分布式服务,同时多个计算机协同支持大量的用户(通常称为客户)。
任意分布式系统必须提供负载分配机制,因为服务器必须使用某一协议协商或决定在组成服务器之间分配总的工作负荷的方式。总的工作负荷本身可被认为由抽象工作负荷空间定义。除了其它许多东西之外,该空间可由应用程序特定的(application-specific)对象(例如文件或其它数据元素)组成。可按照两种不同方式之一,在协作的分布式环境中管理总的工作空间。
1.划分:每个服务器负责总的工作负荷空间的某一部分。按照这种策略,在不同的服务器间划分应用程序(例如分布式文件系统保存的文件)的总工作空间,同时工作空间元素的每个单个组件被分配给特定的服务器。关心取回或修改特定组件的客户机随后必须被路由到负责工作空间的对应部分的服务器。
2.复制/克隆:整个工作空间(应用程序的整个内容)被复制到每个组成服务器,从而每个服务器能够起独立应用程序的作用。在这种方法中,所有服务器的内容相同:在每个服务器存在每个单独组件的副本。从而,关心取回或修改状态元素的客户机能够与任意单个服务器交互作用。服务器负责使所有其它服务器被告知任意组件的状态的任意变化。
许多有趣并正在出现的分布式计算应用程序的特征在于快速变化或动态改变的组件。这些组件可包括保存在服务器上的内容,或者由客户机产生的内容。这样的应用程序包括(但不限于)多人在线游戏,遍布数据源的目录服务和车辆信息的分布式存储(远程信息处理)。对于这样的应用程序,复制一般不可行,因为在多个服务器保持快速变化的组件的相同副本的开销是不可接受的。因此,这种分布式应用程序采用划分来散布处理负载。但是,负载散布的多数当前实现具有两种基本限制:
1.先验确定其间分配应用程序的服务器的数目。通常,使用一些离线技术,例如预报客户机负载的预测被用于计算所需服务器的数目。一旦一组服务器被专用于特定的应用程序,即使负载水平从它们的预测轮廓突然增大或减小,这些服务器一般仍然被委托给该应用程序。
2.该组组成服务器之间责任的划分也先验确定。从抽象的观点来看,该划分通常基于某一名称空间的分割。例如,通过规定每个服务器负责字母表的一个唯一字母(例如服务器1管理名称始于“A”的所有文件,服务器2管理名称始于“B”的所有文件,等等),一组26个服务器能够划分保存文件的责任,或者能够分配不同的服务器处理不同的因特网域名(例如,服务器1处理.com,而服务器2处理.org等)。
常规的分布式计算应用程序的一个缺陷是它们一般缺少资源的按需分配。多数时候,应用程序的运行成本基于它消耗的计算资源的数量(例如,服务器的数目)。如果该数目固定并且被先验确定,那么它通常基于峰值负载(最坏情况)估计。这种基于峰值的规定通常是不可接受的,因为即使当负载可能很低,并且能够由一组少得多的服务器服务时,该应用程序也会导致浪费。通过使额外服务器的部署随当前负载而变,分布式应用程序能够显著减少其对计算设备的平均数目的需要。一种有效的解决方案理应在工作负荷的高峰期间增大服务器的数目,类似地,当工作负荷强度变小时,减小参与服务器的数目。
当前的分布式应用程序方案的另一缺陷是缺少工作负荷划分的自适应。为了有效利用一组指定服务器,应用程序必须能够动态修改分配给各个服务器的划分(总工作空间的多个部分)。自适应划分的基本思想是允许面临意料不到的高工作负荷(或者其它一些问题)的服务器无缝地把其一些职责转移给目前具有备用容量的一个或多个备选服务器。借助这种形式的自适应划分,分布式系统能够响应实际工作负载的变化,调整职责的分配。按照这种方法,应用程序的容量可由所有服务器的累积容量定义,而不会受阻于单个服务器的容量,因为应用程序现在能够动态地把负载重新从过载服务器分配给欠载服务器。
发明内容
本发明通过支持按需资源分配和自适应工作负荷划分,解决了上面提及的常规分布式应用程序的限制。本发明的一种方法使用一种紧凑的表示法(称为标识符关键字)以数学上方便的方式,表示应用程序的各个组件。从而,应用程序的总的组件空间由所有标识符关键字的集合定义,所有标识符关键字的集合实质上定义一个标识符关键字空间。这样,负载分配从而等同于修改在数目可变的服务器间,标识符关键字空间的划分。逻辑上,工作空间的划分可被认为代表标识符关键字(或应用程序组件)的分组或群集。在任何情况下,目前参与该应用程序的每个服务器负责一个或多个不同(不重叠的)群集,以致每个群集代表一批标识符关键字。一般来说,群集越大,组合在一起,由单个服务器管理的一组关键字越多。为了实现在许多服务器之间的负载分配,一个群集被分解成较小的多个子群集,并且这些子群集中的一个或多个被重新分配给备选服务器。这些备选服务器可以是目前正在参与应用程序的服务器,或者指派处理增加的应用程序工作负荷的新的(另外的)服务器。本质上,标识符关键字空间被重新划分,一些现有的分割部分被拆分成两个或更多较小的部分,这些部分中的一些被分配给备选服务器。这种自适应工作负荷划分策略具有吸引力,因为聚类和解聚操作可由每个组成服务器独立进行,在各个服务器之间不需要任何中心协调。从划分的观点来看,该方法实现本地再划分(按照独立的方式拆分每个分割部分),而不是所有现有分割部分的全局再调整。
本发明的一个例证方面是一种动态改变应用程序特定的对象被群集成组的粒度,并响应变化的工作负荷倾斜(workload skew),使用该动态粒度调整来调整在数目可变的服务器设备间的工作负荷划分的机制。调整工作负荷粒度允许应用程序调整分配给任意单个服务器的工作量,并提供在多个服务器间更有效地分配负载的能力。任意单个群集(或者一组标识符关键字)总是被分配给单个服务器。因此,标识符关键字组表示一组分布式服务器间负载分配的基本单位。通过使标识符关键字组变小或变大,本发明便于动态控制分配给单个服务器的工作负荷的数量。
本发明的另一例证方面是一种向应用程序按需分配计算资源(服务器)的机制。本发明的这方面不仅允许改变群集的粒度,还允许产生新的子群集。通过组合子群集产生和把新的子群集映射到新服务器的机制,能够根据负载,修改在其间分配整个关键字空间的计算设备(服务器)的数目。一般来说,每个群集被映射到唯一的服务器。因此,当一个群集被拆分成两个或更多较小的子群集,并且每个子群集被映射到可能的新服务器时,分配给该应用程序的服务器的数目增大。类似地,当两个或更多较小的群集被合并成一个较大的群集时,分配的服务器的数目有效减小,因为一组较大的应用程序组件现在被映射到单个服务器,而不是分散在多个服务器之间。
本发明的另一方面涉及在负载分配算法的正式规范中使用的标识符关键字的形成。借助称为标识符关键字的任意串,表述定义a)应用程序的状态,和b)客户机与服务器的交互作用的组件。所有可能关键字的总集合被定义为关键字空间。本发明通过把该关键字空间的大小可变的分割部分分配给不同的服务器,发生作用。可变分割部分被表示成关键字组;每个关键字组只是共享相同子模式的各个标识符关键字的集合。目前管理特定范围的标识符关键字的服务器随后负责保存和落入该范围中的任意关键字值对应的所有应用程序组件。类似地,希望与该分布式应用程序交互作用的客户机借助关键字值描述其交互作用,并且必须与目前管理该关键字值的服务器完成该交互作用。
负载分配策略的另一例证方面是不是直接把关键字映射到对应的服务器,而是通过另外的间接机制传送它们。在这种方法中,通过定义可变数量(称为与每个群集相关的深度),改变群集大小(关键字组的大小)。深度间接规定串的公共部分,对于属于该群集的所有关键字来说,所述公共部分相同。这种间接映射方法随后获得关键字和深度值,并根据该组合,使用其产生新的标识符(称为散列关键字)。该产生过程具有在串的公共部分中,相同的两个标识符关键字产生相同的散列关键字的性质。散列关键字也具有一个范围,通过利用在本发明范围之外的技术,实质上在所有可用服务器之间划分所述范围。随后,散列关键字被用作识别与特定关键字和特定深度相关的服务器的基础。当改变同一关键字的深度时,相关散列关键字发生变化,导致相对于特定服务器的映射的改变。通过使用这种间接过程,即使所有服务器之间,散列关键字范围的分配始终保持静态,也能够在可变的一组服务器间分配工作负荷。
本发明的另一例证方面涉及一种机制,借助该机制,希望执行关于特定关键字的事务的客户机节点能够识别它们应与之交互作用的恰当服务器。由于标识符关键字与特定服务器的关联取决于负载(并且是动态的),因此客户机必须执行某种查寻,以便确定恰当服务器的身份。不要求客户机知道服务器对关键字的动态管理,也不要求客户机通过联系任意一个或多个特定服务器进行查寻。此外,本发明的一种实现不要求各个服务器知道服务器的组成状态中,标识符关键字空间的全局划分。通过联系任意服务器,客户机能够完成这种查寻。本发明规定一种分布式查寻方法,通过该方法,客户机将重定向到正确的服务器。
本发明的另一例证方面涉及一种机制,借助所述机制,服务器节点能够识别它们应把管理关键字组的某一子组的职责托付给其的备选服务器。源服务器(完成较大组的拆分的服务器)能够独立定义(标识符关键字的)较小子组的构成,随后使用类似于客户机所使用的查寻机制,确定现在应承担一个或多个这些子组的职责的一个或多个目标服务器。一旦确定了目标服务器,源服务器随后向目标服务器发送消息,指令目标服务器开始承担指定子组的职责。本发明允许反复应用这种负载分配策略(目标服务器能够变成子组的源服务器,并对甚至更小的子组重复该拆分策略)。按照类似的方式,子组能够被反复合并成较大的组,有效地把较大的多组标识符关键字群集到单个服务器上。
本发明可包括动态调整活动资源的工作负荷的方法。工作负荷被表示成一组单元,每个单元包括它自己的关键字标识符。活动资源与至少一个父工作负荷组相关,父工作负荷组包括一批工作负荷单元,以致在它们的关键字标识符的指定深度,属于父工作负荷组的工作负荷单元共享相同的一系列值。此外,所述相同的一系列值定义与父工作负荷组相关的一组关键字标识符。该方法包括活动资源独立确定在活动资源存在过载情况的确定操作。如果存在过载情况,那么增大操作增大父工作负荷组的深度值,以致识别至少两个子工作负荷组,指派操作指派一个目标资源管理至少一个子工作负荷组。
还包括根据本发明,在动态变化的一组分布式资源内运行分布式计算机应用程序的系统。系统中的每个服务器被配置成独立评估它自己的工作负荷状况,并确定组关键字标识符的产生或合并,从而减少或增大其工作负荷。此外,响应整个工作负荷的变化,分布式计算中涉及的资源的数目动态变化。系统包括一组活动资源,所述一组活动资源协作管理构成整个工作负荷的整个一组关键字标识符,每个资源管理动态变化的一组关键字标识符。根据需要,其活动资源构成子集的整个一组资源被用作分布式计算机应用程序的一部分。系统还包括一个映射设备,所述映射设备采用与至少一个关键字标识符相关的虚拟关键字作为输入,并被配置成产生来自整个资源组的目标资源的身份,作为输出。另外,一组客户机实体利用所述分布式应用程序,这里,每个客户机实体与至少一个关键字标识符相关,并且动态确定它目前所属的取决于负载的那组标识符关键字。
本发明的动态调整活动资源的工作负荷的另一例证系统包括多个工作负荷单元。每个工作负荷单元与一个关键字标识符相关。系统包括一个父工作负荷组,所述父工作负荷组包括一批工作负荷单元,其中在关键字标识符的指定深度值下,属于父工作负荷组的工作负荷单元共享相同的一系列值。另外,一个活动资源管理父工作负荷。活动资源被配置成如果在活动资源存在过载情况,那么增大父工作负荷组的深度值,以致识别至少两个子工作负荷组,并指派一个目标资源管理至少一个子工作负荷组。
本发明的另一例证方面是一种包括动态调整活动资源的工作负荷的计算机可读程序代码的计算机程序。活动资源与至少一个父工作负荷组相关,该父工作负荷组包括一批工作负荷单元。每个工作负荷单元与一个关键字标识符相关,以致在关键字标识符的指定深度值下,属于父工作负荷组的工作负荷单元共享相同的一系列值。所述程序被配置成确定在活动资源存在过载情况。如果存在过载情况,那么程序增大父工作负荷组的深度值,以致识别至少两个子工作负荷组,并指派一个目标资源管理至少一个子工作负荷组。
根据如附图中图解说明的本发明的各个实施例的更具体说明,本发明的前述及其它特征、效用和优点将变得显而易见。
附图说明
图1表示具体体现本发明的例证网络环境。
图2利用基于位置的分布式系统的例子,表示关键字和分布式系统之间的类属连接,这里,关键字被用于对分层网格中的特定位置编码,根据每个服务器管理的位置区域,在组成服务器中分配工作负荷。
图3表示可利用特定服务器管理的一组关键字,定义在组成服务器之间的工作负荷的划分,以及如何可利用大小变化的关键字组,有效地描述不同服务器管理的不同工作负荷划分。
图4表示较大的群集(一个关键字组)怎样可被连续分解成较小的群集(多个较小的关键字组),以及通过二进制树,表示这种拆分过程的逻辑表示。
图5表示说明一系列步骤的例证流程图,通过所述一系列步骤,一个候选关键字组被服务器拆分成两个或更多的关键字子组,一个或多个关键字子组随后被分配给其它服务器。
图6表示接收指定特定关键字和深度组合的请求的服务器,确定它是否应处理该请求的例证流程图。该流程图还表示在服务器确定关键字和深度组合不正确,或者请求应由另一服务器处理的情况下,应答该请求所需的逻辑步骤。
图7是详细说明试图在任何情况下,确定特定关键字的恰当服务器的客户机采取的识别所述恰当服务器的步骤的例证流程图。该确定过程实质上涉及试出与该关键字相关的可能深度的范围,并反复检查对应的关键字组是否正在任意服务器被有效管理。
图8表示自适应负载分配技术如何能够组合工作负荷的基于关键字的表示法,和用于可缩放的高效负载重定向的分布式散列表(DHT)基元。该图说明如何可把关键字与可变深度联系起来,以及如何使用基于该深度的虚拟关键字的形成,把相同的标识符关键字引向不同的服务器。从而,深度参数提供一种极其便利的隐含改变从某一关键字到目标服务器的映射的方式。
图9表示一组分布式服务器如何能够交换本地信令消息,确定何时工作负荷已被充分减小,从而把多个子组合并成一个较大组的实施例。这些步骤包括把负载信息从子服务器(管理活动关键字组的服务器)交换给父服务器(拆分较大组,从而产生这些较小群集的服务器),随后使父服务器指令恰当的子服务器把关于较小子组的职责返回给父服务器。
具体实施方式
下面详细说明如何采用本发明,在多个资源之间自适应分配工作负荷。在本发明的整个说明中,参考图1-9。当参考附图时,附图中所示的类似结构和部件用相同的附图标记表示。
图1表示具体体现本发明的例证环境102。注意环境102只是用于举例说明,并代表可实现本发明的无数结构。从而,本发明不应被理解为局限于这里表示和说明的环境结构。
环境102包括与网络106耦接的客户机104。网络106可以是现有技术中已知的,实现环境102中的各种设备之间的通信的任意网络。从而,网络106可以是局域网(LAN),广域网(WAN),或者它们的组合。网络106可被配置成公共网络,例如因特网,和/或专用网络,并且可包括现有技术中已知的各种布局和协议。
根据本发明的一个实施例,客户机104通过网络106,利用至少一个应用程序(application)108(这里也称为服务),例如多人在线游戏。此外,应用程序108分布在与网络106耦接的多个服务器110之间。从而,多个服务器110向客户机104提供相同的应用程序108。如上所述,在服务器110间分配应用程序108有助于均分可能来自数百万客户机104的计算工作负荷,从而任何服务器都不会过载和出故障。
有利的是,可根据应用程序的负载的变化,采用本发明动态调整分布式应用程序108使用的服务器110的数目。还可采用本发明动态控制总工作负荷在一组不断变化的服务器110间的分布,应用程序108分布在所述一组不断变化的服务器110中。如下详细所述,本发明使用关键字的概念来捕捉应用程序108的总工作负荷。每个单独的关键字对应于应用程序工作负荷的某一元素,例如一个数据项(例如一个计算机文件),或者一组应用程序客户机设备,从而应用程序108的总工作负荷由所有可能关键字的工作负荷的集合组成。关键字被分成大小可能不断变化的关键字组(也称为群集)。在任意时候,在属于特定群集的所有关键字由公共服务器处理的意义上,一个群集被看作一个基本单元。从而,应用程序负载的分布式处理等同于使每个服务器负责一个或多个群集。
当特定服务器面临不可接受的负载水平(或者达到指示它必须减少其负载的一些其它条件)时,该服务器只是挑选它目前管理的群集之一,并把该群集分成两个或更多较小的群集(称为子群集)。每个子群集由初始的父群集的关键字子集组成。该服务器随后确定一个或多个另外的服务器,它将把一些负载分给所述一个或多个另外的服务器,并使用信令消息把一些或全部子群集的职责传送给备选服务器。从而,过载服务器实质上把其工作负荷分成较小的部分,可能保留初始工作负荷的某一部分,并把剩余部分转移给一个或多个服务器。
应注意的是相同大小(具有相同数目的关键字)的两个群集不必对相同的工作负荷贡献相同的数量,因为这两个群集可能具有不同数量的底层应用程序元素。例如,考虑每个关键字对应于一个唯一的应用程序客户机设备的应用程序情况。于是,任意群集的工作负荷由与该群集相关的客户机设备的数目确定。由于客户机设备按照不同的方式,偶发地使用应用程序,因此,该群集中的每个关键字并非都活动,即,具有与之相关的活动客户机。于是,不同群集的工作负荷将不同。于是,把一个群集平分成两个大小相同的子群集的过程并不一定意味着底层工作负荷的平分;工作负荷自己可表现出朝着这两个群集之一的可变倾斜。一般来说,正是该倾斜的工作负荷和工作负荷倾斜的动态变化,使得自适应负载分配成为必需。目前处理合理的非活动群集的服务器可能突然发现该群集已变得过于活跃,而不能被处理,使得必需在另外几个服务器中,把该群集分成较小的群集。由于这种分组过程的结果,服务器最终负责整个工作负荷的不同大小的分割部分。当然,可递归应用通过分离较大的群集,产生较小子群集的过程,以致通过使用恰当大小的较小群集,使由尺寸较大的群集表现出的工作负荷的倾斜更均匀地分布。
如下所述,本发明不需要各个服务器间的任意集中协调。通过使用现有技术中已知的任意技术确定某些职责将被转移给的一个或多个目标服务器的身份,过载服务器本地完成负载分离决定。该决定可集中完成(例如使用基于表格的查寻),或者如一个实施例所示,利用分布式查寻机制,例如分布式散列表(DHT)实现来完成。通过消除对任何集中的状态维护的需要,根据本发明的负载分配证明高度可缩放,并且可被用于支持任意极大的服务器组(例如由10000或更多的服务器组成的服务器组)内的自适应负载分配。
本发明还提供一种负载合并机制。当分布式系统的某些部分上的负载足够低,以致可被安全地集合到单个服务器(从而使一个或多个服务器免除管理较小工作负荷的职责),子群集同样可被集合成较大的群集,从而把关键字集合成较大的组。该集合过程也被局部化,因为它只涉及进行初始分离的服务器(称为父服务器)和现在把关于子组的职责返回给父服务器的那些服务器(称为子服务器)之间的交互作用。分离和合并过程都可被递归应用,直到组的粒度(群集的大小)变得适合于当前的应用程序工作负荷为止。此外,只在本地进行组的分离(即由面临过载的服务器进行)。因此,本发明允许在工作负荷的不同部分中,形成大小可变的关键字组,而不要求整个工作负荷的关键字组的大小一致。
由于在数目动态变化的服务器内,关键字组的可变划分的缘故,特定服务器处理的那部分工作负荷根据工作负荷而变化。当服务器处理的工作负荷分割部分发生变化时,应用程序可能还需要把另外的应用程序特定的状态信息或对象转移给服务器,或者从服务器转移出所述另外的应用程序特定的状态信息或对象。这种转移意味着对划分或合并过程的额外开销。对于其中不同的分割部分与在重新划分期间,必须被转移的大量静态数据相关联的常规应用程序,例如数据库或文件系统来说,这种开销很高。但是,存在工作负荷瓶颈主要由不必保存的流式数据或瞬时数据确定的更多应用程序情况(例如,多人视频游戏,基于流式数据的查询)。虽然本发明的负荷划分方案适用于所有分布式计算应用程序,不过本发明特别适合于其中重新划分不涉及静态数据的大量传送的这种面向瞬时数据的应用程序。
为了进一步说明本发明,必须说明“标识符关键字”和分布式应用程序的整个工作负荷之间的关系。图2表示了假定的分布式应用程序,其中根据组织成网格的地理区域,划分工作负荷。例如,分布式应用可在较大范围内跟踪汽车,并回答关于汽车的查询。此外,不同的服务器负责整个地理区域的不同分割部分。图2中,整个区域201被分成一组网格(202~226),每个网格代表区域201可被分成的最小单元。本例中,每个网格202~206由四位二进制标识符关键字(234~258)表示。一般来说,标识符关键字234~258可以是任意长度,并且使用其它基数,例如三进制或四进制。因此,具有标识符关键字值“0011”(246)的网格214代表被分割区域201的最小单元之一。
在本发明的一个实施例中,分级实现对网格的标识符关键字的分配,并且对网格的标识符关键字的分配反映区域间的某一分组法。例如,区域201的整个上半部具有其标识符关键字始于“0”的网格,而区域201的下半部由具有始于“1”的关键字的网格组成。为了以数学方式表示这种最小网格可被组合成较大组的聚类形式,用意味着“不关心”的前缀符号“*”表示各组。因此,区域201的上半部可被表示成“0*”(规定其关键字始于初始模式“0”的所有网格的集合的简写符号)。类似地,表示法“10*”表示整个左下侧象限(包括网格206、208、210和212),因为左下侧象限中的所有网格具有始于模式“10”的标识符关键字238、240、242和244。注意该方法允许根据组的组成成员的共性,以其它形式产生组。例如,某一组可以以前缀为基础,同时组规范识别所有组成网格必须具有的共享尾值。作为一个例子,组“*10”指的是网格204、208、220和224的集合,因为它们分别具有满足规定的关键字模式的标识符关键字236、240、252和256。
现有可明白通过指定特定服务器管理的一个或多个标识符关键字组,如何能够表示组成服务器间地理区域的划分。图3表示了工作负荷划分的一个例子。同样,区域201由网格(202~226)矩阵表示,每个网格与其各自的4位标识符关键字(234~258)相关联。另外,三个服务器,服务器A 302,服务器B 304和服务器C 206分别管理整个区域201的大小可变的部分308、310和312。服务器A管理的职责范围(包括网格202~216)可由组“00*”(对应于关键字“0000”、“0001”、“0010”和“0011”)和组“10*”(对应于关键字“1000”、“1001”、“1010”和“1011”)表示。类似地,服务器B的职责范围(包括网格218和232)可由组“010*”(对应于关键字“0100”和“0101”)表示。最后,服务器C的职责范围可由组“11*”(包括网格222、224、226和228)和“011*”(包括网格220、230)表示。
通过简单地修改它目前管理的一个或多个组,服务器能够根据本发明实现负载分流。例如,假定迄今为止管理由关键字“1000”、“1001”、“1010”和“1011”组成的组“10*”(包括网格206、208、210和212)的服务器A 302停止管理该组,改为开始管理由关键字“1010”和“1011”组成的组“101*”(包括网格208和210)。从而,服务器A 302减少了其工作负荷;虽然先前它管理整个左下侧象限,不过现在它已把其职责范围缩小到左下侧象限的下一行。为了确保所有服务器支持整个工作负荷,某一其它服务器(或者目前空闲,或者正在管理工作空间的某一其它部分)现在应承担由关键字“1000”和“1001”组成的剩余组“100*”(包括网格206和212)的职责。该例子表示通过同等地修改各个标识符关键字组的管理,如何能够实现调整工作负荷划分的问题。
预期根据本发明的工作负荷划分对关键字的映射可应用于任意分布式计算应用程序。任意分布式应用程序的工作负荷划分由相对于各个服务器的大小可变的关键字组的分配表示。标识符关键字可代表一个或多个应用程序特定的属性的编码,根据标识符关键字,划分工作负荷。例如,考虑车辆跟踪应用程序,这里根据车辆的属性分配工作负荷。假定所有车辆具有车辆颜色、车辆制造商和车辆识别号(VIN)等属性,每个属性可具有4个不同的值,并且均被表示成2位。此外,假定颜色属性被编码成蓝色=“00”,红色=“01”,白色=“10”和黑色=“11”。一种可能的分层标识符关键字需要6位,前面的2个最高有效位记录车辆颜色值,中间的2位记录车辆制造商,最后的2位用于VIN。在这种编码方案中,目前管理关键字组“01*”的服务器实质上负责跟踪所有红色汽车。另一方面,管理关键字组“1*”的服务器目前负责跟踪白色和黑色的汽车。在这种系统中,标识符关键字和关键字组具有与它们相关的一些语义含义。
另外预期标识符关键字可代表和任意语义相关属性没有任何关系的任意映射。例如,保存文件的分布式文件系统应用程序可随机地向每个文件分配一个6位二进制数。这种情况下,关键字组“101*”只代表其文件关键字始于“101”的一组文件。由于这种随机分配的缘故,不能使任意其它语义含义和该组文件联系起来。
从而,本发明可应用于任意形式的应用程序工作负荷到标识符关键字的编码,而不管它们是否在语义上相关。为了简化说明,下面用二进制关键字的符号说明本发明,应用程序工作负荷的最小单位被表示成一个N=7位的关键字,N表示各个标识符关键字的总长度。另外,标识符关键字定义工作负荷适应过程,从而,过载的服务器通过把其一些工作负荷重定向给一个备选服务器,分流其一些工作负荷。类似地,接合关键字组的机制定义相反的负载合并过程,从而,通过从备选服务器取回工作负荷,未充分使用的服务器可增大其工作负荷。
如上所述,通过按照分级方式改变服务器管理的关键字组,本发明能够分配或合并工作负荷。每个关键字组与称为深度的参数相关,深度表示帮助定义关键字组的组成标识符关键字的二进制位的数目。在指定的深度位中,关键字组中的所有标识符关键字都相同,但是在剩余的各个位,可能具有不同的值。该深度等于“*”符号之前的符号的数目。例如,关键字组“101*”具有等于3的深度,因为该组的所有组成关键字共享相同的3个起始位“101”。
图4表示增大关键字组的深度如何等同于把较大的关键字组分成两个或更多较小的组。例如,考虑深度=3,并且必须被分离的关键字组“101*”(402)。为了增大关键字组402的深度,关键字标识符“101*”被分成两个关键字标识符“1010*”和“1011*”,通过考虑下一(第4)位位置中的所有可能值,获得这两个关键字标识符“1010*”和“1011*”。从而,关键字组“101*”(402)被分成两个子组:关键字组“1010*”(404)和关键字组“1011*”(406)。显然关键字组402实际上是较小的子组“1010*”(404)和“1011*”(406)的组合。此外,增大组的深度(用两个或更多的子组代替该组)有效地把属于公共组的关键字分散在这些较小的子组中。考虑两个7位关键字“1010110”和“1011110”。虽然它们都是关键字组“101*”的一部分,但是当深度增大到4时,它们落入两个不同的关键字组中;“101011”是关键字组“1010*”的成员,而“1011110”是关键字组“1011*”的成员。于是应注意到增大特定组的深度,并用所得到的较小组代替较大组,是一种产生较小的多组关键字的有效手段。
在本发明的一个实施例中,每个关键字组被映射到单个服务器(或者由单个服务器管理)。通过由较大的组产生两个或更多的子组,较大关键字组的初始负载被分配给两个或更多的服务器。注意相反过程也成立;减小两个或更多子组的深度等同于把两个较小的组合并成一个较大的关键字组。例如,当只在深度=3的情况下考虑关键字组“1010*”和“1011*”时,它们可相同地由较大的关键字组“101*”(深度=3)表示。增大深度的过程也可递归地应用于各个子组。例如,在图4中,深度=4的关键字组“1011*”(406)再次被分成深度=5的两个较小组,“10110*”(408)和“10111*”(410)。可按照两种不同的方式概括深度增加的过程。
1.对于由高阶基数描述的标识符关键字来说,深度增加1用于把关键字组分成许多关键字组。例如,深度=4的三进制关键字“0120*”可被分成深度均等于5的三个子组“01200*”、“01201*”和“01202*”。
2.关键字深度可被增大大于1的值。例如,与二进制关键字“101*”相关的深度(深度=3)可被直接加2,产生深度均等于5的四个不同子组“10100*”、“10101*”、“10110*”和“10111*”。
也可同时应用使用高阶基数的步骤,和把关键字深度增加大于1的值的步骤。
图4还表示了对于二进制关键字组,深度增大如何可被认为由二进制树结构上的不同深度表示。关键字组“1010*”和“1011*”(深度均等于4)是父组“101*”(深度等于3)的子节点。这些关键字组又可具有子节点。例如,关键字组“10110*”和“10111*”(深度均等于5)是关键字组“1011*”的子节点,而关键字组“011100*”和“011101*”(深度均等于6)是关键字组“01110*”的子节点。本发明允许树形结构的不同部分生长到不同的深度。换句话说,根据相关关键字空间的相对“热度”,可在不同的粒度等级,把整个应用程序负载的不同部分群集在一起。
图5中,说明了动态调整活动资源的工作负荷的例证程序的流程图。图5说明了通过有效地把某一部分的工作负荷分散给一个备选过载服务器,分流一些负载的实施例的步骤。注意相反的负载合并过程被推迟到后面参考图9说明。应注意所示的逻辑操作可被实现成(1)在计算系统上运行的一系列的计算机执行的步骤,和/或(2)计算系统内的互连机器模块。所述实现只是取决于实现本发明的系统的性能要求的选择问题。因此,构成这里描述的本发明的实施例的逻辑操作被称为操作、步骤或模块。
控制流程始于确定操作502,在确定操作502,诸如服务器之类的活动资源检查是否存在需要负载拆分的过载条件。一般来说,活动资源与一个父工作负荷组相关。父工作负荷组包括许多工作负荷单元,每个工作负荷单元与一个关键字标识符相关,以致属于父工作负荷组的工作负荷单元共享在关键字标识符的规定深度值之内的一系列相同的值。如果不存在过载条件,那么该程序结束。另一方面,如果确定负载拆分是必需的,那么控制转移到识别操作504。
在识别操作504,活动资源选择要拆分的一个或多个候选工作负荷组。例如在图3,服务器A 302管理具有关键字标识符“00*”和“10*”的工作负荷组308。如果存在过载条件,那么服务器A 302可选择拆分整个工作负荷组308,或者只选择拆分“00*”或“10*”工作负荷组之一。可使用许多算法来确定哪个组,或者哪些组将被拆分。下面详细说明一种这样的拆分算法。返回图5,一旦识别操作504已完成,那么控制转移到增大操作506。
在增大操作506,活动资源增大父工作负荷组的深度值,以致识别至少两个子工作负荷组。从而,管理具有标识符关键字“1010*”(深度值等于4)的父工作负荷组的服务器可产生深度值等于5,并且识别两个子工作负荷组的两个子标识符关键字“10100*”和“10101*”。如上所述,深度值可被增加除1以外的其它增量。在增大操作506完成之后,控制转移到分配操作508。
在分配操作508,分配目标资源,以便管理新产生的子工作负荷组中的至少一个。识别将向其分配子组的目标资源的过程用类属“Map()”函数表示。可以预期的是Map()函数使用各种算法。下面提供并讨论基于DHT,并且不需要任何集中查寻表的例证Map()函数。
在本发明的一个特定实施例中,一旦Map()函数返回目标资源的身份,那么过载的活动资源(例如图3中的服务器A 302)在请求操作510,向目标资源(用于“10100*”的服务器B 304和用于“10101*”的服务器C 306)发送“AccepLoad”消息,指示目标资源现在应承担管理子组的职责。作为职责转移的一部分,活动资源还需要把另外的应用程序特定的对象(即,对应于子组“10100*”和“10101*”的对象)传送给目标资源。
在子工作负荷组职责已被转移给一个或多个目标资源之后,在改变操作512,活动资源使其关于父工作负荷组的映射项非活动。例如,服务器A使其关于“1010*”的项目非活动,指示它不再管理该较大的工作负荷组。该项目被保持为“非活动项目”,指示该服务器过去管理该组,但是目前已把该组拆分成较小的组。换句话说,非活动项目表示二进制树形结构中的对应节点现在具有深度更大的子节点(并且可能具有其它下级节点)。作为映射过程的一部分,允许服务器A把一个或多个子组映射回它自己。
在本发明的一个实施例中,服务器把活动关键字组拆分成两个(或更多)关键字子组,但是随后保留这些子组中的一个(或多个)的职责。这种形式的Map(.)函数允许真实的负载分流,其中过载服务器实质上自己保留某一部分的初始工作负荷,只把剩余的那部分工作负荷分配给备选服务器。在另一实施例中,通过使深度增大较大的数量,服务器能够产生多个子组(例如使深度加3会产生8个子组),随后自己有选择地保留这些子组中的一部分,同时把剩余子组的管理转移给备选服务器。
由于本发明的结果,从特定标识符关键字到对应服务器的映射是动态的。由于在不同的情况下,关键字是(不同深度的)不同活动关键字组的一部分,并且由于这些不同的活动组(在二进制树形结构中,它们共享父-子关系)可能映射到不同的服务器,因此客户机需要动态确定恰当服务器节点的身份。例如在图3中,目前位于网格230(具有关键字“0111”)中的车辆必须完成与服务器C 306的事务处理。但是,在未来某一时刻,服务器C 306可拆分关键字组“011*”(深度=3),保留子组“0110”,并把关于另一子组“0111”的职责移交给服务器B304。网格230中的车辆随后必须动态地重新绑定它自己和服务器B304,或者被重定向给服务器B 304。
一般来说,特定的关键字是被排列成二进制树形结构中的父-子节点的多个关键字组的一个成员。例如,关键字“1010111”是关键字组“*”(深度=0),“1*”(深度=1),“10*”(深度=2),“101*”(深度=3),“1010*”(深度=4),“10101*”(深度=5),“101011*”(深度=6)和“1010111*”(深度=7)的一员。由于负载拆分算法的缘故,在任意时刻,这些关键字组中只有一个活动。关于该特定关键字的事务必须以具有该活动项的节点为目标。
通过使深度还与每个单独的关键字相关联,能够表示关键字相对于其当前活动的关键字组的动态分配。这类似于与关键字组相关的深度的概念。如果假定关键字“1010111”与具有活动项“101*”的服务器交互作用,那么关键字“101011”可被认为目前具有为3的正确深度,这意味着它目前被映射到组“101*”(通过获得该关键字的前3位而形成)。另一方面,如果假定客户机与具有活动项“10101*”的服务器交互作用,那么相同的关键字的当前深度为5,并被映射到组“10101*”(通过获得前5位而形成)。从而,显示客户机的查找正确服务器的过程等同于确定当前活动的与指定关键字相关的深度。
逻辑上,客户机(或者一般地说,试图向其恰当的服务器解析某一关键字的任意请求者)动态查找用于特定关键字的正确服务器的过程如下所示:请求者假定(猜测)该关键字的某一深度,并向与对应关键字组相关的服务器发出探测消息,了解该关键字组目前是否活动。例如,客户机C可猜测关键字“1010111”的深度为3,并向服务器A发出探测消息,以便确定Map()函数是否指示服务器A应负责组“101*”。图6表示了接收规定特定关键字和深度组合的请求的服务器或其它资源,确定它是否应处理该请求的的例证程序的流程图。图6还表示了在该服务器确定关键字和深度组合不正确,或者另一服务器应处理该请求的情况下,所执行的响应该请求的逻辑步骤。
该过程始于接收操作602,在接收操作602,诸如服务器之类的资源接收来自客户机之类的请求者的探测消息,以确定特定的标识符关键字和关键字深度是否活动。当收到探测消息时,被探测的服务器随后可报以“CORRECT”或“INCORRECT”消息,指示猜测是否正确。就“INCORRECT”消息来说,服务器向请求者返回另外的消息。
随后在确定操作604,服务器确定关键字实际上是否是其任意活动关键字组的一个成员,即,该关键字的任意可能前缀目前是否被列举为该服务器管理的各组的一个活动项。如果该关键字活动,那么控制转移到检查操作606,服务器检查匹配的活动关键字组的深度是否与请求者在探测消息中指定的猜测深度“d”一致。如果这两个深度匹配,那么请求者确实猜对正确的深度,并到达正确的服务器,控制转移到发送操作608。在发送操作608期间,服务器返回“CORRECT”消息,回应该正确的深度=d。
在客户机的估计深度不正确的情况下,服务器可能面临两种不同的情况。一种情况下,客户机仍然到达正确的服务器,但是具有错误的深度。例如,假定Map()函数已确定服务器A负责子组“10101*”。虽然项目“101*”非活动(该组已被递归拆分成较小的组),服务器A仍然是关键字“1010110”的正确服务器,虽然深度等于5。这种情况下,控制转移到发送操作610,在发送操作610,服务器向请求者返回“CORRECT”消息,但是指定正确的深度(匹配的活动关键字组的深度)。对于另一种情况来说,当客户机到达错误的服务器时,该服务器返回“INCORRECT”消息,但是具有“最长前缀匹配(LPM)”深度,LPM深度实质上是服务器单独知道的关键字的最接近的原始组的指示。
这里,说明最长前缀匹配(LPM)过程。服务器实质上考虑其所有非活动项目(在先前某一时刻,它主动管理的,但是目前已被拆分成较小组的各组),并在确定操作612,确定(所有这些项目中)从第一位开始的,与客户机的关键字的最长匹配。例如,如果服务器具有关于“01*”、“100110*”和“111*”的非活动项目,那么关于关键字“1010110”的LPM匹配等于2,因为该关键字具有(与项目“100110*”)的两个起始位的最大匹配。一旦深度被确定,控制就转移到发送操作614,服务器在其“INCORRECT”消息中返回该深度(如果根本没有位匹配,那么深度也可以是0)。显然,如果组由其它形式的分层关键字组定义(例如,根据共享的后缀,而不是前缀),那么识别最接近的原始组的过程可能涉及稍微不同的匹配标准(例如,最长后缀匹配)。
为了最后确定正确的服务器,客户机/请求者还必须遵循使用来自服务器的“CORRECT”和“INCORRECT”响应,最终确定正确深度的过程。一般来说,各种迭代方案都是可能的。例如,客户机可从深度=0的值开始,并线性进行到深度的最大可能值,联系每个可能的服务器,直到发现匹配为止。本发明可包含所有这样的深度确定程序。
图7中,表示了本发明预期的例证深度确定程序。该程序始于初始化操作702。在该操作期间,最小搜索范围被设置成0,最大搜索范围被设置成N,这里N是关键字的长度。这是因为关键字的真实深度已知介于0和关键字的长度之间。一旦初始化操作702完成,控制就转移到选择操作704。
在选择操作704,服务器选择介于min和max之间的特定值。作为一种可能的选择技术,客户机可选择(min,max)之间的中点。在选择操作704完成之后,控制转移到发送操作706。
在发送操作706,客户机向关于对应的关键字组指示的服务器发送探测消息。响应该探测消息,该服务器利用上面概述,并示于图6中的逻辑,发送响应(CORRECT或INCORRECT)。服务器返回的参数被称为retDepth参数。在客户机收到该响应之后,控制转移到检查操作708。
在检查操作708,客户机检查服务器是否报以CORRECT消息。如果是,那么服务器响应包含retDepth参数中的真实深度。因此,客户机已确定与该关键字相关的真实深度,控制转移到绑定操作710,把该客户机和正确的服务器绑定在一起,该过程结束。
但是,如果服务器返回INCORRECT消息,那么控制转移到设置操作712,客户机把搜索范围的最小间隔设置成当前最小值或者加1的retDepth值中的较大者。这种选择由指定retDepth的INCORRECT消息意味着与关键字相关的真实深度必须至少为retDepth+1的观察结果激发。一旦赋予了新的最小间隔值,那么控制转移到检查操作714。
在检查操作714,客户机随后检查retDepth值是否也小于客户机的猜测深度(在先前的探测消息中发送)。如果是,那么控制继续进行设置操作716,客户机还把搜索的最大范围调整为先前的猜测值。这部分逻辑由下述观察结果激发,即,如果客户机的真实深度确实大于猜测值,那么分布式系统必须具有深度=猜测深度的组的非活动项目,因为只有通过拆分已变成非活动项目的较大组,才能形成(具有较大深度的)较小子组。由于客户机的请求不能发现深度=猜测深度的非活动项目,因此这意味着真实深度必须小于猜测深度。客户机随后将在修改后的范围内重复搜索算法。继续该过程,直到客户机能够获得正确的服务器;具有包括该关键字的活动项目的那个服务器为止。
如上所述,本发明和任意正确设计的Map(.)函数一起工作,只要Map()函数能够向恰当的服务器解析关键字组(活动或非活动)。该映射函数可以是集中的(每个请求者必须联系特定的计算节点,以便确定发送操作706中对应服务器的身份),或者是分布式的(映射保存在多个节点中)。这种映射函数的一个实施例可以是包含从每个唯一关键字组到特定服务器的一对一映射的静态表格。
可利用分布式散列表(DHT)实现本发明。DHT实质上是映射函数的分布式实现。但是,DHT实现已被证明拥有其它有吸引力的功能,因为它们能够很好地与大量的服务器节点一起缩放,并且能够按照非常高效的方式,处理相对于该分布式集合的计算节点的动态添加或清除。对于说明本发明来说,知道所有DHT实现共享下述抽象现为就足够了。
1.DHT获得输入关键字(所述输入关键字可以和标识符关键字相同,也可不同于标识符关键字),并首先使用“散列函数”(随机化技术)计算新的“散列值”。该散列值本身可被表示成M位的二进制数。各个DHT节点使用信令技术划分所有可能的二进制散列值的整个范围(M位意味着总共2M个可能散列值)。随后使用散列值把输入关键字引向目前管理该散列值的服务器。因此,为了把特定的对象映射到特定服务器,该对象的标识符关键字可被用作DHT架构的输入。从而,从标识符关键字到特定服务器的映射被表示成如下所示:
标识符关键字k→(散列函数)→散列值v→(DHT映射)→服务器s
这里标识符关键字k首先由散列函数变换成散列值,散列值随后被映射到特定服务器。映射成同样散列值的标识符关键字从而被引向公共服务器。类似地,导致不同散列值的关键字很可能被引向不同的服务器。
一般来说,常规的DHT算法不允许在不同的时刻,相同的标识符关键字k被映射成不同的散列值(v)。在本发明的一个实施例中,通过a)定义产生相同标识符关键字的不同散列值的技术,和b)使用这种差异散列值产生技术提供分布式环境中的自适应负载分配,按照新方式利用DHT。
该实施例使用一种形式的编码,用标识符关键字产生“虚拟关键字”。该虚拟关键字随后被用作散列函数的输入关键字。图8中,表示了组合工作负荷的基于关键字的表示法,和用于可缩放的高效负载重定向的分布式散列表(DHT)基元的例证程序。为了举例说明该程序,利用DHU实现,把长度N=7,深度值d=3的二进制标识符关键字k=“1010011”映射到底层服务器。
该程序开始于产生操作802,在产生操作802,产生虚拟关键字。为了产生虚拟关键字k′,服务器获得k的前d位,并用N-d个尾随零构成最低有效位。例如,在深度=3的情况下,标识符关键字“1010011”的虚拟关键字由“1010000”给出,在深度=6的情况下,由“1010010”给出。
一旦产生了虚拟关键字,随后关于虚拟关键字k′调用包括集体划界为804的步骤的DHT协议,以确定目标服务器s(本实施例假定深度d的标识符关键字由服务器s管理)。DHT协议804以两步过程的形式工作。首先,在计算操作806,计算与关键字k′相关的散列值v。其次,在映射操作808,使用DHT的分布式查寻识别目前负责该散列值的服务器s。一旦识别了服务器s,那么在交互作用操作810,客户机能够与该恰当服务器通信。
也可使用类似的程序来识别用于具有指定深度dg的关键字组kg的目标服务器。关键字组kg的dg个最高有效位被保留,而用尾随零掩蔽N-dg个最低有效位,从而形成虚拟关键字。例如,关键字组“010*”(dg=3)的虚拟关键字为“0100000”,而关键字组“1101*”(dg=4)的虚拟关键字为“1101000”。
如上所述,客户机可使用深度和关键字组合来识别探测消息的目标服务器。当结合DHT使用时,还形成客户机的深度确定过程。客户机产生对应于猜测深度的虚拟关键字,随后使用DHT识别目标服务器。类似地,当某一服务器试图确定应保存特定关键字组的服务器的身份时,它首先形成该关键字组的虚拟关键字,并使用该虚拟关键字作为DHT的输入,来确定目标服务器。通过采用这种技术,关键字组将具有和属于该关键字组的任意标识符关键字相同的虚拟关键字,只要标识符关键字的深度被设置成关键字组的深度。例如,考虑关键字“1101010”和“1101111”所属于的关键字组“1101*”(深度=4)。在深度=4的情况下,这两个标识符关键字都产生虚拟关键字“1101000”,它等同于根据组“1101*”产生的虚拟关键字。因此,如果该过程把一个关键字组分配给特定的服务器,那么该组的所有标识符关键字也将被引向相同的服务器,因为关键字组和单个标识符关键字的分配都是基于共同的虚拟关键字完成的。
使用虚拟关键字和DHT技术实现自适应负载分配技术还有一个优点。考虑试图把关键字组“1010*”(深度=4)拆分给两个不同服务器的父服务器。该服务器首先产生两个子组“10100*”和“10101*”,并试图识别这两个子组的服务器。但是,构成虚拟关键字的过程确保这些子组之一(通过掩蔽“0”形成的一个子组)具有和父组相同的虚拟关键字。例如,“1010*”(深度=4)和“10100*”(深度=4)具有相同的虚拟关键字“1010000”。因此,父服务器将总是把它自己识别成这些子组之一的目标。因此,虚拟关键字机制允许父服务器实现真正的负载分流,因为它总是保持一半的初始关键字空间,并把另一半的初始关键字空间重新分配给另一服务器。
如前所述,本发明允许在选择供拆分的候选关键字组的时候,使用各种不同的算法。在一个实施例中,服务器始终监视与被管理的每个关键字组相关的工作负荷。这可通过使用计数器或监视器分别跟踪这些关键字组中每个关键字组中的应用程序活动来实现。如果服务器需要分流一些负载,那么它随后将选择贡献最大负载的关键字组(“最热”的关键字组)。其它可能的选择机制包括选择最大的活动关键字组(深度最小的关键字组),最小的活动关键字组(深度最大的关键字组)或者具有最大“归一化”工作负荷(即,除以关键字组的大小的工作负荷)的关键字组。
服务器不仅可以使用虚拟关键字和深度的概念来分流负载,并将其分配给另外的服务器,而且还可使用虚拟关键字和深度的概念把来自许多服务器的负载合并给较小的服务器组。实现这种合并的一种方法是定期把每个活动关键字组的工作负荷传送给其父组。如图4中所述,负载拆分操作可被模拟成二进制树,活动关键字组表现为二进制树的树叶。该树中的每个关键字组与一个服务器相关联。管理树叶关键字组的服务器能够定期向父服务器,即,管理被拆分前的父关键字组的服务器,回报观察到的工作负荷。例如在图3中,存在三个树叶关键字组:“1010*”(深度=4),“10110*”(深度=5)和“10111*”(深度=5)。管理一个树叶关键字组(例如“10111*”)的服务器将定期向管理父关键字组(“1011*”)的服务器回报该树叶关键字组的工作负荷。
参见图9,图9表示了根据本发明,合并工作负荷的例证程序。该程序开始于接收操作902。在该步骤中,父服务器接收来自管理子关键字组的服务器的工作负荷报告。在收到工作负荷报告之后,控制转移到估计操作904。
在估计操作904,父服务器估计如果它接受一个或多个子关键字组的职责,那么它理应承担的额外工作负荷。例如,负责(当前非活动的)关键字组“1011*”的服务器可使用关于关键字组“10110*”和“10111*”的负载报告,估计如果它把这些关键字组的深度减回4,那么总的工作负荷会增大多少。在完成估计操作904之后,控制转移到判定操作906。
在判定操作906,如果子组和父服务器的工作负载都足够低,那么根据某一预定策略,父服务器随后可重新开始负责较大的关键字组(例如“1011*”)。从而,控制转移到激活操作908,使该项目活动。随后,在指令操作910,指令子服务器关于子组的项目。一旦执行了指令操作,就结束该过程。但是,如果负载水平过高,以致不能合并,那么控制转移到操作912,服务器保持当前的分配策略不变。这种负载合并过程的备选实施例可涉及使用中央实体来确定何时会发生负载合并,或者使用多个节点之间的信令来同时消除多级子组。
出于举例说明的目的,给出了本发明的前述说明。上述说明不是穷尽的,也不打算把本发明局限于公开的具体形式,鉴于上述教导,可做出其它各种修改和变化。为了更好地说明本发明的原理及其实际应用,从而使本领域的技术人员能够在适合于预期特殊应用的各种实施例和各种修改中更好地利用本发明,选择并描述了公开的各个实施例。附加权利要求应被解释成除了现有技术限定的范围之外,还包括本发明的其它备选实施例。
Claims (24)
1、一种动态调整活动资源的工作负荷的方法,所述工作负荷被表示成一批单元,每个单元包括它自己的关键字标识符,活动资源与至少一个父工作负荷组相关,父工作负荷组包括一批工作负荷单元,以致在它们的关键字标识符的指定深度值下,属于该父工作负荷组的工作负荷单元共享相同的一系列值,所述相同的一系列值定义与父工作负荷组相关的组关键字标识符,所述方法包括:
活动资源独立确定在活动资源存在过载情况;和
如果存在过载情况:
那么增大父工作负荷组的深度值,以致识别至少两个子工作负荷组;并且
指派一个目标资源以管理至少一个子工作负荷组。
2、按照权利要求1所述的方法,还包括如果存在过载情况,那么识别可向其分配子工作负荷组的至少一个候选资源。
3、按照权利要求1所述的方法,还包括向目标资源请求工作负荷接受。
4、按照权利要求1所述的方法,还包括在活动资源,把父工作负荷组记录为非活动。
5、按照权利要求1所述的方法,还包括传送和子工作负荷组对应的应用程序特定的对象。
6、按照权利要求1所述的方法,还包括把作用于父工作负荷组的元素的实体重定向到管理子工作负荷组的目标资源。
7、按照权利要求6所述的方法,还包括:
接收来自作用于某一工作负荷单元的实体的探测消息,所述某一工作负荷单元是父工作负荷组的成员,探测消息包括通过猜测要与所述单元的关键字标识符相关的深度所形成的猜测标识符关键字;和
向所述实体发送响应,指示当前资源本地确定的组关键字标识符是所述元素的关键字标识符所属的最近已知活动父组。
8、按照权利要求7所述的方法,其中作用于工作负荷单元的实体使用所述响应,进一步细化要与所述单元的关键字标识符相关的正确深度的估计值;和
探测与通过使用所述单元的关键字标识符的细化深度所形成的父关键字组相关的另一资源。
9、按照权利要求1所述的方法,还包括:
确定在活动资源存在欠载情况;和
如果存在欠载情况:
那么识别至少两个工作负荷组,以便合并成一个合并工作负荷组;
产生合并关键字标识符,以致在合并关键字标识符的指定深度值下,属于合并工作负荷组的工作负荷单元共享相同的一系列值;和
由所述活动资源管理合并的工作负荷组。
10、按照权利要求9所述的方法,其中产生合并的关键字标识符包括减小父工作负荷组的深度值,以致合并的工作负荷组被识别。
11、按照权利要求1所述的方法,还包括使工作负荷单元与关键字标识符相关联,以致关键字标识符对工作负荷单元的一个或多个属性编码。
12、按照权利要求1所述的方法,还包括构成用于映射到目标资源的虚拟关键字,其中虚拟关键字包括完整关键字标识符的取决于负载的子集。
13、按照权利要求12所述的方法,还包括使用构成的取决于负载的虚拟关键字作为独立的映射服务的输入,所述映射服务返回属于虚拟关键字的工作负荷元素应指向的目标资源的身份。
14、一种在动态变化的一组分布式资源内,运行分布式计算机应用程序的系统,所述分布式计算机应用程序的工作负荷可被分解成一组工作负荷单元,每个工作负荷单元包括它自己的关键字标识符,响应整个工作负荷的变化,分布式计算中涉及的资源的数目动态变化,所述系统包括:
协作管理构成整个工作负荷的整个一组关键字标识符的一组活动资源,每个单个资源管理动态变化的一组关键字标识符,每个资源独立评估它自己的工作负荷状况,并决定组关键字标识符的产生或合并,从而减少或增大其工作负荷;
整体的一组资源,其活动资源构成可根据需要被用作分布式计算机应用程序的一部分的子集;
接收与至少一个关键字标识符相关的虚拟关键字作为输入,并产生来自整个资源组的目标资源的身份作为输出的一个映射服务;和
利用分布式应用程序的一组客户机实体,每个客户机实体与至少一个关键字标识符相关,每个客户机实体动态确定它目前所属的取决于负载的那组标识符关键字。
15、一种动态调整活动资源的工作负荷的系统,所述系统包括:
多个工作负荷单元,每个工作负荷单元与一个关键字标识符相关;
一个父工作负荷组,所述父工作负荷组包括一批工作负荷单元,其中在关键字标识符的指定深度值下,属于父工作负荷组的工作负荷单元共享相同的一系列值;和
管理父工作负荷的一个活动资源,所述活动资源被配置成如果在活动资源存在过载情况,那么增大父工作负荷组的深度值,以致识别至少两个子工作负荷组,并指派一个目标资源以管理至少一个子工作负荷组。
16、按照权利要求15所述的系统,其中活动资源还被配置成识别可向其分配子工作负荷组的至少一个候选资源。
17、按照权利要求15所述的系统,其中活动资源还被配置成向目标资源请求工作负荷接受。
18、按照权利要求15所述的系统,其中活动资源还被配置成在活动资源,把父工作负荷组记录为非活动。
19、按照权利要求15所述的系统,其中活动资源还被配置成传送和子工作负荷组对应的应用程序特定的对象。
20、按照权利要求15所述的系统,其中活动资源还被配置成如果存在欠载状况,那么识别至少两个工作负荷组,以便合并成一个合并工作负荷组,产生合并关键字标识符,以致在合并关键字标识符的指定深度值下,属于合并工作负荷组的工作负荷单元共享相同的一系列值,并且由所述活动资源管理合并的工作负荷组。
21、按照权利要求20所述的系统,其中活动资源还被配置成减小父工作负荷组关键字标识符的深度值,以致合并的工作负荷组被识别。
22、按照权利要求15所述的系统,其中活动资源还被配置成使工作负荷单元与关键字标识符相关联,以致关键字标识符对工作负荷单元的一个或多个属性编码。
23、按照权利要求15所述的系统,其中活动资源还被配置成构成用于映射到目标资源的虚拟关键字,其中虚拟关键字包括完整关键字标识符的取决于负载的子集。
24、按照权利要求15所述的系统,还包括配置成识别可向其分配子工作负荷组的至少一个候选资源的外部服务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/718,401 US7779415B2 (en) | 2003-11-21 | 2003-11-21 | Adaptive load distribution in managing dynamic and transient data for distributed applications |
US10/718,401 | 2003-11-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1619498A CN1619498A (zh) | 2005-05-25 |
CN1294492C true CN1294492C (zh) | 2007-01-10 |
Family
ID=34591089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200410092682XA Expired - Fee Related CN1294492C (zh) | 2003-11-21 | 2004-11-16 | 动态调整活动资源的工作负荷的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7779415B2 (zh) |
CN (1) | CN1294492C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT202100025925A1 (it) | 2021-10-08 | 2023-04-08 | Phoenix ICT | Metodo e sistema anti ddos per la gestione dinamica di una risorsa attiva |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6956827B2 (en) * | 2003-08-15 | 2005-10-18 | Popular Telephony, Inc. | Distribution of identifiers in serverless networks |
US7990948B2 (en) * | 2003-08-15 | 2011-08-02 | Quintence Properties Kg, Llc | Serverless and switchless internet protocol telephony system and method |
US9116929B2 (en) * | 2003-12-08 | 2015-08-25 | Teradata Us, Inc. | Workload priority influenced data temperature |
US9098340B2 (en) * | 2003-12-08 | 2015-08-04 | Teradata Us, Inc. | Virtual regulator for a database system |
US8645425B1 (en) * | 2004-02-25 | 2014-02-04 | Teradata Us, Inc. | Guiding the development of workload group definition classifications |
WO2005062919A2 (en) * | 2003-12-22 | 2005-07-14 | Wachovia Corporation | Public key encryption for groups |
US8782654B2 (en) | 2004-03-13 | 2014-07-15 | Adaptive Computing Enterprises, Inc. | Co-allocating a reservation spanning different compute resources types |
WO2005089241A2 (en) | 2004-03-13 | 2005-09-29 | Cluster Resources, Inc. | System and method for providing object triggers |
US20050267750A1 (en) * | 2004-05-27 | 2005-12-01 | Anonymous Media, Llc | Media usage monitoring and measurement system and method |
US20150051967A1 (en) | 2004-05-27 | 2015-02-19 | Anonymous Media Research, Llc | Media usage monitoring and measurment system and method |
US20070266388A1 (en) | 2004-06-18 | 2007-11-15 | Cluster Resources, Inc. | System and method for providing advanced reservations in a compute environment |
US8176490B1 (en) | 2004-08-20 | 2012-05-08 | Adaptive Computing Enterprises, Inc. | System and method of interfacing a workload manager and scheduler with an identity manager |
US8271980B2 (en) | 2004-11-08 | 2012-09-18 | Adaptive Computing Enterprises, Inc. | System and method of providing system jobs within a compute environment |
US7469241B2 (en) * | 2004-11-30 | 2008-12-23 | Oracle International Corporation | Efficient data aggregation operations using hash tables |
US7493346B2 (en) * | 2005-02-16 | 2009-02-17 | International Business Machines Corporation | System and method for load shedding in data mining and knowledge discovery from stream data |
US8631130B2 (en) | 2005-03-16 | 2014-01-14 | Adaptive Computing Enterprises, Inc. | Reserving resources in an on-demand compute environment from a local compute environment |
US8863143B2 (en) | 2006-03-16 | 2014-10-14 | Adaptive Computing Enterprises, Inc. | System and method for managing a hybrid compute environment |
US9015324B2 (en) | 2005-03-16 | 2015-04-21 | Adaptive Computing Enterprises, Inc. | System and method of brokering cloud computing resources |
US9231886B2 (en) | 2005-03-16 | 2016-01-05 | Adaptive Computing Enterprises, Inc. | Simple integration of an on-demand compute environment |
CA2603577A1 (en) | 2005-04-07 | 2006-10-12 | Cluster Resources, Inc. | On-demand access to compute resources |
US8782120B2 (en) | 2005-04-07 | 2014-07-15 | Adaptive Computing Enterprises, Inc. | Elastic management of compute resources between a web server and an on-demand compute environment |
US20070055862A1 (en) * | 2005-09-08 | 2007-03-08 | Interdigital Technology Corporation | Method and system for distributing data |
JP5033322B2 (ja) * | 2005-11-10 | 2012-09-26 | 株式会社日立製作所 | 連結関係情報を用いた情報管理方法及び装置 |
US20140108797A1 (en) * | 2006-01-26 | 2014-04-17 | Unisys Corporation | Storage communities of interest using cryptographic splitting |
US7796990B2 (en) * | 2006-09-14 | 2010-09-14 | Nokia Corporation | Method for the routing of multimedia communication related signaling in a communication system |
US8041773B2 (en) | 2007-09-24 | 2011-10-18 | The Research Foundation Of State University Of New York | Automatic clustering for self-organizing grids |
US8381212B2 (en) * | 2007-10-09 | 2013-02-19 | International Business Machines Corporation | Dynamic allocation and partitioning of compute nodes in hierarchical job scheduling |
EP2065803A1 (en) * | 2007-11-30 | 2009-06-03 | Neutrino Concepts Ltd. | Parallel pipelining and width processing |
EP2073118A1 (en) * | 2007-12-17 | 2009-06-24 | Nokia Siemens Networks Oy | Load distribution in distributed database system |
DE102008003500B4 (de) * | 2008-01-08 | 2010-04-08 | Siemens Aktiengesellschaft | Verfahren zur Verwaltung von Rechenprozessen in einem dezentralen Datennetz |
BRPI0822147A2 (pt) * | 2008-01-31 | 2015-06-30 | Adaptive Computing Entpr Inc | Sistema e método para controlar um ambiente híbrido de cálculo |
US8271579B2 (en) * | 2008-04-07 | 2012-09-18 | Phunware, Inc. | Server method and system for executing applications on a wireless device |
KR20110079671A (ko) * | 2008-10-08 | 2011-07-07 | 내셔널 아이씨티 오스트레일리아 리미티드 | 비집중화된 온라인 환경의 범위성을 개선하기 위한 동적 경계 영역의 용도 |
WO2011006203A1 (en) * | 2009-07-14 | 2011-01-20 | National Ict Australia Limited | Interest management for a virtual environment of a peer-to-peer network |
US8321870B2 (en) * | 2009-08-14 | 2012-11-27 | General Electric Company | Method and system for distributed computation having sub-task processing and sub-solution redistribution |
US8556724B2 (en) * | 2009-09-30 | 2013-10-15 | Zynga Inc. | Apparatuses, methods and systems for an online game manager |
US10877695B2 (en) | 2009-10-30 | 2020-12-29 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US11720290B2 (en) | 2009-10-30 | 2023-08-08 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
CN101706743B (zh) * | 2009-12-07 | 2012-09-05 | 北京航空航天大学 | 一种多核环境下的虚拟机调度方法 |
US8386600B2 (en) * | 2009-12-16 | 2013-02-26 | Verizon Patent And Licensing Inc. | Performance monitoring of E-tree service |
US10084856B2 (en) | 2009-12-17 | 2018-09-25 | Wsou Investments, Llc | Method and apparatus for locating services within peer-to-peer networks |
US20110153737A1 (en) * | 2009-12-17 | 2011-06-23 | Chu Thomas P | Method and apparatus for decomposing a peer-to-peer network and using a decomposed peer-to-peer network |
KR101313272B1 (ko) * | 2009-12-18 | 2013-09-30 | 한국전자통신연구원 | 네트워크 망 내의 멀티단말 상황에서 방송서비스를 제공하는 맞춤형 방송서비스 제공시스템 및 방법 |
US8489525B2 (en) * | 2010-05-20 | 2013-07-16 | International Business Machines Corporation | Automatic model evolution |
US8948399B2 (en) | 2011-05-27 | 2015-02-03 | Novell, Inc. | Dynamic key management |
US8832775B2 (en) | 2011-06-17 | 2014-09-09 | Novell, Inc. | Techniques for workload spawning |
US9223630B2 (en) * | 2011-12-22 | 2015-12-29 | Alcatel Lucent | Method and apparatus for energy efficient distributed and elastic load balancing |
US8832050B2 (en) * | 2012-03-09 | 2014-09-09 | Hewlett-Packard Development Company, L.P. | Validation of distributed balanced trees |
US9519518B2 (en) * | 2013-05-15 | 2016-12-13 | Citrix Systems, Inc. | Systems and methods for deploying a spotted virtual server in a cluster system |
CN104798340B (zh) * | 2013-11-08 | 2018-06-26 | 华为技术有限公司 | 网络资源的分配方法,QoS管理网元和应用服务器 |
US9417918B2 (en) | 2013-11-20 | 2016-08-16 | International Business Machines Corporation | Computing session workload scheduling and management of parent-child tasks |
US10395225B2 (en) * | 2014-09-30 | 2019-08-27 | Lg Cns Co., Ltd. | Distributed processing system for processing transportation fees and operating method thereof |
JP6349264B2 (ja) * | 2015-01-19 | 2018-06-27 | 株式会社日立製作所 | 計算資源割当て方法およびシステム |
US9424097B1 (en) * | 2015-03-17 | 2016-08-23 | International Business Machines Corporation | Dynamically managing workload placements in virtualized environments based on current user globalization customization requests |
US10397313B2 (en) * | 2015-03-18 | 2019-08-27 | Nokia Of America Corporation | Data stream load balancing utilizing multiple sets of servers |
US10581755B2 (en) * | 2015-04-03 | 2020-03-03 | Nicira, Inc. | Provisioning network services in a software defined data center |
US9652295B2 (en) * | 2015-06-26 | 2017-05-16 | International Business Machines Corporation | Runtime fusion of operators based on processing element workload threshold and programming instruction compatibility |
CN106648877B (zh) * | 2015-10-28 | 2020-08-25 | 阿里巴巴集团控股有限公司 | 资源申请、释放方法及装置 |
US10356174B2 (en) * | 2016-05-06 | 2019-07-16 | Masergy Communications, Inc. | Multi-layer data storage system |
US11003499B1 (en) * | 2017-06-14 | 2021-05-11 | Amazon Technologies, Inc. | Resource allocation based on agent behavior in a simulation environment |
CN109873839B (zh) * | 2017-12-01 | 2021-06-01 | 华为技术有限公司 | 数据访问的方法、服务器与分布式系统 |
US10754704B2 (en) | 2018-07-11 | 2020-08-25 | International Business Machines Corporation | Cluster load balancing based on assessment of future loading |
US10671302B1 (en) | 2018-10-26 | 2020-06-02 | Pure Storage, Inc. | Applying a rate limit across a plurality of storage systems |
US12026381B2 (en) | 2018-10-26 | 2024-07-02 | Pure Storage, Inc. | Preserving identities and policies across replication |
CN112306651B (zh) * | 2019-07-31 | 2024-09-06 | 华为技术有限公司 | 一种资源分配方法和资源借调方法 |
CN110837583B (zh) * | 2019-09-27 | 2022-10-28 | 西安空间无线电技术研究所 | 一种基于数据链消息活跃度的快速查找方法、系统及介质 |
US11169855B2 (en) * | 2019-12-03 | 2021-11-09 | Sap Se | Resource allocation using application-generated notifications |
US11601474B2 (en) | 2020-09-28 | 2023-03-07 | Vmware, Inc. | Network virtualization infrastructure with divided user responsibilities |
US11836534B2 (en) | 2021-01-26 | 2023-12-05 | International Business Machines Corporation | Prediction of proficient resources for performing unprecedented workloads using models |
CN114297263A (zh) * | 2021-12-30 | 2022-04-08 | 浙江邦盛科技股份有限公司 | 一种负载自适应的分布式空间文本流数据处理系统 |
CN116893903B (zh) * | 2023-09-11 | 2023-12-08 | 北京格尔国信科技有限公司 | 一种加密资源分配方法、系统、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4099235A (en) * | 1972-02-08 | 1978-07-04 | Siemens Aktiengesellschaft | Method of operating a data processing system |
US4748558A (en) * | 1985-05-02 | 1988-05-31 | Hitachi, Ltd. | Load balancing control method for a loosely coupled multi-processor system and a device for realizing same |
US5655120A (en) * | 1993-09-24 | 1997-08-05 | Siemens Aktiengesellschaft | Method for load balancing in a multi-processor system where arising jobs are processed by a plurality of processors under real-time conditions |
CN1410891A (zh) * | 2001-09-21 | 2003-04-16 | Lg电子株式会社 | 实时处理系统中的过载控制方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6125420A (en) * | 1999-11-12 | 2000-09-26 | Agilent Technologies Inc. | Mechanisms for determining groupings of nodes in a distributed system |
JP4114032B2 (ja) * | 2000-09-26 | 2008-07-09 | セイコーエプソン株式会社 | 個人認証装置 |
GB0027258D0 (en) * | 2000-11-08 | 2000-12-27 | Easics Nv | Cimtester |
US6691109B2 (en) * | 2001-03-22 | 2004-02-10 | Turbo Worx, Inc. | Method and apparatus for high-performance sequence comparison |
-
2003
- 2003-11-21 US US10/718,401 patent/US7779415B2/en not_active Expired - Fee Related
-
2004
- 2004-11-16 CN CNB200410092682XA patent/CN1294492C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4099235A (en) * | 1972-02-08 | 1978-07-04 | Siemens Aktiengesellschaft | Method of operating a data processing system |
US4748558A (en) * | 1985-05-02 | 1988-05-31 | Hitachi, Ltd. | Load balancing control method for a loosely coupled multi-processor system and a device for realizing same |
US5655120A (en) * | 1993-09-24 | 1997-08-05 | Siemens Aktiengesellschaft | Method for load balancing in a multi-processor system where arising jobs are processed by a plurality of processors under real-time conditions |
CN1410891A (zh) * | 2001-09-21 | 2003-04-16 | Lg电子株式会社 | 实时处理系统中的过载控制方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT202100025925A1 (it) | 2021-10-08 | 2023-04-08 | Phoenix ICT | Metodo e sistema anti ddos per la gestione dinamica di una risorsa attiva |
Also Published As
Publication number | Publication date |
---|---|
US7779415B2 (en) | 2010-08-17 |
CN1619498A (zh) | 2005-05-25 |
US20050114862A1 (en) | 2005-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1294492C (zh) | 动态调整活动资源的工作负荷的方法和系统 | |
EP1649387B1 (en) | Distributed database system | |
JP4750457B2 (ja) | データオーバーレイ、自己編成メタデータオーバーレイおよびアプリケーションレベルマルチキャスティング | |
US11704320B2 (en) | Processing queries using an index generated based on data segments | |
EP2633668B1 (en) | Distributed propagation of data in a wireless communication network | |
CN1764171A (zh) | 将资源请求与对应的资源会合 | |
CN1658598A (zh) | 计算机网络中自组织分配服务方法、系统和软件产品 | |
CN1852502A (zh) | 一种集群系统中实现负载均衡的方法、系统和存储控制器 | |
US10664278B2 (en) | Method and apparatus for hardware acceleration in heterogeneous distributed computing | |
WO2017118335A1 (zh) | 一种映射方法和设备 | |
CN1570903A (zh) | 一种服务器负载均衡方法 | |
Zhou et al. | SNB-index: a SkipNet and B+ tree based auxiliary Cloud index | |
Cambazoglu et al. | Effect of inverted index partitioning schemes on performance of query processing in parallel text retrieval systems | |
CN111400301A (zh) | 一种数据查询方法、装置及设备 | |
Shen et al. | Pird: P2p-based intelligent resource discovery in internet-based distributed systems | |
CN114415971B (zh) | 数据处理方法以及装置 | |
Shao et al. | Effective load balancing mechanism for heterogeneous range queriable cloud storage | |
KR101512647B1 (ko) | 질의처리엔진을 선택하는 방법 | |
Espinosa et al. | Analysis and improvement of map-reduce data distribution in read mapping applications | |
KR101089294B1 (ko) | 구조적 p2p 네트워크를 위한 데이터 매핑 방법 및 장치 | |
WO2009078729A1 (en) | A method for improving search engine efficiency | |
Haasn | Semantic technology and super-peer architecture for internet based distributed system resource discovery | |
Ghanem et al. | System design of a super-peer network for content-based image retrieval | |
Carter et al. | Architectural Components of Information–Sharing Societies | |
Yang et al. | A large-scale and decentralized infrastructure for content-based publish/subscribe services |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070110 Termination date: 20151116 |
|
EXPY | Termination of patent right or utility model |