硬件实现的负载平衡的制作方法

文档序号:18547595发布日期:2019-08-27 21:49阅读:121来源:国知局
硬件实现的负载平衡的制作方法

服务器系统使用负载平衡过程来将请求定向到服务器系统中负载较少的服务器,以在处置大量请求时提高效率。许多当前的负载平衡解决方案是软件驱动的,并且用相对陈旧的负载数据来执行负载平衡过程。因此,当根据这些负载平衡过程将请求路由到服务器时,到请求到达该服务器时,该服务器上的负载可能已经增加超过了由软件驱动的负载平衡器基于陈旧负载数据所计算出的负载,导致该服务器无法及时服务该请求。



技术实现要素:

为了解决上述问题,提供了一种用于硬件实现的负载平衡的服务器系统。服务器系统可以包括多个服务器,每个服务器包括至少一个硬件加速设备和至少一个处理器,该至少一个处理器由内部数据总线通信地耦合到硬件加速设备并执行主机服务器实例,多个服务器的主机服务器实例共同提供软件平面,并且多个服务器的硬件加速设备共同提供实现多个硬件加速服务的硬件加速平面,其中每个硬件加速设备在存储器中维护包含负载数据的数据结构,该负载数据指示实现多个硬件加速服务中的指定硬件加速服务的多个目标硬件加速设备中的每个目标硬件加速设备的负载,并且其中当请求硬件加速设备路由对指定硬件加速服务的请求时,请求硬件加速设备将请求路由到目标硬件加速设备,目标硬件加速设备由数据结构中的负载数据指示为具有比其他目标硬件加速设备更低的负载。

提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中提到的任何或所有缺点的实现。

附图说明

图1是示出本说明书的示例服务器系统的示意图。

图2是示出图1的示例服务器系统的服务器集群的示意图。

图3是图1的示例服务器系统的示例硬件加速设备的示意图。

图4是示出对图1的示例服务器系统的硬件加速服务的示例请求的示意图。

图5继续对图4的硬件加速服务的示例请求。

图6是图示多步骤请求的图1的服务器系统的示意图。

图7是用于基于硬件的负载平衡的示例方法的流程图,该示例方法可以使用图1的此服务器系统或其他合适的服务器系统硬件来实现。

图8是示出图7的方法的附加步骤的另一流程图。

图9是可以在图1的服务器系统中使用的示例性计算机硬件的示意图。

具体实施方式

图1图示了包括多个服务器102的服务器系统100,多个服务器102共同提供软件平面104和硬件加速平面106。软件平面104包括软件驱动的组件的集合(每个软件驱动的组件由图1中的符号“s”来标注),并且硬件加速平面106包括硬件加速的组件的集合(每个硬件加速的组件由图1中的符号“h”来标注)。在一个示例中,每个主机组件可以对应于由多个服务器102之一的一个或多个处理器所执行的主机服务器实例。在该示例中,每个硬件加速组件可以对应于包括用于实现功能的硬件逻辑的硬件加速设备,诸如现场可编程门阵列(fpga)设备、大规模并行处理器阵列(mppa)设备、图形处理单元(gpu)、专用集成电路(asic)、多处理器片上系统(mpsoc)等。

术语“硬件”加速组件还可以涵盖利用硬件加速设备来执行功能的其他方式,诸如例如,a)在硬asic逻辑等中实现至少一些任务的情况;b)在软(可配置)fpga逻辑等中实现至少一些任务的情况;c)至少一些任务作为在fpga软件处理器覆盖等上的软件运行的情况;d)至少一些任务作为在硬件asic处理器等上的软件运行的情况,或其任何组合。应当理解,硬件加速平面106可以表示诸如例如fpga设备之类的硬件加速设备的同构集合。另一方面,硬件加速平面106可以表示不同类型的硬件加速设备的异构集合,不同类型的硬件加速设备包括具有不同的相应处理能力和架构的不同类型的fpga设备、fpga设备和其他类型的硬件加速设备的混合等等。

处理器通常使用时间执行范例来执行操作,例如通过使用其处理器硬件线程中的每个来顺序地执行机器可读指令。相反,硬件加速设备可以使用空间范例来执行操作,例如通过使用大量并行逻辑元件来执行计算任务。因此,与处理器和软件驱动的组件相比,硬件加速组件可以在更少的计算时间内执行可以被分解成许多并行任务的一些操作。因此,与本文所使用的术语“硬件加速设备”相关联的“加速”限定器(qualifier)可以反映其用于加速由服务器的处理器所执行的功能的潜力。

在一个示例中,服务器系统100对应于经由标准网络基础设施通信地耦合多个服务器102的数据中心环境。转到图2,多个服务器102被组织成多个服务器集群200,每个服务器集群包括机架顶部(tor)网络交换机202、多个服务器102中的两个或更多个服务器(诸如服务器206、208、...和210)、以及通信地耦合机架顶部网络交换机202和两个或更多个服务器的背板204。例如,每个服务器集群200可以对应于服务器机架,该服务器机架为tor交换机202和在相同服务器机架中物理上彼此靠近定位的多个服务器206、208、...和210提供物理结构、通风等。通信地耦合服务器机架中的每个服务器的背板204可以促进在相同服务器机架中的服务器之间的网络分组的低延迟和高带宽交换。

如图2中所图示,服务器集群200中的每个服务器206、208、...、210包括至少一个硬件加速设备212和至少一个处理器214,至少一个处理器214由内部数据总线216通信地耦合到硬件加速设备212并执行主机服务器实例218。如所示,每个服务器可以包括多于一个处理器,诸如附加处理器220等等。多于一个处理器可以各自执行分开的主机服务器实例218,或者可以共同执行单个主机服务器实例。在一个示例中,内部数据总线216可以采取例如外围组件互连快速(pcie)链路的形式。备选地,可以使用其他格式的数据总线。应当理解,术语“内部数据总线”中使用的“内部”指的是以下事实:数据总线的至少一部分通常被容纳在与服务器的处理器相同的壳体(其用作法拉第笼)中,并且应该被理解为涵盖连接壳体中的服务器的处理器与被插入到服务器的电路板上的pcie插槽中的内部安装的硬件加速组件(作为一个示例)的数据总线,或者连接到被插入到例如服务器的壳体的外部表面上的pcie端口的外部耦合的硬件加速组件的数据总线。如所图示,硬件加速设备212还经由网络接口控制器(nic)218间接耦合到处理器214,网络接口控制器(nic)218也由内部数据总线216耦合到处理器214,内部数据总线216例如可以包括一个或多个内部数据总线作为子组件。

最后,如图2中所图示,服务器集群200中的每个服务器208的硬件加速设备212耦合到tor网络交换机202。因此,在所图示的示例中,硬件加速设备212提供处理器214通过其来与服务器集群200中的其他服务器208,...,210以及与服务器系统100的多个服务器102中的其他服务器交互的唯一路径。除了其他效果之外,图2的架构还允许耦合到处理器214的硬件加速设备212对从tor网络交换机202接收和/或发送到tor网络交换机202的分组执行处理(例如,通过执行加密、压缩等)而不增加一个或多个处理器214、220等上的计算负担。

在该示例中,每个主机服务器实例218由内部数据总线216耦合到至少一个硬件加速设备212,使得这些组件在物理上耦合在一起作为服务器。硬件加速设备和由相同服务器中的处理器执行的主机服务器组件在本文中可以被称为“本地”硬件加速设备和“本地”主机服务器实例,以将其与对应于其他服务器的其他硬件加速设备和主机服务器实例区分开。另一方面,其他服务器的硬件加速设备和主机服务器实例在本文中可以被称为“远程”硬件加速设备和“远程”主机服务器实例,以将它们与特定服务器的本地硬件加速设备和本地主机服务器实例区分开。在此上下文中对“远程”的使用并不需要将远程设备定位在来自请求设备的广域网(wan)上,因为它们通常在相同数据中心内被提供。另外,相同服务器集群内的服务器可以被称为“对等”服务器,以将它们与服务器系统100中不在该特定服务器集群中的其他服务器区分开。

转回到图1,由多个服务器102的处理器执行的主机服务器实例共同提供软件平面104,并且多个服务器102的硬件加速设备共同提供硬件加速平面106。图1示出了软件平面104的示例本地主机服务器实例108,示例本地主机服务器实例108由处理器执行,该处理器由内部数据总线112耦合到硬件加速平面106的本地硬件加速组件110。该配对形成多个服务器102中的单个服务器。更一般地,图1示出了软件平面104通过多个单独的内部数据总线耦合到硬件加速平面106,图1将其统称为本地(h)到本地(s)耦合114。

本地主机服务器实例108还可以与硬件加速平面106中的其他远程硬件加速设备间接通信。例如,本地主机服务器实例108经由本地硬件加速设备110来访问远程硬件加速设备116,本地硬件加速设备110可以经由网络基础设施118来与远程硬件加速设备116通信。在一个示例中,网络基础设施118包括公共网络基础设施,以经由tor网络交换机将服务器集群内的服务器耦合在服务器机架内。如图1中所图示,服务器系统100包括多个服务器集群,每个服务器集群具有相关联的tor网络交换机,并且可以具有图2中描述的架构。网络基础设施118还可以包括将tor网络交换机连接在一起的更高级别交换基础设施120(l1)和(l2)。更高级别交换基础设施120可以采取任何合适的联网架构的形式,并且可以由任何合适的(多个)路由协议来驱动。在所图示的示例中,更高级别基础设施120包括汇聚交换机l1和核心交换机l2的集合。然而,应当理解,更高级别交换基础设施可以包括任何合适数目的交换机级别。

因此,如图1中所图示,软件平面104的每个主机服务器实例可以通过相应的硬件加速设备和网络基础设施118来与其他主机服务器实例通信。因此,应当理解,用来将每个主机服务器实例通信地耦合到软件层104中的其他主机服务器实例的相同网络基础设施118还将每个硬件加速设备通信地耦合到硬件加速层106中的其他硬件加速设备。在服务器系统100的示例中,软件平面104中的主机服务器实例之间的交互独立于硬件加速平面106中的硬件加速设备之间的交互。特别地,例如,两个或更多个硬件加速设备可以在来自软件平面104的主机服务器实例的任何定向或干预之外在彼此之间发送和消耗网络分组,并且主机服务器实例不会“知道”硬件加速平面106中正在发生的任何特定交互或以其他方式使其成为计算负担。另一方面,主机服务器实例可以通过发出请求来发起在硬件加速平面106中发生的交互,该请求可以由针对该特定主机服务器实例的本地硬件加速设备读取和路由。

在一个示例中,服务器系统100使用以太网协议在网络基础设施118上传输ip分组。在该示例中,服务器系统100中的多个服务器102的每个主机服务器实例可以与针对包含执行该主机服务器实例的处理器的特定服务器的单个物理ip地址相关联。相同服务器中的本地硬件加速设备可以采用相同的ip地址。服务器可以通过若干方法确定传入分组是否以本地主机服务器实例而不是本地硬件加速组件为目的地。例如,以本地硬件加速设备为目的地的分组可以被制定为用户数据报协议(udp)分组,其选定被指派给本地硬件加速设备的特定端口。在主机方面,以本地主机服务器实例为目的地的分组不被制定为udp分组。在另一示例中,可以基于每个分组中的状态标志的值来区分属于硬件加速平面106的分组与属于软件平面104的分组。

硬件加速平面106实现多个硬件加速服务。例如,多个硬件加速服务可以包括例如加密服务、昂贵的压缩服务、深度神经网络服务、生物信息学服务、web搜索排名服务、决策树计算服务等。应当理解,上面提及的硬件加速服务仅仅是示例性的,并且上面未具体提及的任何其他硬件加速服务也可以被包括在多个硬件加速服务中。

图3图示了硬件加速层106的示例硬件加速设备300,其例如可以被实现为fpga设备。应当理解,硬件加速设备的形式不限于所图示的示例,并且可以使用其他硬件加速设备架构。

如所图示,示例硬件加速设备300包括桥接器302,其用于将硬件加速设备300经由nic接口304耦合到网络接口控制器并且经由tor接口306耦合到本地机架顶部交换机。在一个示例中,桥接器302支持两种模式。在第一模式中,桥接器302提供允许来自nic或tor的流量流入硬件加速设备300、并且允许来自硬件加速设备300的流量流出到nic和tor的数据路径。硬件加速设备300可以对通过桥接器302流动的流量执行处理,包括多个硬件加速服务中的硬件加速服务,诸如例如压缩、加密、web搜索排名等。在第二模式中,桥接器302支持允许流量在nic和tor之间流动而不由硬件加速设备300进一步处理的数据路径。在内部,桥接器可以由缓冲接收分组的各种先进先出缓冲器(fifo)(308、310)以及将分组路由到其期望目的地的各种选择器和仲裁逻辑组成。旁路控制312控制桥接器302以第一模式还是第二模式操作。

如图3中进一步所图示,存储器控制器314管控硬件加速设备300和本地存储器316之间的交互,本地存储器316诸如包含硬件加速设备300的服务器的dram存储器。例如,硬件加速设备300可以更新本地存储器316的存储器页面,该存储器页面可以由该服务器的本地处理器执行的本地主机服务器实例可访问。

主机接口318提供使硬件加速设备300能够与执行本地主机服务器实例的本地处理器交互的功能性。在一个示例中,主机接口318可以经由诸如pcie链路之类的内部数据总线来与本地主机服务器实例交互。备选地,硬件加速设备300可以通过更新本地主机服务器实例可访问的本地存储器316的存储器页面,以低延迟来与本地主机服务器实例交互。

在一个示例中,硬件加速设备300可以包括路由器320,以用于经由传送组件322来在硬件加速设备300的各种内部组件之间以及在硬件加速设备300和外部组件之间路由消息。每个这样的端点与相应的端口相关联。在所图示的示例中,路由器320耦合到存储器控制器314、主机接口318、传送组件322和应用逻辑324。

在硬件加速设备300的fpga实现中,应用逻辑324可以包括可编程逻辑,其用于实现多个硬件加速服务的特定硬件加速服务。在fpga实现中,应用逻辑324可以是可重新编程的,以将硬件加速设备300从实现第一硬件加速服务改变为第二硬件加速服务。

传送组件322制定用于传输到诸如远程硬件加速设备之类的远程实体的分组,并且从硬件加速平面106中的远程加速设备接收分组。

在所图示的示例中,传送组件322耦合到3端口交换机326,其在被激活时可以通过在nic和tor之间以及在nic或tor与和硬件加速设备本身相关联的本地端口之间路由分组来接管桥接器302的功能。3端口交换机326可以操作以在服务器系统100网络上安全地插入和移除硬件加速设备生成的网络分组,而不会损害经由桥接器302行进的本地主机服务器实例到tor网络流量。

图4图示了针对示例服务器系统400的示例场景,该示例服务器系统400从由示例服务器系统400提供的服务的终端用户的客户端设备404接收客户端请求402。客户端请求402由示例服务器系统400的服务器负载平衡器(slb)406接收。在该示例中,slb例如可以是软件驱动的负载平衡器,其将客户端请求402路由到能够服务客户端请求402的软件平面的主机服务器实例。在所图示的示例中,slb406将客户端请求402路由到示例主机服务器实例408的ip地址。在步骤(1)处,客户端请求402由示例本地硬件加速设备410接收,该示例本地硬件加速设备410经由内部数据总线耦合到执行本地示例主机服务器实例408的处理器。示例本地硬件加速设备410读取客户端请求402,并且确定客户端请求402是以示例本地主机服务器实例408为目的地的。因此,在步骤(2)处,示例本地硬件加速设备410经由内部数据总线(诸如例如,pcie链路)将客户端请求402传递到示例本地主机服务器实例408。示例本地主机服务器实例408接收客户端请求402,并根据示例本地主机服务器实例408的服务器应用逻辑来处理客户端请求402。

在所图示的示例中,示例本地主机服务器实例408指定完全服务客户端请求402所需的、由硬件加速平面实现的多个硬件加速服务中的两个硬件加速服务。应当理解,在该特定示例中,示例本地主机服务器实例408确定哪些硬件加速服务是所需的,但在其他示例中,诸如本地硬件加速设备410或slb406之类的不同实体可以确定哪些硬件加速服务对于完全服务客户端请求402是所需的。

因此,在步骤(3)处,示例本地服务器实例408发送对一个或多个指定硬件加速服务的请求。如所图示,示例本地硬件加速设备410读取请求,并且如果示例本地硬件加速设备410没有实现一个或多个指定硬件加速服务,则将请求路由到合适的远程硬件加速设备。在该具体示例中,对指定硬件加速服务的请求是多部分请求,其包括对由第一服务器集群a实现的类型a的第一指定硬件加速服务以及然后由第二服务器集群b实现的第二指定硬件加速服务b的顺序请求。在一个示例中,顺序地实现多部分请求中的每个指定硬件加速服务。在另一示例中,多部分请求中的每个指定硬件加速服务由若干远程硬件加速设备同时实现,每个远程硬件加速设备实现多部分请求中的指定硬件加速服务之一。在另一示例中,多路径请求包括用于多个指定硬件加速服务的顺序和并行步骤。

暂时转向图5,当示例本地硬件加速设备410读取源自示例本地主机服务器实例408的请求时,示例本地硬件加速设备410确定该请求针对一个或多个指定硬件加速服务。特别地,示例本地硬件加速设备410确定该请求需要由实现类型a的第一指定硬件加速服务的远程硬件加速设备来服务。为了将请求路由到实现类型a的第一指定硬件加速服务的合适的远程硬件加速设备,示例本地硬加速设备410访问数据结构,该数据结构包含来自包含示例本地硬件加速设备的服务器的本地存储器的负载数据。

在一个示例中,每个硬件加速设备在存储器中维护数据结构412,该数据结构412包含负载数据414,负载数据414指示实现多个硬件加速服务的指定硬件加速服务418的多个目标硬件加速设备416中的每个的负载。即,每个硬件加速设备针对实现在硬件加速平面中实现的每个硬件加速服务的每个目标硬件加速设备的负载数据414维护其自己的数据结构。在一个示例中,由每个硬件加速设备维护的数据结构包括针对实现硬件加速平面中的每个硬件加速服务的特定硬件加速服务的每个目标硬件加速设备的负载数据414。

在另一示例中,由每个硬件加速设备维护的数据结构包括针对实现多个硬件加速服务的子集中的每个的目标硬件加速设备的负载数据414。特别地,每个硬件加速设备可以维护包含针对目标硬件加速设备的数据的数据结构,该目标硬件加速设备实现对于该硬件加速设备经常被请求的特定硬件加速服务。应当理解,这些示例子集是示例性的,并且负载数据414的其他组合可以被存储在数据结构中。

在图5中所图示的示例中,针对每个目标硬件加速设备416的负载数据包括在0到255之间的离散值。应当理解,可以利用任何范围的值来表示负载数据。另外,在其他示例中,负载数据不被存储为单个离散值。例如,负载数据414可以包括多个数据类型和值。诸如例如,针对目标硬件加速设备的排队请求的数目、先前请求的最近处理时间、基于队列中的请求的数目和类型的估计、排队请求的总大小、用于接收对请求的响应的往返时间、以及可以指示目标硬件加速设备的负载的任何其他合适类型的数据。

在一个示例中,当请求硬件加速设备路由对指定硬件加速服务的请求时,请求硬件加速设备将请求路由到目标硬件加速设备,该目标硬件加速设备由数据结构中的负载数据指示为具有比其他目标硬件加速设备更低的负载。在图5中所图示的示例中,在步骤(4)处,示例本地硬件加速设备410是请求硬件加速设备,其在步骤(3)处确定将从示例本地主机服务器实例接收的请求路由到何处。因此,请求硬件加速设备(在该示例中为410)读取请求,确定该请求需要由实现类型a的指定硬件加速服务的远程硬件加速设备来服务,并确定多个目标硬件加速设备416中的哪个被数据结构中的负载数据指示为具有比其他目标硬件加速设备更低的负载。即,在所图示的示例中,请求硬件加速设备确定存在实现类型a的指定硬件加速服务的四个可能的目标硬件加速设备。如所示,存在服务器集群a,其包括实现类型a的相同指定硬件加速服务的四个目标硬件加速设备。接下来,请求硬件加速设备(在该示例中为410)确定服务器集群a中的目标硬件加速设备a1当前在数据结构中具有比服务器集群a中的其他目标硬件加速设备的负载数据更低的负载数据。应当理解,在一些示例中,并非服务器集群中的所有硬件加速设备都可以实现相同的硬件加速服务。另外,虽然仅一个服务器集群(服务器集群a)被描绘为实现类型a的指定硬件加速服务,但是服务器系统100中的任何数目的服务器集群可以潜在地实现所设计的硬件加速服务。因此,数据结构412可以包括多个服务器集群中的每个服务器集群的多个目标硬件加速设备,多个目标硬件加速设备都实现指定硬件加速服务。

因此,在确定负载数据指示目标硬件加速设备a1在实现类型a的指定硬件加速服务的服务器集群a中具有最低负载之后,请求硬件加速设备(在该示例中,其是示例本地硬件加速设备410)在步骤(4)处经由网络基础设施将对类型a的指定硬件加速服务的请求路由到目标硬件加速设备a1。

在一个示例中,当请求硬件加速设备将对指定硬件加速服务的请求路由到目标硬件加速设备时,请求硬件加速设备基于请求的一个或多个属性来更新其数据结构412中针对目标硬件加速设备的负载数据414。因此,在图5所图示的示例中,在步骤(4)处,当请求硬件加速设备(当前为410)将请求路由到目标硬件加速设备a1时,请求硬件加速设备更新其数据结构412中的负载数据414。例如,请求硬件加速设备(当前为410)可以推测性地增加针对目标硬件加速设备a1的负载数据414的值,因为请求将潜在地增加其负载,或者可以如下所述地接收包含来自硬件加速设备a1的实际负载数据的消息(诸如确认消息)。

在所图示的示例中,针对目标硬件加速设备a1的负载数据从值“100”被更新为值“200”。应当理解,取决于负载数据的值,可以以不同的方式更新负载数据。在一些示例中,负载数据包括存储针对不同负载属性的原始值的多个数据字段,诸如队列中的请求的数目、请求的大小、处理请求的历史时间等。在一个示例中,请求的一个或多个属性选自由以下组成的组中:请求的大小、指定硬件加速服务的类型、实现指定硬件加速服务的历史时间、针对目标硬件加速设备的历史数据以及请求的分组数据。请求的大小可以包括正在被发送的请求的总分组大小,或者将由指定硬件加速服务处理的数据的总大小。指定硬件加速服务的类型可以包括对特定指定硬件加速服务需要多少处理资源来实现的估计。实现指定硬件加速服务的历史时间可以包括关于硬件加速设备根据先前请求实现指定硬件加速服务的处理时间的过去信息。针对目标硬件加速设备的历史数据可以包括关于特定目标硬件加速设备服务请求的处理时间的过去信息。请求的分组数据可以包括各种分组数据,诸如由请求硬件加速设备可读的、报头中的数据。应当理解,请求的一个或多个属性的上述示例仅仅是示例性的,并且请求硬件加速设备还可以利用上面未具体提及的、请求的任何其他属性,以通过对请求将在接收硬件加速设备上放置的处理负载或负担的估计来推测性地更新其负载数据。

之后,如果请求硬件加速设备随后路由对类型a的指定硬件加速服务的新请求,则目标硬件加速设备a1可能不再是在实现类型a的指定硬件加速服务的其他目标硬件加速设备之中具有最低负载的特定目标硬件加速设备416。在所图示的示例中,针对目标硬件加速设备a1的负载数据从值“100”被更新为值“200”,并且如所示,其不再具有低于其他目标硬件加速设备的负载值。

因此,请求硬件加速设备(在该示例中为410)会将新请求路由到另一目标硬件加速设备a4,并且然后在其自己的数据结构412中更新针对该目标硬件加速设备的负载数据。应当理解,虽然在这些示例中,“低于”其他负载数据的负载数据已经由小于另外的离散值的离散值来表示,但是可以使用任何合适的方法来比较负载数据以确定哪个负载数据“较低”。例如,针对负载数据的较大值可以反而指示较低负载,并且针对负载数据的较小值可以反而指示较高负载。备选地,确定哪个负载数据“较低”可以包括比较若干数据字段,诸如请求的数目、请求的大小、处理请求的历史时间等。

基于请求的一个或多个属性,请求硬件加速设备(在该示例中为410)可以准确地估计请求将在目标硬件加速设备上放置多少附加的负载或处理负担。然而,虽然请求硬件加速设备可以确定其自己的请求将添加多少附加负载,但是每个单独的请求硬件加速设备可能不具有关于硬件加速平面中也可能正在向该目标硬件加速设备发送请求的其他请求硬件加速设备的近实时信息。

在所图示的示例中,第二请求硬件加速设备420在与第一请求硬件加速设备(在该示例中为410)相似的时间也正在路由对类型a的相同指定硬件加速服务的请求。第一和第二请求硬件加速设备都维护它们自己的数据结构412,这可以指示目标硬件加速设备a1当前具有实现类型a的指定硬件加速服务的所有目标硬件加速设备中的最低负载。另外,第一和第二请求硬件加速设备在发送请求时都不“知道”对方正将请求路由到相同目标硬件加速设备。在路由它们自己的请求之后,第一和第二请求硬件加速设备都基于它们自己的请求的一个或多个属性更新其数据结构中的负载数据,并且不“知道”来自对方的请求的附加负载已被放置到目标硬件加速上设备a1上。因此,由第一和第二请求硬件加速设备二者分别维护的、针对目标硬件加速设备a1的负载数据可能无法准确地反映多少负载实际被放置在目标硬件加速设备a1上。因此,为了校正可能由于多个请求硬件加速设备向相同接收硬件加速设备发送请求而发生的估计误差,每个接收硬件加速设备被配置为将指示其实际当前负载的负载数据发送到其他硬件加速设备。

在一个示例中,当接收硬件加速设备从请求硬件加速设备接收请求时,接收硬件加速设备用包括负载数据的消息来响应,该负载数据指示接收硬件加速设备的当前负载。如图5中所图示,当接收硬件加速设备(在该示例中为目标硬件加速设备a1)在步骤(4)从请求硬件加速设备(在该示例中为硬件加速设备410)接收到对类型a的指定硬件加速服务的请求时,接收硬件加速设备a1将包括负载数据的消息发送回请求硬件加速设备410,该负载数据指示接收硬件加速设备a1的负载。应当理解,接收硬件加速设备a1“知道”它接收的所有请求,并且具有关于其自己的负载的准确实时知识。

因此,当请求硬件加速设备410接收到消息m1时,请求硬件加速设备410可以在其自己的数据结构412中更新针对目标硬件加速设备a1的负载数据,目标硬件加速设备a1是接收硬件加速设备a1。在基于消息m1更新其负载数据之后,请求硬件加速设备410将具有针对目标硬件加速设备a1的准确、当前和非推测性的负载数据,该负载数据既反映了由它自己的请求放置在目标硬件加速设备a1上的实际负载,也反映了由诸如第二请求硬件加速设备420之类的其他请求硬件加速设备放置在目标硬件加速设备a1上的负载。

在一个示例中,由接收硬件加速设备发送的消息是在网络协议中通常发送的确认(ack)或否定确认(nack)消息。接收硬件加速设备可以将多个ack和nack消息发送回到请求硬件加速设备,作为正常联网协议的一部分以协调请求在网络上的发送和接收,或者请求硬件加速设备和接收硬件加速设备之间的任何其他类型的网络流量。因此,在发送ack或nack消息之后,接收硬件加速设备可以适时地将负载数据添加到指示其当前负载的ack或nack消息。以这种方式,每个硬件加速设备可以背负在彼此之间的公共网络流量上,以便关于其当前负载适时地更新彼此。应当理解,上述ack或nack消息的消息示例仅仅是示例性的,并且可以利用在硬件加速平面中的硬件加速设备之间交换的任何网络消息来在硬件加速设备之间发送负载数据更新。

在另一示例中,每个硬件加速设备将指示其当前负载的负载数据周期性地发送到先前已向该硬件加速设备发送请求的一个或多个其他硬件加速设备。即,每个硬件加速设备可以被配置为在存储器中维护先前已向该硬件加速设备发送请求的所有请求硬件加速设备的列表,并且将针对其自己的当前负载的负载数据更新周期性地发送到其列表中的每个硬件加速设备。备选地,在通过网络交换分组时,每个硬件加速设备可以向其当前与之具有开放网络连接的每个其他硬件加速设备周期性地发送负载数据更新。可以选择任何合适的周期以供硬件加速设备发送负载数据更新。在一个示例中,每个硬件加速设备可以被配置为发送其数据结构中的所有负载数据,该所有负载数据包含针对多个其他硬件加速设备的负载数据。

在上述分散式方法中,随着时间的推移,随着每个硬件加速设备向硬件加速平面中的其他硬件加速设备的子集周期性地发送负载更新,硬件加速平面中的每个硬件加速设备最终可能会接收到针对硬件加速平面中的每个其他硬件加速设备的一些负载数据。因此,通过这些负载数据更新,可以使每个硬件加速设备“知道”服务器系统100中的所有其他硬件加速设备以及那些硬件加速设备中的每个硬件加速设备实现哪种类型的硬件加速服务。因此,虽然图5中所图示的示例仅将由请求硬件加速设备410维护的数据结构412描绘为包含针对四个目标硬件加速设备的负载数据,但是应当理解,数据结构412可以被维护为包含针对硬件加速平面106中的硬件加速设备中的所有或任何合适的子集的负载数据。

在一个示例中,每个硬件加速设备被配置为用数据结构的负载数据来更新由相关联的主机服务器实例可访问的存储器页面。例如,图3中图示的示例硬件加速设备300可以被配置为更新本地存储器316中的存储页面,该存储页面由执行本地主机服务器实例的本地处理器可访问。通过读取存储器页面,可以使本地主机服务器实例“知道”其本地硬件加速设备的负载以及硬件加速平面106中的其他远程硬件加速设备的负载。因此,软件平面104中的每个主机服务器实例可以以低延迟访问针对硬件加速平面106中的硬件加速设备的负载数据。因此,针对硬件加速平面106的集体负载数据可以被分配到软件平面104,软件平面104可以被配置为利用硬件加速平面106的当前负载平衡状态来改变更高级别服务行为,诸如产生不同的请求、请求针对服务器系统100的附加服务器实例等。

转回到图5,对指定硬件加速服务的请求可以由软件平面104的主机服务器实例生成,或者由硬件加速平面106的硬件加速设备生成。在图5中所图示的具体示例中,对指定硬件加速服务的请求源自多个主机服务器实例的请求主机服务器实例,并且请求硬件加速设备由内部数据总线耦合到执行请求主机服务器实例的处理器,并且请求硬件加速设备读取请求并将其路由到目标硬件加速设备。如所示,对类型a的指定硬件加速服务的请求源自示例本地主机服务器实例408,示例本地主机服务器实例408经由服务器的内部数据总线耦合到示例本地硬件加速设备410,该服务器容纳示例本地硬件加速设备410和执行示例本地主机服务器实例408的处理器二者。例如,在服务客户端请求402时,示例本地主机服务器实例408可能已经确定客户端请求402需要由硬件加速平面106实现的硬件加速服务,诸如例如,可以是硬件加速的web搜索排名服务。因此,示例本地主机服务器实例408选择web搜索排名服务作为指定硬件加速服务,并将对指定硬件加速服务的请求发送到示例本地硬件加速设备410,示例本地硬件加速设备410随后读取请求并将请求路由到目标硬件加速设备。

转到图6,在另一示例中,请求是对多个指定硬件加速服务的多步骤请求,并且指定硬件加速服务是多个指定硬件加速服务的下一指定硬件加速服务。在所图示的示例中,请求是对由硬件加速平面实现的多个硬件加速服务中的三个不同硬件加速服务a、b和c的多步骤请求。在该具体示例中,顺序地完成三个硬件加速服务a、b和c,其中沿着多步骤服务的路径的每个硬件加速设备实现三个不同硬件加速服务中的一个硬件加速服务,并且然后将多步骤请求路由到实现下一硬件加速服务的另一远程硬件加速设备。

如所图示,请求硬件加速设备(其在该示例中为硬件加速设备410)从另一硬件加速设备602接收多步骤请求,实现多个指定硬件加速服务中的一个,并将多步骤请求路由到实现下一指定硬件加速服务的目标硬件加速设备。如所示,请求硬件加速设备410从硬件加速平面中的另一硬件加速设备602接收多步骤请求。硬件加速设备602本身可能已经从硬件加速平面中的另一硬件加速设备接收到多步骤请求。在另一示例中,硬件加速设备602本身可能已经生成多步骤请求。在又一示例中,多步骤请求可能已经由软件平面的主机服务器实例生成,该主机服务器实例诸如可以是硬件加速设备602本地的主机服务器实例604。

在这些示例中,硬件加速设备602将多步骤请求路由到硬件加速设备410,硬件加速设备410实现类型c的硬件加速服务,类型c的硬件加速服务是多步骤请求的多个指定硬件加速服务中的一个。因此,在步骤(s1)处从另一硬件加速设备602接收到多步骤请求之后,硬件加速设备410根据请求实现类型c的硬件加速服务。硬件加速设备410还读取多步骤请求以确定下一指定硬件加速服务是类型a的指定硬件加速服务。类似于图5的示例,硬件加速设备410维护包含负载数据的数据结构,该负载数据针对实现类型a的下一指定硬件加速服务的多个目标硬件加速设备。基于数据结构的负载数据,硬件加速设备410在步骤(s2)处将多步骤请求路由到目标硬件加速设备a1。类似于硬件加速设备410,目标硬件加速设备a1从硬件加速设备410接收多步骤请求,实现类型a的指定硬件加速服务,并且然后在步骤(s3)处将多步骤请求路由到另一目标硬件加速设备b1,目标硬件加速设备b1基于其维护的包含负载数据的数据结构来实现针对多个设计硬件加速服务的多步骤请求的、类型b的最后指定硬件加速服务,该负载数据针对实现类型b的最后指定硬件加速服务的第二多个目标硬件加速设备。

转回到图4,由示例本地主机服务器实例408生成的请求也是对类型a和b的两个指定硬件加速服务的多步骤请求。示例本地主机服务器实例408在步骤(3)处将多步骤请求发送到其本地示例硬件加速设备410,本地示例硬件加速设备410在步骤(4)处读取多步骤请求并将多步骤请求路由到目标硬件加速设备a1。多步骤请求由服务器集群a中所有实现类型a的相同硬件加速服务的多个硬件加速设备之一、用类型a的硬件加速服务来服务。在步骤(6)处,多步骤请求由服务器集群a中的硬件加速设备路由到服务器集群b中实现多步骤请求的类型b的最后指定硬件加速服务的第二目标硬件加速设备b2。在实现类型b的最后指定硬件加速服务之后,多步骤请求已经被服务器系统100完全服务,响应422可以被路由回到终端用户的客户端设备404。在一个示例中,用于服务请求的最后硬件加速设备(在该示例中为第二目标硬件加速设备b2)可以将对经完全服务的请求的响应路由到slb406,slb406然后可以将对客户端402请求的响应422路由回到客户端设备404。

在另一示例中,对多步骤请求的响应可以被路由回来、通过服务了多步骤请求的每个硬件加速设备、直到响应到达示例本地硬件加速设备410,然后示例本地硬件加速设备410可以将从经完全服务的请求得到的响应发送回到最初生成请求的示例本地主机服务器实例408。然后,示例本地主机服务器实例408可以根据其应用逻辑处理响应,诸如例如,通过经由示例本地硬件加速设备410向slb406发送响应,slb406继而将响应422路由到终端用户的客户端设备404。

在图4中所图示的示例中,示例本地硬件加速设备410最初将对类型a的指定硬件加速服务的请求发送到目标硬件加速设备a1。如先前所讨论的,基于由请求硬件加速设备维护的数据结构的数据来选择目标硬件加速设备a1,该请求硬件加速设备是示例本地硬件加速设备410,该数据结构包括负载数据,该负载数据指示目标硬件加速设备a1被估计为具有都实现类型a的相同硬件加速服务的多个目标硬件加速设备a1、a2、a3和a4中的最低负载。然而,如图5的示例中所讨论的,可能存在向请求硬件加速设备同时发送请求的附加的其他硬件加速设备。因此,到请求到达目标硬件加速设备a1时,服务器集群a中包含的多个目标硬件加速设备的该特定目标硬件加速设备可能不再是最少负载的硬件加速设备。

在另一示例操作中,服务器集群中的两个或更多个服务器的每个硬件加速设备实现多个硬件加速服务中的相同硬件加速服务,并且服务器集群中的每个硬件加速设备维护分开的数据结构的实例,该数据结构还包含近实时负载数据,该近实时负载数据指示服务器集群中的每个其他硬件加速设备的近实时负载。以这种方式,服务器系统可以以及时的方式在服务器集群内进行负载平衡,该服务器集群由经由其服务器的硬件加速设备提供相同硬件加速服务的服务器组成,从而可以基于请求到达集群内的服务器的硬件加速设备之后的当前负载数据来调整针对请求的目的地。

在另一示例操作中,当多个服务器集群中的服务器集群中的接收硬件加速设备从请求硬件加速设备接收到请求时,接收硬件加速设备基于数据结构的近实时负载数据来确定其当前负载是否高于阈值负载值和/或高于服务器集群中实现相同硬件加速服务的另一硬件加速设备,并且至少基于该确定,接收硬件加速设备将请求重定向到服务器集群中的另一硬件加速设备,数据结构的近实时负载数据指示该另一硬件加速设备具有比服务器集群中的其他硬件加速设备更低的负载。以这种方式,硬件加速设备可以首先通过检查其自己的负载是否低于阈值负载值来核查其是否具有服务请求的可用容量,并且如果是,则它可以处理该请求。如果负载高于阈值,那么硬件加速设备继续将请求路由到具有更低负载的硬件加速设备。在另一配置中,硬件加速设备可以总是将传入请求路由到具有所指示的更低负载的另一硬件加速设备,而无需查询当前负载是否高于负载阈值。对于近实时数据,其意味着硬件加速设备已经针对相同集群中的其对等硬件加速设备接收到的最新负载数据。应当理解,由于经由机架的背板以及经由tor网络交换机的、集群内的高速通信,因此针对相同集群中的设备的负载数据可以极其快速地被更新,并且将尽可能接近实时。

现在转向图7,将描述由服务器系统实现的用于硬件实现的负载平衡的方法700。可以使用上述服务器系统100的硬件或其他合适的硬件来实现方法700。在702处,该方法可以包括:提供多个服务器,每个服务器包括至少一个硬件加速设备和至少一个处理器,该处理器由内部数据总线通信地耦合到硬件加速设备并执行主机服务器实例。多个服务器的主机服务器实例共同提供软件平面,并且多个服务器的硬件加速设备共同提供实现多个硬件加速服务的硬件加速平面。

如704处所示,可以在多个服务器集群中提供多个服务器,每个服务器集群包括机架顶部网络交换机、多个服务器中的两个或更多个服务器、以及通信地耦合机架顶部网络交换机和两个或更多个服务器的背板。

在706处,该方法可以包括:在每个硬件加速设备处,在存储器中维护包含负载数据的数据结构,该负载数据指示实现多个硬件加速服务中的指定硬件加速服务的多个目标硬件加速设备中的每个目标硬件加速设备的负载。

在708处,该方法可以包括:在硬件加速设备中的一个硬件加速设备处,接收对指定硬件加速服务的请求。

如在710处所示,对指定硬件加速服务的请求可以源自多个主机服务器实例中的请求主机服务器实例。在这种情况下,请求硬件加速设备可以由内部数据总线耦合到执行请求主机服务器实例的处理器。

在712处,该方法可以包括:将请求路由到目标硬件加速设备,该目标硬件加速设备由数据结构中的负载数据指示为具有比其他目标硬件加速设备更低的负载。在诸如在710处请求源自服务器实例的情况下,请求硬件加速设备可以读取该请求并将其路由到目标硬件加速设备以执行步骤712。

如图8中所示,方法700的步骤708的请求可以被制定为对多个指定硬件加速服务的多步骤请求,并且指定硬件加速服务可以是多个指定硬件加速服务中的下一指定硬件加速服务。在这种情况下,如在728处所示,该方法可以包括:在硬件加速设备中的一个硬件加速设备处,从另一硬件加速设备接收多步骤请求,如在730处所示,该方法可以包括实现多个指定硬件加速服务中的一个指定硬件加速服务,并且如在732处所示,该方法可以包括将多步骤请求路由到实现下一指定硬件加速服务的目标硬件加速设备。

回到图7,在示例配置中,该方法还可以包括:在如在704处所示的服务器被组织成集群的情况下,服务器集群中的两个或更多个服务器的每个硬件加速设备实现多个硬件加速服务中的相同硬件加速服务,并维护数据结构的相应实例,该数据结构还包含近实时负载数据,近实时负载数据指示服务器集群中每个其他硬件加速设备的近实时负载。

方法700还可以包括:在714处,在多个服务器集群中的服务器集群中的接收硬件加速设备处,接收来自请求硬件加速设备的请求。在716处,该方法可以包括:基于接收硬件加速设备处的数据结构的近实时负载数据,确定接收硬件加速设备的当前负载是否高于阈值负载值和/或高于服务器集群中实现相同硬件加速服务的另一硬件加速设备。在718处,该方法可以包括:至少基于该确定,将请求重定向到服务器集群中的另一硬件加速设备,数据结构的近实时负载数据指示该另一硬件加速设备具有比服务器集群中的其他硬件加速设备更低的负载。

在720处,该方法可以包括:当请求硬件加速设备将对指定硬件加速服务的请求路由到目标硬件加速设备时,请求硬件加速设备更新其数据结构中的针对目标硬件加速设备的负载数据。如在722处所示,该更新可以基于请求的一个或多个属性。这些属性可以包括:请求的大小、指定硬件加速服务的类型、实现指定硬件加速服务的历史时间、针对目标硬件加速设备的历史数据、以及请求的分组数据。

如在724处所指示的,更新可以基于经由消息被发送的、硬件加速设备的当前负载。例如,当接收硬件加速设备从请求硬件加速设备接收到请求时,接收硬件加速设备可以用包括负载数据的消息来响应,该负载数据指示接收硬件加速设备的当前负载,并且请求硬件加速设备可以基于来自接收硬件加速设备的消息中指示的当前负载,更新被存储在接收硬件加速设备处的存储器中的数据结构中的负载数据。

如在726处所指示的,更新可以基于从硬件加速设备发送到彼此的周期性负载更新。例如,每个硬件加速设备可以将指示其当前负载的负载数据周期性地发送到先前已向该硬件加速设备发送请求的一个或多个其他硬件加速设备。

基于被存储在与每个硬件加速设备相关联的存储器中的数据结构中的负载数据,上述系统和方法可以被用来实现从一个硬件加速设备到另一硬件加速设备的请求的及时路由。由于负载数据不断被更新,因此可以在发送请求时、并且甚至在最初预期的目标设备处接收到请求之后进行智能路由决策,这使得请求最终能够被路由到具有比其他候选硬件加速设备更低的负载的硬件加速设备。这反过来又具有更快且更高效地服务请求的潜力,从而提高服务器系统可以响应请求的速度。

在一些实施例中,本文描述的方法和过程可以绑定到一个或多个计算设备的计算系统。特别地,可以将这些方法和过程实现为计算机应用程序或服务、应用编程接口(api)、库和/或其他计算机程序产品。

图9示意性地示出了可以实施上述方法和过程中的一个或多个的计算系统900的非限制性实施例。计算系统900以简化的形式被示出。计算系统900可以体现上述的单独的服务器102、206、208、210等和客户端设备404。计算系统900可以采取一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如智能电话)和/或其他计算设备和诸如智能手表和头戴式增强现实设备之类的可穿戴计算设备的形式。

计算系统900包括逻辑处理器902、易失性存储器904和非易失性存储设备906。计算系统900可以可选地包括显示子系统908、输入子系统910、通信子系统912和/或在图9中未示出的其他组件。

逻辑处理器902包括被配置为执行指令的一个或多个物理设备。例如,逻辑处理器可以被配置为执行作为一个或多个应用、程序、例程、库、对象、组件、数据结构或其他逻辑构造的一部分的指令。可以实施这样的指令以执行任务、实现数据类型、变换一个或多个组件的状态、实现技术效果、或以其他方式达到期望的结果。

逻辑处理器可以包括被配置为执行软件指令的一个或多个物理处理器(硬件)。附加地或备选地,逻辑处理器可以包括一个或多个硬件逻辑电路或固件设备,其被配置为执行硬件实现的逻辑或固件指令。逻辑处理器902的处理器可以是单核的或多核的,并且在其上执行的指令可以被配置用于顺序的、并行的和/或分布式的处理。逻辑处理器的各个组件可选地可以被分布在两个或更多个分开的设备之中,这些设备可以被远程定位和/或被配置用于协同处理。逻辑处理器的各方面可以由被配置在云计算配置中的远程可访问的联网计算设备来虚拟化和执行。在这种情况下,应当理解,这些虚拟化方面在各种不同机器的不同物理逻辑处理器上运行。

非易失性存储设备906包括一个或多个物理设备,其被配置为保持由逻辑处理器可执行的指令以实现本文描述的方法和过程。当实现这样的方法和过程时,非易失性存储设备904的状态可以被变换——例如以保持不同的数据。

非易失性存储设备906可以包括可移动的和/或内置的物理设备。非易失性存储设备94可以包括光学存储器(例如cd、dvd、hd-dvd、蓝光盘等)、半导体存储器(例如rom、eprom、eeprom、flash存储器等)、和/或磁存储器(例如硬盘驱动器、软盘驱动器、磁带驱动器、mram等)、或其他大容量存储设备技术。非易失性存储设备906可以包括非易失性、动态、静态、读/写、只读、顺序访问、位置可寻址、文件可寻址和/或内容可寻址设备。应当理解,非易失性存储设备906被配置为即使在切断非易失性存储设备906的电源时也保持指令。

易失性存储器904可以包括物理设备,该物理设备包括随机存取存储器。逻辑处理器902通常利用易失性存储器904来在软件指令的处理期间临时存储信息。应当理解,当切断易失性存储器904的电源时,易失性存储器904通常不继续存储指令。

可以将逻辑处理器902、易失性存储器904和非易失性存储设备906的各方面一起集成到一个或多个硬件逻辑组件中。例如,这样的硬件逻辑组件可以包括现场可编程门阵列(fpga)、程序特定和专用集成电路(pasic/asic)、程序特定和专用标准产品(pssp/assp)、片上系统(soc)和复杂可编程逻辑器件(cpld)。

术语“模块”、“程序”和“引擎”可以被用来描述计算系统900的一个方面,该方面通常由处理器以软件实现,以使用易失性存储器的各部分来执行特定功能,该功能涉及专门配置处理器以执行功能的变换性处理。因此,模块、程序或引擎可以使用易失性存储器904的各部分、经由执行由非易失性存储设备906保持的指令的逻辑处理器902来实例化。应当理解,不同的模块、程序和/或引擎可以从相同的应用、服务、代码块、对象、库、例程、api、功能等实例化。同样,相同的模块、程序和/或引擎可以由不同的应用、服务、代码块、对象、例程、api、功能等实例化。术语“模块”、“程序”和“引擎”可以涵盖单独的或一组可执行文件、数据文件、库、驱动程序、脚本、数据库记录等。

当被包括时,显示子系统908可以被用来呈现由非易失性存储设备906保持的数据的视觉表示。视觉表示可以采取图形用户界面(gui)的形式。由于本文描述的方法和过程改变由非易失性存储设备保持的数据,并因此变换非易失性存储设备的状态,所以可以同样地将显示子系统908的状态变换为可视地表示基础数据中的变化。显示子系统908可以包括可视地利用任何类型的技术的一个或多个显示设备。这样的显示设备可以与共享封装中的逻辑处理器902、易失性存储器904和/或非易失性存储设备906组合,或者这样的显示设备可以是外围显示设备。

当被包括时,输入子系统910可以包括一个或多个用户输入设备或与其进行接口,诸如键盘、鼠标、触摸屏或游戏控制器。在一些实施例中,输入子系统可以包括所选择的自然用户输入(nui)组件部分或与其进行接口。这样的组件部分可以是集成的或外围的,并且输入动作的转变和/或处理可以在板上或板外被处置。示例nui组件部分可以包括:用于语音和/或声音识别的麦克风;用于机器视觉和/或手势识别的红外、彩色、立体和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼睛跟踪器、加速度计和/或陀螺仪;以及用于评估大脑活动的电场感应组件部分;和/或任何其他合适的传感器。

当被包括时,通信子系统912可以被配置为将本文描述的各种计算设备彼此通信地耦合,并与其他设备通信地耦合。通信子系统912可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置用于经由无线电话网络、或有线或无线局域网或广域网(诸如wi-fi连接上的hdmi)进行通信。在一些实施例中,通信子系统可以允许计算系统900经由诸如因特网之类的网络向其他设备发送消息和/或从其他设备接收消息。

以下段落为本主题申请的权利要求提供了附加的支持。一个方面提供了一种服务器系统,包括多个服务器,每个服务器包括至少一个硬件加速设备和至少一个处理器,该至少一个处理器由内部数据总线通信地耦合到硬件加速设备并执行主机服务器实例,多个服务器的主机服务器实例共同提供软件平面,并且多个服务器的硬件加速设备共同提供实现多个硬件加速服务的硬件加速平面,其中每个硬件加速设备在存储器中维护包含负载数据的数据结构,负载数据指示实现多个硬件加速服务中的指定硬件加速服务的多个目标硬件加速设备中的每个目标硬件加速设备的负载,并且其中当请求硬件加速设备路由对指定硬件加速服务的请求时,请求硬件加速设备将请求路由到目标硬件加速设备,目标硬件加速设备由数据结构中的负载数据指示为具有比其他目标硬件加速设备更低的负载。在这方面,附加地或备选地,对指定硬件加速服务的请求可以源自多个主机服务器实例的请求主机服务器实例,其中请求硬件加速设备可以由内部数据总线耦合到执行请求主机服务器实例的处理器,并且请求硬件加速设备可以读取请求并且可以将其路由到目标硬件加速设备。在这方面,附加地或备选地,请求可以是对多个指定硬件加速服务的多步骤请求,并且指定硬件加速服务可以是多个指定硬件加速服务中的下一指定硬件加速服务,并且其中请求硬件加速设备可以从另一硬件加速设备接收多步骤请求,可以实现多个指定硬件加速服务中的一个指定硬件加速服务,并且可以将多步骤请求路由到实现下一指定硬件加速服务的目标硬件加速设备。在这方面,附加地或备选地,服务器系统还可以包括多个服务器集群,其中每个服务器集群可以包括机架顶部网络交换机、多个服务器中的两个或更多个服务器、以及通信地耦合顶部机架网络交换机和两个或更多个服务器的背板,其中服务器集群中的两个或更多个服务器的每个硬件加速设备可以实现多个硬件加速服务中的相同硬件加速服务,并且每个硬件加速设备可以维护数据结构的相应实例,数据结构还包含近实时负载数据,该近实时负载数据指示服务器集群中的每个其他硬件加速设备的近实时负载。在这方面,附加地或备选地,当多个服务器集群中的服务器集群中的接收硬件加速设备从请求硬件加速设备接收到请求时,接收硬件加速设备基于数据结构的近实时负载数据可以确定其当前负载是否高于阈值负载值和/或高于服务器集群中实现相同硬件加速服务的另一硬件加速设备,并且至少基于该确定,接收硬件加速设备可以将请求重定向到服务器集群中的另一硬件加速设备,其中数据结构的近实时负载数据指示另一硬件加速设备具有比服务器集群中的其他硬件加速设备更低的负载。在这方面,附加地或备选地,当请求硬件加速设备将对指定硬件加速服务的请求路由到目标硬件加速设备时,请求硬件加速设备可以基于请求的一个或多个属性来更新其数据结构中的针对目标硬件加速设备的负载数据。在这方面,附加地或备选地,请求的一个或多个属性可以选自由以下各项组成的组:请求的大小、指定硬件加速服务的类型、实现指定硬件加速服务的历史时间、针对目标硬件加速设备的历史数据、以及请求的分组数据。在这方面,附加地或备选地,当接收硬件加速设备从请求硬件加速设备接收请求时,接收硬件加速设备可以用包括负载数据的消息来响应,该负载数据指示接收硬件加速设备的当前负载。在这方面,附加地或备选地,每个硬件加速设备可以将指示其当前负载的负载数据周期性地发送到先前已向该硬件加速设备发送请求的一个或多个其他硬件加速设备。在这方面,附加地或备选地,每个硬件加速设备可以被配置为:用数据结构的负载数据来更新由相关联的主机服务器实例可访问的存储器页面。

另一方面提供了一种由服务器系统实现的方法,该方法包括:提供多个服务器,每个服务器包括至少一个硬件加速设备和至少一个处理器,该至少一个处理器由内部数据总线通信地耦合到硬件加速设备并执行主机服务器实例,多个服务器的主机服务器实例共同提供软件平面,并且多个服务器的硬件加速设备共同提供实现多个硬件加速服务的硬件加速平面,在每个硬件加速设备处,在存储器中维护包含负载数据的数据结构,该负载数据指示实现多个硬件加速服务中的指定硬件加速服务的多个目标硬件加速设备中的每个目标硬件加速设备的负载,并且在硬件加速设备中的一个硬件加速设备处,接收对指定硬件加速服务的请求;以及将请求路由到目标硬件加速设备,该目标硬件加速设备由数据结构中的负载数据指示为具有比其他目标硬件加速设备更低的负载。在这方面,附加地或备选地,对指定硬件加速服务的请求可以源自多个主机服务器实例的请求主机服务器实例,并且其中请求硬件加速设备可以由内部数据总线耦合到执行请求主机服务器实例的处理器,并且请求硬件加速设备可以读取请求并且可以将其路由到目标硬件加速设备。在这方面,附加地或备选地,请求可以是对多个指定硬件加速服务的多步骤请求,并且指定硬件加速服务可以是多个指定硬件加速服务中的下一指定硬件加速服务,该方法还可以包括:在硬件加速设备中的一个硬件加速设备处,从另一硬件加速设备接收多步骤请求,实现多个指定硬件加速服务中的一个指定硬件加速服务,以及将多步骤请求路由到实现下一指定硬件加速服务的目标硬件加速设备。在这方面,附加地或备选地,提供多个服务器可以包括:提供多个服务器集群,每个服务器集群可以包括机架顶部网络交换机、多个服务器中的两个或更多个服务器、以及通信地耦合机架顶部网络交换机和两个或更多个服务器的背板,其中服务器集群中的两个或更多个服务器的每个硬件加速设备可以实现多个硬件加速服务中的相同硬件加速服务,并且可以维护数据结构,该数据结构还包含近实时负载数据,该近实时负载数据指示服务器群集中每个其他硬件加速设备的近实时负载。在这方面,附加地或备选地,该方法可以包括:在多个服务器集群中的服务器集群中的接收硬件加速设备处,接收来自请求硬件加速设备的请求;基于接收硬件加速设备处的数据结构的近实时负载数据,确定接收硬件加速设备的当前负载是否高于阈值负载值和/或高于服务器集群中实现相同硬件加速服务的另一硬件加速设备;以及至少基于所述确定,将请求重定向到服务器集群中的另一硬件加速设备,该数据结构的近实时负载数据指示另一硬件加速设备具有比服务器集群中的其他硬件加速设备更低的负载。在这方面,附加地或备选地,当请求硬件加速设备将对指定硬件加速服务的请求路由到目标硬件加速设备时,请求硬件加速设备可以基于请求的一个或多个属性来更新其数据结构中的针对目标硬件加速设备的负载数据。在这方面,附加地或备选地,请求的一个或多个属性可以选自由以下各项组成的组:请求的大小、指定硬件加速服务的类型、实现指定硬件加速服务的历史时间、针对目标硬件加速设备的历史数据、以及请求的分组数据。在这方面,附加地或备选地,当接收硬件加速设备从请求硬件加速设备接收请求时,接收硬件加速设备可以用包括负载数据的消息来响应,该负载数据指示接收硬件加速设备的当前负载,并且请求硬件加速设备可以基于来自接收硬件加速设备的消息中指示的当前负载,更新在接收硬件加速设备处被存储在存储器中的数据结构中的负载数据。在这方面,附加地或备选地,每个硬件加速设备可以将指示其当前负载的负载数据周期性地发送到先前已向该硬件加速设备发送请求的一个或多个其他硬件加速设备。

另一方面提供了一种服务器系统,包括多个服务器的多个服务器集群,每个服务器集群包括机架顶部网络交换机和多个服务器中的两个或更多个服务器,每个服务器包括至少一个硬件加速设备和至少一个处理器,该至少一个处理器由内部数据总线通信地耦合到硬件加速设备并执行主机服务器实例,多个服务器的主机服务器实例共同提供软件平面,并且多个服务器的硬件加速设备共同提供实现多个硬件加速服务的硬件加速平面,其中多个服务器集群中的服务器集群中的每个硬件加速设备实现多个硬件加速服务中的相同硬件加速服务,其中每个硬件加速设备在存储器中维护包含近实时负载数据的数据结构,该近实时负载数据指示在与该硬件加速设备的相同服务器集群中的每个其他硬件加速设备的近实时负载,并且其中当多个服务器集群中的服务器集群中的接收硬件加速设备接收到来自请求硬件加速设备的请求时,接收硬件加速设备基于数据结构的近实时负载数据来确定其当前负载是否高于阈值负载值和/或高于服务器集群中实现相同硬件加速服务的另一硬件加速设备,并且至少基于该确定,接收硬件加速设备将请求重定向到服务器集群中的另一硬件加速设备,其中数据结构的近实时负载数据指示另一硬件加速设备具有比服务器群集中的其他硬件加速设备更低的负载。

应当理解,本文描述的配置和/或方法本质上是示例性的,并且这些具体实施例或示例不应被视为具有限制意义,因为许多变型是可能的。本文描述的特定例程或方法可以表示任何数目的处理策略中的一个或多个处理策略。因此,所图示和/或所描述的各种动作可以以所图示和/或所描述的顺序、以其他顺序、并行地来执行或被省略。同样,可以改变上述过程的次序。

本公开的主题包括各种过程、系统和配置的所有新颖和非显而易见的组合和子组合、以及本文公开的其他特征、功能、动作和/或性质、以及任何及其所有等同物。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1