CN104981781A - 分布式计算架构 - Google Patents
分布式计算架构 Download PDFInfo
- Publication number
- CN104981781A CN104981781A CN201480006391.6A CN201480006391A CN104981781A CN 104981781 A CN104981781 A CN 104981781A CN 201480006391 A CN201480006391 A CN 201480006391A CN 104981781 A CN104981781 A CN 104981781A
- Authority
- CN
- China
- Prior art keywords
- server
- task
- data
- group
- border
- 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.)
- Granted
Links
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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/78—Architectures of resource allocation
- H04L47/783—Distributed allocation of resources, e.g. bandwidth brokers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
Abstract
一种系统,该系统包括多个服务器(112)和边界服务器(100)。边界服务器(100)接收对可以通过执行任务被完成的事务的请求(328,540)来识别(332,548)任务中的第一任务,通过基于第一任务的类型查阅存储在边界服务器的存储器(708)中的路由数据来识别(336,552)服务器中的初始服务器,以执行第一任务,并且请求初始服务器执行第一任务。响应于从边界服务器接收任务,服务器中的每个将使用唯一地存储在服务器上的相关的数据执行接收到的任务,确定接收到的任务是否需要附加的任务,通过查阅存储在服务器的存储器中的路由数据来识别下一个服务器,以执行附加的任务,并且请求下一个服务器执行附加的任务。
Description
相关申请的交叉引用
本申请要求于2013年1月29日提交的美国实用新型专利申请第13/752,985号的权益,通过引用将其并入本文。
技术领域
本发明涉及分布式计算,并且更具体地涉及用于可缩放的处理系统的数据的处理和存储。
背景技术
在此提供的背景描述是为了一般地呈现本公开的上下文的目的。就在该背景部分所描述的程度而言,当前署名的发明人的工作以及在提交时可以不另外被限制为现有技术的描述的多个方面,既不明确地也不隐含地被认为是本公开的现有技术。
计算机系统在存储容量和处理容量两方面具有有限限度。当达到这些容量的任一个或两个时,计算机系统的性能受到影响。为了防止或减小性能的损失,可以增加附加的计算硬件,以增加处理和/或存储容量。该过程称为缩放(scaling),并且不同类型的工作负载呈现不同的缩放挑战。
一种用于缩放的方法是在多计算机系统中并行化计算处理,该计算机系统经由消息传递接口(MPI)交互。MPI可以允许并行计算系统来协调处理,以避免由一个系统作出的改变和由另一个系统做出的改变之间的冲突。已经以许多语言(包括C、C++和Fortran)实现MPI。单独的计算系统可以是在单独的物理外壳中,并且/或者可以是多个处理器在单个计算机机箱内,或甚至多个核心在单个处理器内。MPI可以允许在大规模并行共享存储器机器以及异构分布式存储器计算机的集群上高性能。
另一种缩放方法使用用于结构化查询语言(SQL)数据库的分布式存储。然而,因为需要保持单独的计算机的同步,分布式SQL数据库中的事务性操作通常被减慢。即使当使用快的网络(诸如,无限带宽)时,同步可以在性能和可扩展性上强加限制。此外,SQL数据库方法的附加的限制是,通常不在SQL数据库服务器上执行数据处理,而是在另一个服务器上。因为从SQL服务器到计算服务器以及再次返回至SQL服务器的数据传输,这增加了延迟。
并行处理对大数据集是有益的,大数据集的部分可以跨过不同节点被扩展并且被独立地处理。然而,一些或全部事务可以取决于一个或多个先前的事务的事务处理不容易被并行化。例如,通过在事务的处理开始之前锁定数据的部分以及根据事务的成功完成解锁数据,计算机可以同步访问数据的一部分。当数据被锁定时,其它计算机不能改变该数据,并且在某些情况下甚至不能读取数据。作为锁定/解锁处理的结果,可能存在显著的延迟以及显著的延迟的变化。
发明内容
系统包括各自包括处理器和存储器的多个服务器、以及包括处理器和存储器的边界服务器。边界服务器(i)接收针对可以通过执行多个任务实现的事务的请求,(ii)识别多个任务中的第一任务,(iii)通过基于第一任务的类型查询存储在边界服务器的存储器中的路由数据来识别多个服务器中的初始服务器,以执行第一任务,并且(iv)请求初始服务器执行第一任务。响应于从边界服务器接收到的对任务的请求,多个服务器中的每个服务器被配置为:(i)使用与被唯一地存储于服务器上的接收到的任务相关的数据执行接收到的任务,(ii)确定是否所接收到的任务需要附加的任务,(iii)识别多个服务器中的下一个服务器,以通过基于附加的任务的类型查询存储在服务器的存储器中的路由数据来执行附加的任务,(iv)请求下一服务器执行附加的任务,并且(v)响应于从下一个服务器接收完成指示,用对应于所接收到的任务的完成指示响应边界服务器。
在其它特征中,系统包括被配置为使多个服务器彼此互连以及与边界服务器互连的联网设备。边界服务器(i)包括与联网设备进行通信的第一网络端口以及不与联网设备通信的第二网络端口,并且(ii)通过第二网络端口接收对事务的请求。边界服务器被配置为经由互联网通过网络服务接收事务请求。
在另外的特征中,边界服务器被配置为从网络服务器接收事务请求。网页服务器提供网页给用户并且基于由用户经由网页提供的输入准备事务请求。联网设备包括无限带宽交换机。初始服务器和下一个服务器被配置为,使得经由联网设备而不涉及到初始服务器的处理器或下一个服务器的处理器将数据从初始服务器的存储器选择地传输到下一个服务器的存储器。多个服务器中的每个服务器实现远程直接存储器访问(RDMA)。
在其它特征中,系统包括镜像服务器,其存储由多个服务器中的指定服务器存储的数据的副本。镜像服务器被配置为,响应于指定服务器的故障、代替指定服务器执行任务。多个服务器共同地执行多种类型的任务。初始服务器被配置为执行多种类型的任务中的第一类任务,并且下一个服务器被配置为执行多种类型的任务中的第二类任务。
在另外的特征中,多个服务器中的第一服务器被配置为执行第二类任务,多个服务器中的第二服务器也被配置为执行第二类任务,第一服务器存储与第二类任务相关的第一组数据,第二服务器存储与第二类任务相关的第二组数据,并且第一组数据与第二组数据是相互排斥的。响应于对应于第一组数据的附加的任务,路由数据指定第一服务器为下一个服务器。响应于对应于第二组数据的附加的任务,路由数据指定第二服务器为下一个服务器。
在其它特征中,第一服务器和第二服务器被配置为,响应于第一服务器的过度利用、动态地将数据从第一组数据移动到第二组数据中。响应于初始服务器的过度利用,(i)多个服务器中的第一服务器被动态地配置为也执行第一类任务,(ii)与由初始服务器存储的所接收到的任务相关的数据被分成第一组数据和第二组数据,(iii)第一组数据与第二组数据互相排斥,并且(iv)第二组数据被移动到第一服务器。
系统包括每个包括处理器和存储器的多个服务器。多个服务器中的第一服务器被配置为:(i)接收对事务的请求,其中可以通过执行多个任务完成该事务,(ii)选择多个任务中的第一任务,(iii)通过基于第一任务的类型查询存储在第一服务器的存储器中的路由数据来识别多个服务器中的第二服务器,以执行第一任务,并且(iv)请求第二服务器执行第一任务。响应于接收到的对第一任务的请求,第二服务器被配置为:(i)使用唯一地存储在第二服务器上的数据执行第一任务,并且(ii)确定第一任务是否需要附加的任务。响应于需要附加的任务的第一任务,第二服务器被配置为:(i)识别多个服务器中的第三服务器,以通过基于附加的任务的类型查询存储在第二服务器的存储器中的路由数据来执行附加的任务,(ii)请求第三服务器执行附加的任务,并且(iii)响应于从第三服务器接收完成指示,用对应于第一任务的完成指示响应第一服务器。
系统包括比边界服务器和多个服务器,边界服务器包括处理器和存储器,并且多个服务器中的每个包括处理器和存储器。控制系统的方法包括在边界服务器处接收对任务的请求,可以通过执行多个任务完成事务。该方法包括在边界服务器处识别多个任务中的第一任务。该方法包括,在边界服务器处,通过基于第一任务的类型查询存储在边界服务器的存储器中的路由数据来识别多个服务器中的初始服务器,以执行第一任务。该方法包括在边界服务器处请求初始服务器执行第一任务。响应于从边界服务器接收对任务的请求,该方法包括在多个服务器中的一个服务器处,(i)使用唯一地存储在服务器上的与所接收到的任务相关的数据执行所接收到的任务,(ii)确定所接收到的任务是否需要附加的任务,(iii)识别多个服务器中的下一个服务器,以通过基于附加的任务的类型查询存储在服务器的存储器中的路由数据来执行附加的任务,(iv)请求下一个服务器执行附加的任务,并且(v)响应于从下一个服务器接收完成指示,用对应于所接收到的任务的完成指示响应边界服务器。
在其他特征中,该方法还包括经由互联网使用网络服务在边界服务器处接收事务请求。该方法还包括在边界服务器处从网络服务器接收事务请求。该方法还包括在网络服务器处向用户提供网页,并且基于由用户经由网页提供的输入准备事务请求。该方法还包括选择性地将数据从初始服务器的存储器传输到下一个服务器的存储器,而不涉及到初始服务器的处理器或下一个服务器的处理器。该方法还包括在多个服务器中的每个处实现远程直接存储器访问(RDMA)。
在另外的特征中,该方法还包括:在镜像服务器处存储由多个服务器中的指定服务器存储的数据的副本,并且响应于指定服务器的故障,在镜像服务器处代替指定服务器执行任务。该方法还包括使用多个服务器共同地执行多种类型的任务。该方法还包括:在初始服务器处执行多种类型的任务中的第一类任务,并且在下一个服务器处执行多种类型的任务中的第二类任务。
在其他特征中,该方法还包括:在多个服务器中的第一服务器处执行第二类任务;在第一服务器处存储与第二类任务相关的第一组数据;在多个服务器中的第二服务器处执行第二类任务;并且在第二服务器处,存储与第二类任务相关的第二组数据。第一组数据与第二组数据是相互排斥的。
在另外的特征中,响应于对应于第一组数据的附加的任务,路由数据指定第一服务器作为下一个服务器。响应于对应于第二组数据的附加的任务,路由数据指定第二服务器作为下一个服务器。该方法还包括,响应于第一服务器的过度利用,动态地将数据从第一组数据移动到第二组数据中。该方法还包括在多个服务器中的第一服务器处执行第一类任务,并且响应于初始服务器的过度利用,(i)将与所接收到的任务相关的数据分为第一组数据和第二组数据,并且(ii)将第二组数据移动到第一服务器。第一组数据与第二组数据是相互排斥的。
从下面提供的详细描述,本公开的进一步应用领域将变得明显。应当理解,详细描述和具体示例仅旨在说明的目的,而不旨在限制本发明的范围。
附图说明
图1A和图1B是本公开的原理的示例实现的高级功能框图。
图2A是分配给服务器的任务的高级功能框图。
图2B是描述图2A的框图的操作的流程图。
图2C是基于示例事务分配给特定的服务器的任务的高级功能框图。
图2D是在处理示例事务中描述图2C的服务器的操作的流程图。
图3是服务器中的一个服务器的示例实现的简化的框图。
图4是服务器中的一个服务器的示例实现的功能框图。
图5是描述网络服务器功能的示例操作的流程图。
图6A是示例再平衡操作的高级流程图。
图6B是描述当要执行再平衡时确定的示例方法的流程图。
图6C是示例再平衡操作的流程图。
图6D是描述在示例再平衡之前和之后的任务分配的高级流程图。
图7是边界服务器的示例操作的流程图。
图8A和图8B一起是节点服务器中的一个节点服务器的示例操作的流程图。
在附图中,附图标记可以被重复使用以识别相似和/或相同的元件。
具体实施方式
根据本公开的原理,通过将事务分割为多个离散的任务来缩放事务处理。这些任务中的每个任务被分配给服务器,该服务器执行该任务,并且也存储与任务相关的数据。在各种实现中,将任务定义为一组程序指令,该程序指令被唯一地加载在服务器的本地存储器中,并且在有限的执行时间内将被仅以服务器的本地的资源来执行(而对来自其它服务器的远程资源没有任何需要)。
根据任务之间的依赖关系,一些或所有任务可以被并行处理,然而其它的被串行处理。在各种实现中,服务器之间的分配的任务被动态地调节以便于缩放。例如,在各种实现中,单个服务器能够被分配多个任务。在不同的时间,这些任务中的一个或多个可以在该服务器和另一个服务器之间被分割。基于可以如何分割对应的数据,在服务器之间分割任务。例如,如果关于特定用户的数据执行任务,一个服务器将执行关于第一组用户的任务,并且第二服务器将执行关于第二组用户的任务。在各种实现中,可以在与处理和存储容量所需要的服务器一样多的服务器之间划分任务,仅局限于进一步划分相应的数据的能力。
在图1A中,边界服务器100从请求者104经由分布式通信系统(诸如,互联网108)接收事务请求。边界服务器100经由联网设备116与节点服务器112-1、节点服务器112-2、以及节点服务器112-3(共同地,节点服务器112)进行通信。在各种实现中,联网设备116可以包括高速交换机(诸如,千兆比特或10Gb以太网交换机、或无限带宽交换机)。所使用的联网协议可以(诸如,在无限带宽的情况下)允许远程直接存储器存取(RDMA),该远程直接存储器存取(RDMA)允许用最少的中断在节点服务器112之间传输数据,以处理节点服务器112内的事件。
基于事务请求,边界服务器100确定哪些任务需要被执行,以便完成事务,并且向节点服务器112中的一个或多个发送任务请求。一旦由节点服务器112执行的任务的结果被返回给边界服务器100,边界服务器100可以向请求者104发送响应。响应指示事务的成功或失败,并且可以包括附加的数据。
当能够直接与边界服务器100通信时,请求者104被称为复杂的请求者。在一个示例中,复杂的请求者104使用网络服务(诸如,依赖于可扩展标记语言(XML)的简单对象存取协议(SOAP))与边界服务器100交互。
另一个请求者120被称为简单的,因为请求者120与网络服务器124进行通信,而不是直接与边界服务器100进行通信。在各种实现中,请求者120使用标准网络协议(诸如,超文本标记语言(HTML)以及超文本传输协议(HTTP))与网络服务器124进行通信。仅例如,网络服务器124可以执行网络服务器软件(诸如,NGINX)。
网络服务器124为与由边界服务器100提供的服务相关的网页服务,并且从请求者120接收数据和请求,并且提供响应给请求者120。基于从请求者120接收的数据,网络服务器124生成事务请求,该请求被发送到边界服务器100。然后,边界服务器100处理事务请求类似于一个直接地接收。在各种实现中,网络服务器124和边界服务器100经由联网设备128进行通信,该联网设备可以包括防火墙。
一个或多个镜像服务器可以被用于增加可用性,即,镜像服务器能够代替出故障的服务器,消除或减轻故障硬件的影响。在图1A中,镜像节点服务器132被显示为镜像节点服务器112-3。在该实现中,如果节点服务器112-3经历了软件或硬件故障,则由镜像节点服务器132接管任务处理。为了实现该目的,镜像节点服务器132与节点服务器112-3并行处理任务,以保持等效状态。附加地或另选地,镜像节点服务器132或者连续地或者以短的间隔重复地检索来自节点服务器112-3的状态数据。
在各种实现中,分析服务器136处理来自节点服务器112的数据。例如,该数据包括指示节点服务器112的性能的日志数据和/或实质性的数据(诸如,事务的结果)。在分析服务器136不实时操作的实现中,分析服务器136经由联网设备140连接到节点服务器112(以及镜像节点服务器132)。当与联网设备116对比时,联网设备140具有受限的带宽和/或功能。
图1A中描述的各种设备,诸如,节点服务器112、边界服务器100、以及网络服务器124可以被共同布置在一个设施处。在各种其他实现中,可以穿过分布式通信系统(诸如,互联网108)连接这些设备中的一个或多个。尽管在图1A和图1B中使用了相同的附图标记,但是图1B中的设备可以被修改为穿过互联网108操作。
在图2A中,第一边界服务器200和第二边界服务器204都被示出。请求者208经由互联网108向或者第一边界服务器200或者第二边界服务器204发送请求。第二边界服务器204可以被用于增加第一边界服务器200的处理和存储容量。可选地,第一边界服务器200与第二边界服务器204可以处理不同类型的事务请求和/或可以包括将仅允许与不同组的用户交互的权限。
在图2A中,示出了具有相关的说明性的任务的事务请求的简化的示例。首先,请求者208向第一边界服务器200发送事务请求。这在图2A和图2B中是用标号“1”标注的。第一边界服务器200经由无线带宽交换机240与节点服务器220、节点服务器224,节点服务器228、节点服务器232、以及节点服务器236通信。基于处理和存储需要,根据图2A中所示的示例的节点服务器已经被平衡,其中节点服务器220被分配以执行任务A,节点服务器224和节点服务器228被分配以执行任务B,节点服务器被分配以执行任务C,并且节点服务器236被分配以执行任务D。如上所述,节点服务器224和节点服务器228都执行任务B,但针对数据的非重叠组。
图2B描述了图2A所示的简化的消息传送。控制开始于300,其中请求者208向第一边界服务器200发送事务请求。在304,第一边界服务器200开始处理请求,并且在308基于事务请求识别需要被执行的任务A和任务D。在312,第一边界服务器200识别节点服务器220作为用于执行任务A的适当的节点服务器,并且在316,第一边界服务器200向节点服务器220发送对任务A的请求(标号2)。在320,第一边界服务器200识别节点服务器236作为针对任务D的适当的节点服务器,并且在324,向节点服务器236发送对任务D的请求(标号3)。
在328,节点服务器220开始处理对任务A的请求,并且在332识别为了完成任务A所需要的附加的任务(任务B)。在336,针对该特定的事务请求,节点服务器220识别节点服务器228作为用于执行任务B的正确的服务器。在340,节点服务器220向节点服务器228发送对任务B的请求(标号4)。在344,节点服务器228开始处理任务B请求,并且在348确定不需要附加的任务,并且因此在352节点服务器228对节点服务器220作出响应(标号5)。
在356,节点服务器220分析来自任务B的响应,并且在360,确定在完成任务A之前需要的进一步的任务(任务C)。在364,节点服务器220确定节点服务器232是用于执行任务C的适当的节点服务器,并且因此在368向节点服务器232发送对任务C的请求(标号6)。在372,节点服务器232开始处理任务C请求,在376确定不需要进一步的任务,并且在380对节点服务器220作出响应(标号7)。
在384,节点服务器220分析来自节点服务器232的响应,并且在388确定不需要进一步的任务。在392,节点服务器220对第一边界服务器200作出响应(标号8)并且控制转移至396。同时,在400,其开始与328并行,节点服务器236开始处理任务D请求。示出仅用于说明,400和404之间的长线视觉上代表了任务D处理需要大量的时间。在404,节点服务器236确定不需要进一步的任务,并且在408,节点服务器236用任务D响应来对第一边界服务器200作出响应(标号9)。在396,然后控制继续。
在396,第一边界服务器200现在已经接收对任务A的响应以及对任务D的响应两者。如果任务A和任务D没有被并行执行,针对两个任务将被连续地执行,第一边界服务器200将不得不等待显著地更长的时间。在412,第一边界服务器200确定事务请求已经被完成。在416,第一边界服务器200向请求者208发送事务响应(标号10)。现在完成了该事务的处理。
在图2C中,示出了对于更简单的事务的安排。边界服务器504经由互联网108与请求者508通信。边界服务器504经由无限带宽交换机520与节点服务器512和节点服务器516通信。
图2D描述了图2C的说明中的消息交换。在540控制开始,其中请求者508向边界服务器504发送事务请求(标号1)。事务请求是用于更新对应于特定用户的联系信息的请求。在544,边界服务器504接收请求,并且在548,响应于事务请求,边界服务器504识别要被执行的第一任务。仅例如,第一任务是确保请求者被授权更新联系信息的授权。
在552,边界服务器504识别节点服务器512作为用于执行第一任务的适当的服务器。在556,边界服务器504向节点服务器512发送第一任务请求(标号2)。在560,节点服务器512加载对应于请求者508的帐户数据。控制在564继续,其中控制确定请求者508是否具有足够的信用来执行联系修改。
例如,信用可以是货币结余,其中每次更新具有相关的费用。附加地或另选地,信用可以代表账户(诸如,用于限制可以每月进行的更新的数量的按月信用)。如果有足够的信用,控制转移至568;否则,控制转移至572。在572,节点服务器512用错误对边界服务器504作出响应,并且边界服务器504对请求者508作出响应,通知请求者508错误。在响应请求者508之后,在576,控制结束。
回到568,控制确定请求者508是否具有必要的访问权限。如果是这样,控制转移至580;否则,控制转移至572。在580,请求者508已经被授权,并且因此节点服务器512识别要被执行的第二任务。在584,节点服务器512识别节点服务器516作为针对第二任务的适当的服务器,该第二任务可以是联系信息的实际更新。
在588,节点服务器512向节点服务器516发送第二任务请求(标号3)。在592,节点服务器516从节点服务器516的本地存储检索地址数据。在596,控制确定地址是否对应于请求者508,并且如果是这样,则控制在600继续;否则,控制转移至604。
在600,控制尝试地址数据的原子更新。换言之,控制试图读取地址数据、改变地址数据、以及写回地址数据而没有来自任何其它过程的干扰。如果在608原子更新是成功的,则控制在612继续。如果原子更新是不成功的,则地址数据保持不变,并且控制转移至604。在604,节点服务器516用错误指示对节点服务器512作出响应,并且控制在572继续。在各种实现中,节点服务器516也可以直接通知边界服务器504错误。
在612,节点服务器516用指示成功的任务响应对节点服务器512作出响应(标号4)。在616,节点服务器512用指示成功的任务响应对边界服务器504作出响应(标号5)。在620,边界服务器504向请求者508发送事务响应(标号6)。
图3示出了包括处理器704和存储器708的服务器700的示例实现。处理器704可以执行来自存储器708的指令,并且可以读取和写入存储在存储器708中的数据。图3中的描述是简化了的-例如,处理器704本身可以包括存储器,称为高速缓存,其可以存储指令、数据、或这两者。
无限带宽接口卡712允许服务器700与其他无限带宽设备进行交互。无限带宽接口卡712被示意性地示出为连接到处理器704和存储器708之间的前端总线,因为无限带宽接口卡712可以能够直接传输数据到存储器708以及从存储器708传输数据,而无需由处理器704监督。
芯片组716,其可以包括一个或多个芯片,或者可以是与处理器704集成在单个裸片上或在单个封装中,该芯片组716提供处理器704和外围设备之间的通信。例如,处理器704可以经由网卡720与其它联网设备通信。处理器704可以接收用户输入(诸如,键盘和鼠标输入),并且可以输出数据给用户,诸如,经由显示器,从输入/输出设备724。
非易失性存储器728可以存储被读取至存储器708、用于由处理器704执行的指令,并且可以存储与各种任务相关的数据。非易失性存储器728可以包括闪存。辅助非易失性存储器732可以具有比非易失性存储器728更大的容量,但是具有更低的吞吐量和/或更长的延迟。辅助非易失性存储器732可以包括包含硬盘驱动器和磁带的磁存储器。与辅助非易失性存储器732分离,非易失性存储器728可以存储频繁使用的信息(诸如,操作系统数据)。附加地或另选地,非易失性存储器728可以用作针对辅助非易失性存储器732的缓存。
图4示出了在服务器800上实现的功能块的示例实现。仅例如,可以通过特别地编程服务器700实现服务器800中描述的功能块中的每个功能块,使得对应于服务器800的每个块的指令被存储在存储器708中并且由图3的处理器704执行。如所描述的服务器800包括与边界服务器、节点服务器、以及网络服务器相关的功能块。
事务管理模块804从请求创建模块808接收事务请求。请求创建模块808从网络服务器模块812接收数据,并且基于该数据创建事务请求。
外部接口模块816诸如经由网络接口与请求者通信。在复杂的请求者不需要网络服务器的实现中,事务管理模块804可以直接与外部接口模块816通信。事务管理模块804确定对应于接收到的事务请求的辅助任务。可以由事务库模块820存储对应于每种类型的事务的辅助任务。
仅例如,事务库模块820可以包括具有针对每种类型的事务请求的条目的数据库或其它数据结构。条目可以包括关于相应的任务的列表的指针、引用、或数据库。条目还可以包括其中连续地执行任务的次序和/或指示在执行选定的任务之前哪个前导任务必须执行的数据结构。
当任务完成时,事务管理模块804使用响应翻译模块824进行响应,并且响应翻译模块842可以将响应翻译为适合于由网络服务器模块812显示的格式。基于辅助任务,事务管理模块804识别哪个节点服务器用来使用任务分配模块828分配每项任务。任务分配模块828可以存储任务和相关的服务器之间的映射,包括当多个服务器对应于单个任务时哪个服务器对应于每组数据。
仅例如,任务分配模块828可以包括数据库或包括针对每项任务的条目的其它数据结构,该条目指定相应的节点服务器。对于由多个节点服务器执行的任务,附加信息可以被存储在该条目中,或在由该条目引用的单独的位置中,指定哪个数据集对应于哪个节点服务器。
任务请求经由内部接口模块832被发送到其它服务器,该内部接口模块832可以与内部网络(诸如,无限带宽网络)通信。任务执行模块836负责执行任务,该任务可以包括使用数据处理模块840访问或修改数据库。数据处理模块840可以依赖于存储在数据存储模块844中的数据。任务执行模块836可以基于另外的任务追踪哪些任务正在进行中以及哪些任务正在等待响应。可以由任务状态存储模块848存储该信息。
数据再平衡模块852被配置为确定何时服务器800接近处理的容量或存储的容量。然后,数据再平衡模块852可以经由内部接口模块832与其它服务器协调以重新分配任务。重新分配的任务触发任务分配模块828中的更新,使得任务可以被路由到适当的服务器。此外,当任务被重新分配时,相应的数据被重新分配给适当的服务器。因此,数据再平衡模块852也将更新数据存储模块844。在各种实现中,即使当任务是待定的时,服务器也可以被再平衡。在这种情况下,数据再平衡模块852也可以更新任务状态存储模块848。
现在参考图5,提供网络连通性的示例方法在900开始。如果从用户接收到网络连接,则控制转移至904;否则,控制转移至908。在904,网络服务器将用户接口呈现给用户,诸如,通过经由HTTP使用HTML。在912,控制从用户接收事务信息,并且在916将信息转换为事务请求。在920,请求被转发到边界服务器或实现边界功能的另一个服务器。
控制在网络状态被存储的924继续。网络状态可以包括对于保持或恢复连接所必需的信息(诸如,互联网协议(IP)地址、端口、以及传输控制协议(TCP)序列号)。此外,网络状态可以存储与已经被进行和仍在进行的事务请求相关的数据。然后,控制在908继续。
在908,控制确定对于任何待定事务的响应是否准备好。如果是这样,控制转移至928;否则,控制返回至900。在928,控制检索与接收到的事务响应相关的状态,并且在932继续。在932,基于检索到的状态,控制建立与用户的连接,并且诸如通过网页向用户呈现响应。在各种实现中,控制不例示用于进行每个网络连接的过程。相反,状态信息被存储在存储库(诸如,数据库)中,使得连接可以保持不活跃相当长的时间,并且稍后可以从数据存储中查找状态信息。这样,可以由单个网络服务器处理更多数量的未完成事务。仅为了说明的目的,根据这些原则,网络服务器可以允许对给定的硬件的100000个同时的连接,而传统的服务器针对该相同的硬件会被限于1000个连接。
在图6A中,在给定的服务器的事务性能被监视的1000,节点之间的再平衡任务的高级示例开始。例如,可以监视用来完成事务所需的时间以及事务完成时间的统计方差。在1004,监视了处理器负载。仅例如,处理器负载可以包括平均处理器利用率或在100%利用率时处理器花费时间的百分比。
在1008,监视了可用存储。控制在1012继续,其中如果事务性能是可接受的,则控制在1016继续;否则,控制转移至1020。在1016,控制确定处理器负载是否大于阈值。如果是这样,控制转移至1020;否则,控制转移至1024。在1024,控制确定可用的存储是否小于阈值。如果是这样,控制在1020转移;否则,控制返回至1000。
在1020,控制识别用于再平衡目的的未充分使用的服务器。如果其事务性能、处理器负载、以及可用存储在预定界限内,服务器可以被认为是未充分使用的。如果,在1028,未充分使用的服务器是可用的,则控制在1032继续;否则,在1036,控制向系统管理员发出警报缺乏资源,并且控制返回至1000。
在1032,控制用识别到的未充分使用的服务器重新分配任务。在各种实现中,可以将整个任务分配给识别到的服务器,然而在其它实现和/或其他情况下,可以在服务器和识别到的服务器之间分割一个或多个任务。在1040,对应于转移的任务的数据也被转移至识别到的服务器。在1044,任务分配信息被更新以反映任务的再平衡。在1048,更新的任务分配信息被分发给其它服务器。
在图6B中,用于确定是否再平衡的全系统过程在定时器被初始化的1100开始。定时器可以被初始化为预定值,被称为再平衡时间。再平衡时间确定控制对再平衡是否为必须的进行评价的频度。在1104,如果定时器已经期满,则控制转移至1108;否则,控制转移至1112。在1112,如果再平衡已经被手动地请求(诸如,由管理员),则控制转移至1108;否则,控制返回至1104。在1108,选择了第一节点服务器,并且控制在1116继续。
在1116,控制确定所选的节点服务器的存储利用率(SU)以及处理器利用率(PU)。在1120,控制确定是否有附加的节点服务器来分析。如果是这样,控制转移至1124,其中下一个节点服务器被选定并且控制在1116继续;否则,控制转移至1128。在1128,控制计算跨过节点服务器的平均SU、最大SU、跨过节点服务器的平均PU、以及最大PU。
控制在1132继续,其中如果再平衡已经被手动地请求,则控制转移至1132;否则,控制转移至1136。在1136,如果最大SU除以平均SU大于第一阈值,则控制转移至1140;否则,控制转移至1144。在1144,如果最大PU除以平均PU大于第二阈值,则控制转移至1140;否则,控制返回至1100。在1140,基于最大SU明显地高于平均SU或者基于最大PU明显地高于平均PU,将执行再平衡。
在1140,控制确定最大利用率和平均利用率之间的差是否如此大,以至于再平衡时间应当被减少。因此,如果最大SU除以平均SU大于第三阈值(该第三阈值甚至大于第一阈值),则控制转移至1148以减小再平衡时间;否则,控制转移至1152。如果最大PU除以平均PU大于第四阈值(该第四阈值甚至大于第二阈值),则控制转移至1148;否则,控制转移至1132,其中服务器被再平衡,诸如,如图6C所示。在1148,减少再平衡时间,并且控制在1132继续。
在图6C中,示例再平衡过程在1200开始。在1200,控制确定PU或SU是否是更不平衡的。如果最大SU除以平均SU大于最大PU除以平均PU,则控制转移至1204;否则,控制转移至1208。在1204,SU已经被确定为比PU更不平衡,因此,对于具有最大SU的节点服务器,识别了贡献大部分给SU的任务。
在1212,如果其他节点服务器正执行识别到的任务,控制转移至1216;否则,控制转移至1220。在1216,选择执行识别到的任务并且具有小于平均SU的SU的节点服务器。在1224,如果任何节点服务器已经被选择,控制转移至1228;否则,控制转移至1220。在1228,控制分割具有最大SU的节点服务器与选定的节点服务器之间的识别到的任务。然后控制在1232继续。
该分割不需要在所有服务器之间是均等的,而是可以与可用的储存和/或处理成比例地进行。当基于SU分割时,控制可以在原始服务器和新分配的服务器之间尝试实现近似相等的SU。同样地,当基于PU分割时,控制可在原始服务器和新分配的服务器之间尝试实现近似相等的PU。
返回至1220,控制在具有最大SU的节点服务器和具有最低SU的节点服务器之间分割识别到的任务。然后,控制在1232继续。在1232,控制在对应于任务分割的节点服务器之间移动数据,并且在1236继续。在1236,为所有服务器和控制端更新任务分配信息。
返回至1208,PU比SU更加不平衡,并且因此,对于具有最大PU的节点服务器,识别了对PU贡献最多的任务。控制在1240继续,其中控制确定是否其它节点服务器执行识别到的任务。如果这样,控制转移至1244;否则,控制转移至1248。在1244,控制选择执行识别到的任务并且具有小于平均PU的PU的节点服务器。在1252,如果任何节点服务器已经被选择,控制转移至1256;否则,控制转移至1248。
在1248,控制在具有最大PU的节点服务器和选定的节点服务器之间分割识别到的任务,并且在1260继续。在1248,控制在具有最大PU的节点服务器和具有最低PU的节点服务器之间分割识别到的任务,并且在1260继续。在1260,基于执行的分割,对应于任务的数据被移动到适当的服务器。然后,控制在1236继续。
在图6D中,边界服务器1300经由无限带宽交换机1324与节点服务器1304、节点服务器1308、节点服务器1312、节点服务器1316、以及节点服务器1320通信。在第一种布置1330中,节点服务器1304执行任务A和任务B。同时,节点服务器1308执行任务B,节点服务器1312执行任务C,节点服务器1316执行任务D,并且节点服务器1320也执行任务D。在再平衡之后,如在1340所示的配置可以产生。
节点服务器1304仍执行任务A和任务B,节点服务器1308仍执行任务B,并且节点服务器1312仍执行任务C。节点服务器1316除了任务D以外现在执行任务C。节点服务器1320除了任务D以外也执行任务B。结果,节点服务器1308仅执行任务B相对于数据的子集。同样地,节点服务器1312基于数据的子集执行任务C。由节点服务器1316为了任务C对其余的数据进行作用,然而由节点服务器1320操作用于任务B的其余的数据。
在图7中,示出了示例性边界服务器功能。控制在1400开始,其中如果事务请求被接收到,控制转移至1404;否则,控制转移至1408。在1404,控制识别与事务相关的任务,并且在1412控制识别节点以执行识别到的任务。在1416,控制向识别到的节点发送任务请求。在1420,如果有附加的任务请求,控制返回至1416;否则,控制返回至1400。
在1408,如果任务响应已经被接收,则控制转移至1424;否则,控制返回至1400。在1424,控制确定在事务完成之前是否需要接收附加的任务响应。如果是这样,控制返回至1400;否则,控制转移至1428。在1428,基于接收到的任务响应,控制确定对于事务的适当的响应。在1432,控制向请求者发送事务响应并返回1400。
在图8A中,对于节点服务器的控制在1500开始。如果接收到任务请求,控制转移至1504;否则,控制保持在1500。在1504中,将任务进行分析,并且在1508,如果基于任务本身以及对应于任务请求的必需数据两者当前节点对于该任务请求是正确的节点,控制转移至1512;否则,控制转移至1516。
在1516,节点已经接收到不正确的任务请求,该请求可以是节点需要更新任务分配信息的指示。因此,任务分配信息被更新并且控制转移到1520,其中,如果基于更新的任务分配信息,这对于任务请求是正确的节点,控制在1512继续;否则,控制转移至1524。在1524,控制指导发送服务器来更新其任务分配信息,使得任务可被路由到适当的服务器。然后,控制返回至1500。
在1512,控制处理任务,并且在1528,如果需要数据库改变,控制转移至1532;否则,控制转移至1536。在1536,控制确定是否数据库改变被授权。如果是这样,控制转移至1540;否则,控制转移至1544。在1544,控制用认证失败对任务请求作出响应,并且控制返回至1500。
在1540,数据库改变被授权,并且因此数据库改变被原子地处理,使得整个数据库改变成功或失败,并且如果改变失败,则数据库处于未改变状态。控制在1548继续,其中如果数据库改变是成功的,则控制转移至1552;否则,控制转移至1556。在1556,控制以数据库失败响应,并且返回至1500。在1552,控制提交数据库改变并且在1536继续。
在1536,控制识别是否需要执行任何附加的任务。如果是这样,在1560,控制转移至1564;否则,控制转移至1568(见图8B,用标有圆圈A标注)。在1564,控制识别节点以执行附加的任务,并且在1572,控制向识别到的节点发送针对附加的任务的请求。然后,控制返回至1560。在1568(见图8B),任务状态被保存,使得服务器可以继续处理其它任务,同时等待对子任务作出响应。控制在1576继续,其中如果任务被接收,控制转移至1580;否则,控制返回至1500(见图8A)。
在1580,控制检索对应于接收到的响应的任务状态,并且在1584,控制分析该响应。在1588,控制确定是否需要附加的处理。如果是这样,控制转移至1512(见图8A);否则,控制转移至1592。在1592,基于接收到的子任务响应,控制向任务请求发送响应。在1596,因为任务完成,所以控制清除任务状态信息,并且返回至1500。
前面的说明本质上仅仅是说明性的,而决不是旨在限制本公开、其应用、或用途。本公开的广泛教导可以以各种形式来实现。因此,虽然本公开包括特定的示例,但是本公开的真实范围不应如此限制,因为根据附图、说明书、以及下面的权利要求的研究其它修改将变得显而易见。如本文所用,A、B、和C中的至少一个短语应当被解释为表示逻辑(A或B或C),使用非排他性的逻辑“或”。应该理解,方法中的一个或多个步骤可以以不同顺序(或同时)被执行而不改变本发明的原理。
在本申请中,包括下面的定义,可以用术语电路替换术语模块。术语模块可以指,成为一部分,或包括:专用集成电路(ASIC);数字、模拟、或混合模拟/数字离散电路;数字、模拟、或混合模拟/数字集成电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的处理器(共享的、专用的或群组);存储由处理器执行的代码的存储器(共享的、专用的或群组);提供所描述的功能的其它合适的硬件组件;或上述的一些或所有的组合(诸如,片上系统)。
如上面使用的术语“代码”可以包括软件、固件、和/或微代码,并且可以指程序、例程、函数、类、和/或对象。术语“共享处理器”包括执行来自多个模块一些或所有代码的单个处理器。术语“组处理器”包括处理器,其与附加的处理器联合执行来自一个或多个模块的一些或所有代码。术语“共享存储器”包括存储来自多个模块的一些或全部代码的单个存储器。术语“组存储器”包括存储器,其与附加的存储器联合存储来自一个或多个模块的一些或全部代码。术语“存储器”可以是术语“计算机可读介质”的子集。术语“计算机可读介质”不包括暂时通过介质传播的电信号和电磁信号,并且因此可以被认为是有形的和非暂时的。非暂时有形的计算机可读介质的非限制性示例包括非易失性存储器、易失性存储器、磁存储器、和光存储器。
通过由一个或多个处理器执行的一个或多个计算机程序可以部分或完全实现本申请中所描述的装置和方法。计算机程序包括处理器可执行指令,其被存储在至少一个非暂时的有形的计算机可读介质上。计算机程序也可以包括和/或依赖于存储的数据。
Claims (30)
1.一种系统,该系统包括:
多个服务器,每个服务器包括处理器和存储器;以及
边界服务器,所述边界服务器包括处理器和存储器,并且被配置为:
接收对事务的请求,其中,可以通过执行多个任务来完成所述事务,
识别所述多个任务中的第一任务,
通过基于所述第一任务的类型查阅存储在所述边界服务器的存储器中的路由数据来识别所述多个服务器中的初始服务器,以执行所述第一任务,并且
请求所述初始服务器执行所述第一任务,
其中,所述多个服务器中的每个服务器被配置为:响应于从所述边界服务器接收对任务的请求,
使用唯一地存储在所述服务器上的与所接收到的任务相关的数据执行所接收到的任务,
确定所接收到的任务是否需要附加的任务,
通过基于所述附加的任务的类型查阅存储在所述服务器的存储器中的路由数据来识别所述多个服务器中的下一个服务器,以执行所述附加的任务,
请求所述下一个服务器执行所述附加的任务,并且
响应于从所述下一个服务器接收完成指示,用对应于所接收到的任务的完成指示对所述边界服务器作出响应。
2.根据权利要求1所述的系统,所述系统还包括联网设备,所述联网设备被配置为使所述多个服务器彼此互相连接并且与所述边界服务器互相连接。
3.根据权利要求2所述的系统,其中,所述边界服务器(i)包括与所述联网设备通信的第一网络端口以及不与所述联网设备通信的第二网络端口,并且(ii)通过所述第二网络端口接收对所述事务的所述请求。
4.根据权利要求3所述的系统,其中,所述边界服务器被配置为通过网络服务经由互联网接收所述事务请求。
5.根据权利要求3所述的系统,其中,所述边界服务器被配置为从网络服务器接收所述事务请求。
6.根据权利要求5所述的系统,所述系统还包括所述网络服务器,其中,所述网络服务器向用户提供网页,并且基于由所述用户经由所述网页提供的输入来准备所述事务请求。
7.根据权利要求2所述的系统,其中,所述联网设备包括无限带宽交换机。
8.根据权利要求2所述的系统,其中,所述初始服务器和所述下一个服务器被配置为使得经由所述联网设备将数据选择性地从所述初始服务器的存储器转移到所述下一个服务器的存储器,而不涉及所述初始服务器的处理器或所述下一个服务器的处理器。
9.根据权利要求8所述的系统,其中,所述多个服务器各自实现远程直接存储器访问RDMA。
10.根据权利要求1所述的系统,所述系统还包括镜像服务器,所述镜像服务器存储由所述多个服务器中的指定的服务器存储的数据的副本,其中,所述镜像服务器被配置为响应于所述指定的服务器的故障、代替所述指定的服务器执行任务。
11.根据权利要求1所述的系统,其中,所述多个服务器共同地执行多种类型的任务。
12.根据权利要求11所述的系统,其中:
所述初始服务器被配置为执行所述多种类型的任务中的第一类型的任务,并且
所述下一个服务器被配置为执行所述多种类型的任务中的第二类型的任务。
13.根据权利要求12所述的系统,其中:
所述多个服务器中的第一服务器被配置为执行所述第二类型的任务,
所述多个服务器中的第二服务器也被配置为执行所述第二类型的任务,
所述第一服务器存储与所述第二类型的任务相关的第一组数据,
所述第二服务器存储与所述第二类型的任务相关的第二组数据,并且
所述第一组数据与所述第二组数据是互相排斥的。
14.根据权利要求13所述的系统,其中:
响应于对应于所述第一组数据的所述附加的任务,所述路由数据指定所述第一服务器作为所述下一个服务器,并且
响应于对应于所述第二组数据的所述附加的任务,所述路由数据指定所述第二服务器作为所述下一个服务器。
15.根据权利要求13所述的系统,其中,所述第一服务器和所述第二服务器被配置为响应于所述第一服务器的过度利用、动态地将数据从所述第一组数据移动到所述第二组数据中。
16.根据权利要求12所述的系统,其中,响应于所述初始服务器的过度利用,
所述多个服务器中的第一服务器被动态地配置为也执行所述第一类型的任务,
与由所述初始服务器存储的所接收到的任务相关的所述数据被分成第一组数据和第二组数据,
所述第一组数据与所述第二组数据是互相排斥的,并且所述第二组数据被移动到所述第一服务器。
17.一种系统,该系统包括:
多个服务器,所述多个服务器各自包括处理器和存储器,
其中,所述多个服务器中的第一服务器被配置为:
接收对事务的请求,其中,通过执行多个任务能够完成所述事务,
选择所述多个任务中的第一任务,
通过基于所述第一任务的类型查阅存储在所述第一服务器的所述存储器中的路由数据来识别所述多个服务器中的第二服务器,以执行所述第一任务,并且
请求所述第二服务器执行所述第一任务,
其中,所述第二服务器被配置为:响应于接收对所述第一任务的所述请求,
使用唯一地存储在所述第二服务器上的数据执行所述第一任务,
确定所述第一任务是否需要附加的任务,并且
响应于需要附加的任务的所述第一任务,
通过基于所述附加的任务的类型查阅存储在所述第二服务器的所述存储器中的路由数据来识别所述多个服务器中的第三服务器,以执行所述附加的任务,
请求所述第三服务器执行所述附加的任务,并且
响应于从所述第三服务器接收完成指示,用对应于所述第一任务的完成指示对所述第一服务器作出响应。
18.一种操作系统的方法,所述系统包括边界服务器以及多个服务器,所述边界服务器包括处理器和存储器,并且所述多个服务器中的每个服务器包括处理器和存储器,所述方法包括:
在所述边界服务器处,接收对事务的请求,其中,能够通过执行多个任务来完成所述事务;
在所述边界服务器处,识别所述多个任务中的第一任务;
在所述边界服务器处,通过基于所述第一任务的类型查阅存储在所述边界服务器的存储器中的路由数据来识别所述多个服务器中的初始服务器,以执行所述第一任务;
在所述边界服务器处,请求所述初始服务器执行所述第一任务;并且
在所述多个服务器中的一个服务器处,响应于从所述边界服务器接收对任务的请求:
使用被唯一地存储在所述服务器上的与所接收到的任务相关的数据执行所接收到的任务;
确定所接收到的任务是否需要附加的任务;
通过基于所述附加的任务的类型查阅存储在所述服务器的存储器中的路由数据来识别所述多个服务器中的下一个服务器,以执行所述附加的任务;
请求所述下一个服务器执行所述附加的任务;并且
响应于从所述下一个服务器接收完成指示,用对应于所接收到的任务的完成指示对所述边界服务器作出响应。
19.根据权利要求18所述的方法,所述方法还包括:在所述边界服务器处、使用网络服务经由互联网接收所述事务请求。
20.根据权利要求18所述的方法,所述方法还包括:在所述边界服务器处从网络服务器接收所述事务请求。
21.根据权利要求20所述的方法,所述方法还包括:在所述网络服务器处向用户提供网页,并且基于由所述用户经由所述网页提供的输入来准备所述事务请求。
22.根据权利要求18所述的方法,所述方法还包括:选择性地将数据从所述初始服务器的存储器转移到所述下一个服务器的存储器,而不涉及所述初始服务器的处理器或所述下一个服务器的处理器。
23.根据权利要求22所述的方法,所述方法还包括:在所述多个服务器中的每个服务器处实现远程直接存储器访问RDMA。
24.根据权利要求18所述的方法,所述方法还包括:
在镜像服务器处,存储由所述多个服务器中的指定的服务器存储的数据的副本;并且
在所述镜像服务器处,响应于所述指定的服务器的故障、代替所述指定的服务器执行任务。
25.根据权利要求18所述的方法,所述方法还包括:使用所述多个服务器共同地执行多种类型的任务。
26.根据权利要求25所述的方法,所述方法还包括:
在所述初始服务器处,执行所述多种类型的任务中的第一类型的任务;并且
在所述下一个服务器处,执行所述多种类型的任务中的第二类型的任务。
27.根据权利要求26所述的方法,所述方法还包括:
在所述多个服务器中的第一服务器处,执行所述第二类型的任务;
在所述第一服务器处,存储与所述第二类型的任务相关的第一组数据;
在所述多个服务器中的第二服务器处,执行所述第二类型的任务;并且
在所述第二服务器处,存储与所述第二类型的任务相关的第二组数据,
其中,所述第一组数据与所述第二组数据是互相排斥的。
28.根据权利要求27所述的方法,其中:
响应于对应于所述第一组数据的所述附加的任务,所述路由数据指定所述第一服务器作为所述下一个服务器,并且
响应于对应于所述第二组数据的所述附加的任务,所述路由数据指定所述第二服务器作为所述下一个服务器。
29.根据权利要求27所述的方法,所述方法还包括:响应于所述第一服务器的过度利用,动态地将数据从所述第一组数据移动到所述第二组数据中。
30.根据权利要求26所述的方法,所述方法还包括:
在所述多个服务器中的第一服务器处,执行所述第一类型的任务;并且
响应于所述初始服务器的过度利用,
将与所接收到的任务相关的所述数据分为第一组数据和第二组数据,并且
将所述第二组数据移动到所述第一服务器,
其中,所述第一组数据与所述第二组数据是互相排斥的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/752,985 US9313087B2 (en) | 2013-01-29 | 2013-01-29 | Distributed computing architecture |
US13/752,985 | 2013-01-29 | ||
PCT/IB2014/058618 WO2014118704A1 (en) | 2013-01-29 | 2014-01-28 | Distributed computing architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104981781A true CN104981781A (zh) | 2015-10-14 |
CN104981781B CN104981781B (zh) | 2019-04-23 |
Family
ID=50272666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480006391.6A Active CN104981781B (zh) | 2013-01-29 | 2014-01-28 | 分布式计算系统及操作分布式计算系统的方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9313087B2 (zh) |
EP (1) | EP2951690A1 (zh) |
JP (1) | JP6468499B2 (zh) |
KR (1) | KR20150117258A (zh) |
CN (1) | CN104981781B (zh) |
WO (1) | WO2014118704A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008017A (zh) * | 2018-12-06 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种分布式处理系统及方法、一种计算设备及存储介质 |
CN110008018A (zh) * | 2019-01-17 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种批量任务处理方法、装置及设备 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9128779B1 (en) * | 2014-07-31 | 2015-09-08 | Splunk Inc. | Distributed tasks for retrieving supplemental job information |
US20170118293A1 (en) * | 2015-10-26 | 2017-04-27 | Trilliant Networks, Inc. | Method and system for efficient task management |
US10504076B2 (en) * | 2016-02-16 | 2019-12-10 | Mastercard International Incorporated | Systems and methods for distributing payment network services |
US10129130B2 (en) * | 2016-03-21 | 2018-11-13 | International Business Machines Corporation | Management of connections of a client application including server selection |
US10862821B1 (en) * | 2016-06-16 | 2020-12-08 | Amazon Technologies, Inc. | Managing processor load in a multi-tenant environment |
US11553038B1 (en) * | 2021-10-22 | 2023-01-10 | Kyndryl, Inc. | Optimizing device-to-device communication protocol selection in an edge computing environment |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1970805A1 (en) * | 2007-03-16 | 2008-09-17 | Sap Aktiengesellschaft | Multi-objective allocation of computational jobs in client-server or hosting environments |
US20100146516A1 (en) * | 2007-01-30 | 2010-06-10 | Alibaba Group Holding Limited | Distributed Task System and Distributed Task Management Method |
US20120079234A1 (en) * | 2010-09-28 | 2012-03-29 | Microsoft Corporation | Performing computations in a distributed infrastructure |
CN102480512A (zh) * | 2010-11-29 | 2012-05-30 | 国际商业机器公司 | 用于扩展服务器端处理能力的方法和装置 |
WO2012057956A3 (en) * | 2010-10-27 | 2012-06-21 | Microsoft Corporation | Reactive load balancing for distributed systems |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0827789B2 (ja) * | 1987-01-20 | 1996-03-21 | 日本電信電話株式会社 | 分散処理方法 |
US6263360B1 (en) * | 1998-06-01 | 2001-07-17 | Sri International | System uses filter tree and feed handler for updating objects in a client from a server object list |
US6081900A (en) | 1999-03-16 | 2000-06-27 | Novell, Inc. | Secure intranet access |
US7401112B1 (en) | 1999-05-26 | 2008-07-15 | Aspect Communication Corporation | Methods and apparatus for executing a transaction task within a transaction processing system employing symmetric multiprocessors |
JP2001101149A (ja) * | 1999-09-30 | 2001-04-13 | Nec Corp | 分散並列型データ処理装置及び分散並列型データ処理プログラムを記録した記録媒体並びに分散並列型データ処理システム |
US7062556B1 (en) * | 1999-11-22 | 2006-06-13 | Motorola, Inc. | Load balancing method in a communication network |
US7418470B2 (en) | 2000-06-26 | 2008-08-26 | Massively Parallel Technologies, Inc. | Parallel processing systems and method |
US20020120716A1 (en) * | 2000-12-22 | 2002-08-29 | Balaji Raghunathan | Server frame work for a database server |
JP2003122912A (ja) * | 2001-10-17 | 2003-04-25 | Hitachi Ltd | 業務支援システム |
SE0200418D0 (sv) * | 2002-02-13 | 2002-02-13 | Ericsson Telefon Ab L M | A method and apparatus for computer load sharing and data distribution |
US7647523B2 (en) * | 2002-06-12 | 2010-01-12 | International Business Machines Corporation | Dynamic binding and fail-over of comparable web service instances in a services grid |
US20050021836A1 (en) | 2003-05-01 | 2005-01-27 | Reed Carl J. | System and method for message processing and routing |
CN101354694B (zh) | 2007-07-26 | 2010-10-13 | 上海红神信息技术有限公司 | 基于mpu架构的超高扩展超级计算系统 |
US20090204718A1 (en) * | 2008-02-08 | 2009-08-13 | Lawton Kevin P | Using memory equivalency across compute clouds for accelerated virtual memory migration and memory de-duplication |
CN101958830B (zh) | 2009-07-14 | 2014-03-12 | 中兴通讯股份有限公司 | 一种网络部署系统及其映射和数据转发方法 |
US8364844B2 (en) | 2009-11-13 | 2013-01-29 | International Business Machines Corporation | Deadlock-free class routes for collective communications embedded in a multi-dimensional torus network |
US8549536B2 (en) * | 2009-11-30 | 2013-10-01 | Autonomy, Inc. | Performing a workflow having a set of dependancy-related predefined activities on a plurality of task servers |
JP5123961B2 (ja) * | 2010-02-04 | 2013-01-23 | 株式会社トライテック | 分散コンピューティングシステム、分散コンピューティング方法及び分散コンピューティング用プログラム |
US8291033B2 (en) | 2010-04-28 | 2012-10-16 | International Business Machines Corporation | Combining multiple hardware networks to achieve low-latency high-bandwidth point-to-point communication |
JP5597872B2 (ja) * | 2010-10-21 | 2014-10-01 | 株式会社日立製作所 | 分散情報処理システム、分散情報処理方法及びデータ転送装置 |
WO2012110079A1 (en) * | 2011-02-15 | 2012-08-23 | Nokia Siemens Networks Oy | Distribution of data processing |
-
2013
- 2013-01-29 US US13/752,985 patent/US9313087B2/en active Active
-
2014
- 2014-01-28 KR KR1020157020709A patent/KR20150117258A/ko not_active Application Discontinuation
- 2014-01-28 CN CN201480006391.6A patent/CN104981781B/zh active Active
- 2014-01-28 WO PCT/IB2014/058618 patent/WO2014118704A1/en active Application Filing
- 2014-01-28 EP EP14709748.9A patent/EP2951690A1/en not_active Ceased
- 2014-01-28 JP JP2015554297A patent/JP6468499B2/ja active Active
-
2016
- 2016-04-08 US US15/094,484 patent/US9860192B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100146516A1 (en) * | 2007-01-30 | 2010-06-10 | Alibaba Group Holding Limited | Distributed Task System and Distributed Task Management Method |
EP1970805A1 (en) * | 2007-03-16 | 2008-09-17 | Sap Aktiengesellschaft | Multi-objective allocation of computational jobs in client-server or hosting environments |
US20120079234A1 (en) * | 2010-09-28 | 2012-03-29 | Microsoft Corporation | Performing computations in a distributed infrastructure |
WO2012057956A3 (en) * | 2010-10-27 | 2012-06-21 | Microsoft Corporation | Reactive load balancing for distributed systems |
CN102480512A (zh) * | 2010-11-29 | 2012-05-30 | 国际商业机器公司 | 用于扩展服务器端处理能力的方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008017A (zh) * | 2018-12-06 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种分布式处理系统及方法、一种计算设备及存储介质 |
CN110008017B (zh) * | 2018-12-06 | 2023-08-15 | 创新先进技术有限公司 | 一种分布式处理系统及方法、一种计算设备及存储介质 |
CN110008018A (zh) * | 2019-01-17 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种批量任务处理方法、装置及设备 |
CN110008018B (zh) * | 2019-01-17 | 2023-08-29 | 创新先进技术有限公司 | 一种批量任务处理方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
US20140214996A1 (en) | 2014-07-31 |
US9313087B2 (en) | 2016-04-12 |
JP6468499B2 (ja) | 2019-02-13 |
US20160226792A1 (en) | 2016-08-04 |
KR20150117258A (ko) | 2015-10-19 |
CN104981781B (zh) | 2019-04-23 |
US9860192B2 (en) | 2018-01-02 |
WO2014118704A1 (en) | 2014-08-07 |
JP2016504696A (ja) | 2016-02-12 |
EP2951690A1 (en) | 2015-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104981781A (zh) | 分布式计算架构 | |
CN107111517B (zh) | 针对归约器任务的虚拟机优化分配和/或生成 | |
CN105684377B (zh) | 一种创建支持mpp数据库中的可重读隔离级别的分布式事务管理器的系统和方法 | |
CN100418057C (zh) | 用于应用程序分布式管理的启用网格的虚拟机的方法和系统 | |
CN108431796B (zh) | 分布式资源管理系统和方法 | |
US9141677B2 (en) | Apparatus and method for arranging query | |
CN104050201A (zh) | 用于多租户分布式环境中的数据管理的方法和设备 | |
US9807152B2 (en) | Distributed processing device and distributed processing system as well as distributed processing method | |
CN105589754A (zh) | 用于访问共享存储器中的数据的机制和方法 | |
CN103534687A (zh) | 聚簇数据格网中的可扩展集中动态资源分配 | |
US8499298B2 (en) | Multiprocessing transaction recovery manager | |
CN103959275A (zh) | 动态进程/对象范围的存储器关联性调整器 | |
CN110458468A (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
JP2014120097A (ja) | 情報処理装置、プログラム、及び、情報処理方法 | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
US20200272526A1 (en) | Methods and systems for automated scaling of computing clusters | |
CN109033315A (zh) | 数据查询方法、客户端、服务器及计算机可读介质 | |
CN104166581A (zh) | 一种面向增量制造设备的虚拟化方法 | |
Chang et al. | Development of multiple big data analytics platforms with rapid response | |
US20210004658A1 (en) | System and method for provisioning of artificial intelligence accelerator (aia) resources | |
CN110325980A (zh) | 用于数据库绑定型应用的用户界面后端集群的扩展技术 | |
KR101448861B1 (ko) | 동기적 메시지 기반 대량 병렬처리 시스템 | |
US10374893B1 (en) | Reactive non-blocking input and output for target device communication | |
CN110033145B (zh) | 财务共享作业分单方法及装置、设备和存储介质 | |
CN109804351B (zh) | 对异步计算作业的增强治理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |