在网络计算设备之间分配带宽以用于向客户端计算设备推送数据的制作方法

文档序号:16054191发布日期:2018-11-24 11:32阅读:139来源:国知局

在本文中讨论了用于改进服务器和客户端计算机的性能的计算机系统和方法,更具体地,用于在网络计算设备与客户端计算设备之间分配带宽,使得网络计算设备可在不超过网络计算设备与客户端计算设备之间的可用带宽的情况下向客户端计算设备发送数据的计算机实现的技术。

背景技术

此部分中描述的方法是能被追求的方法,但不一定是先前已构思或者追求的方法。因此,除非另外指示,否则不应该假定此部分中描述的任何方法仅仅由于其在此部分中的包括而被认定为为现有技术。

客户端计算机上的监测应用(在本文中称为数据消费者)可以接收指示计算机网络上的计算设备(在本文中称为数据生产者)的状态的更新。理想地,消费者应用从每个计算设备接收尽可能多的消息以具有每个计算设备的状态的准确视图。

数据消费者可以通过基于轮询的方法(有时称为“基于拉的方法”)或基于推送的方法来获得一个或多个数据生产者的状态。在基于轮询的解决方案中,数据消费者从数据生产者周期性地轮询或者请求数据。然而,如果周期过短,则数据消费者将得到冗余状态数据。如果周期过长,则数据生产者的状态可能在请求之间改变,而数据消费者不知道一个或多个状态变化。如果数据消费者脱机或者停止轮询数据生产者,则数据生产者将不向数据消费者发送数据。

基于推送的技术遵循发布者/订阅者范例。在基于推送的解决方案中,数据消费者向数据生产者发送对数据的请求。该请求可以指示数据消费者对什么数据感兴趣并且数据消费者想要如何接收数据。数据生产者可以根据请求来向数据消费者发送数据。

由于若干原因基于推送的技术可以是更高效的。例如,数据生产者可以在数据生产者改变状态时向数据消费者发送数据。数据消费者不必针对每个数据更新发送单独的请求,这可以减少数据发布者需要处理的中断或请求的数量。数据生成者可同时地推送更新,并且可以避免关于请求在不同的系统处在不同的时间到达的问题。

然而,数据消费者无法控制数据生产者可以使用多少带宽。例如,在几个小时期间,数据生产者可以向数据消费者发送如此多的数据,以致数据消费者的网络或处理器带宽过载。结果,从数据生产者或其他计算机系统到数据消费者的数据或消息可能被延迟或者丢弃。在不止一个数据生产者向数据消费者发送数据的系统中,数据消费者可能更快地变得过载。

附图说明

在附图中:

图1示出了根据示例实施例的具有多个网络设备(数据生产者)和客户端计算机(数据消费者)的示例联网环境。

图2示出了用于分发计算设备向客户端计算机发送数据的速率的过程。

图3是示出可以在其上实现本发明的实施例的计算机系统的框图。

虽然每个附图出于示出清楚的示例的目的而示出了特定实施例,但是其他实施例可以省略、添加、重新排序或者修改附图中示出的元件中的任一个。出于示出清楚的示例的目的,可以参考一个或多个其他附图来描述一个或多个附图,但是在其他实施例中不要求使用在一个或多个其他图中示出的特定布置。例如,可以参考图2中的若干步骤来描述并且在下面详细地讨论图1中的客户端计算机110和网络设备120,但是在其他实施例中不要求使用图1中示出的特定布置。

具体实现方式

在以下描述中,出于说明的目的,阐述了许多具体细节以便提供对本发明的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实践本发明。在其他情况下,以框图形式示出众所周知的结构和设备,以便避免不必要地使本发明混淆。此外,除非另外明确地陈述,否则诸如“或”之类的词语可以是包括性的或排他性的。

在本文中根据以下提纲对实施例进行描述:

1.0一般概述

2.0用于分发数据消费者的带宽的示例网络拓扑

3.0用于分发网络计算设备向客户端计算机发送数据的速率的过程

3.1确定每个计算设备可用的带宽份额(share)

3.2确定计算设备将理想地发送消息的速率

3.3确定计算设备是否需要附加带宽或者具有剩余带宽

3.4请求并分发速率分配

3.5根据分发的速率来发送消息或数据

3.6对数据或消息的类型进行优先级排序

4.0实现机制-硬件概述

5.0公开的其他方面

1.0一般概述

在本文中讨论了用于数据生产者分发数据消费者被估计为具有的带宽,使得每个数据生产者能够以所述数据消费者可接收并处理的速率发送数据的系统和方法。在实施例中,一种计算机系统包括:第一计算设备,所述第一计算设备被编程为:确定将可用于所述第一计算设备在将来的时间段期间向客户端计算机发送数据的第一带宽份额;确定所述第一计算设备将在所述将来的时间段期间向所述客户端计算机发送数据的第一速率;确定所述第一速率比将可用于所述第一计算设备在所述将来的时间段期间向所述客户端计算机发送数据的所述第一带宽份额小第一增量;第二计算设备,所述第二计算设备通信地耦合到所述第一计算设备并且被编程为:确定将可用于所述第二计算设备在所述将来的时间段期间向所述客户端计算机发送数据的第二带宽份额;确定所述第二计算设备将在所述将来的时间段期间向所述客户端计算机发送数据的第二速率;确定所述第二速率比将可用于所述第二计算设备在所述将来的时间段期间向所述客户端计算机发送数据的第二带宽份额大第二增量;向包括所述第一计算设备的一个或多个计算设备发送对附加速率分配的第一请求;从所述第一计算设备接收等于或小于所述第一增量的第一速率分配;其中,所述第一计算设备被编程为在所述将来的时间段期间以小于或等于所述第一速率减去所述第一速率分配的第一实际速率向所述客户端计算机发送数据。

在实施例中,所述第一计算设备被配置为确定所述第一计算设备将在所述将来的时间段期间向所述客户端计算机发送的第一数据量,并且所述第一计算设备基于所述第一数据量和所述将来的时间段跨越的时间的长度来确定所述第一速率。

在实施例中,所述第一计算设备被配置为基于已经由所述第一计算设备分别在一个或多个先前的时间段期间发送到所述客户端计算机的一个或多个数据量,来确定所述第一计算设备将向所述客户端计算机发送的所述第一数据量。

在实施例中,所述第二计算设备被配置为:确定所述第二速率大于所述第二带宽份额加上所述第一速率分配;向所述多个计算设备中的一个或多个计算设备发送对附加速率分配的第二请求。

在实施例中,所述计算机系统包括第三计算设备,并且所述第二计算设备被配置为:从所述第三计算设备接收第二速率分配;确定所述第二速率小于或等于所述第二带宽份额加上所述第一速率分配和所述第二速率分配;以小于或等于所述第二带宽份额加上所述第一速率分配和所述第二速率分配的第二实际速率向所述客户端计算机发送数据。

在实施例中,所述第二计算设备被配置为:确定所述第二计算设备将向所述客户端计算机发送与第一优先级相关联的数据的第一部分速率;确定所述第二计算设备将向所述客户端计算机发送与第二优先级相关联的数据的第二部分速率;其中,所述第二速率是至少所述第一部分速率和所述第二部分速率的和;确定所述第一部分速率小于所述第二带宽份额加上所述第一速率分配;以等于或小于所述第一部分速率的第二实际速率在与所述第一优先级相关联的多个第一消息中发送数据;以等于或小于所述第二带宽份额加上所述第一速率分配的和但是减去所述第一部分速率的第三实际速率在与所述第二优先级相关联的多个第二消息中发送数据。

在实施例中,所述计算机系统包括第三计算设备,其中,所述第一请求包括所述第二增量,并且所述第三计算设备被配置为:确定所述第三计算设备将在所述将来的时间段期间向所述客户端计算机发送数据的第三速率;确定所述第三速率比所述第三计算设备将在所述将来的时间段期间可用的第三带宽份额大第三增量;向所述多个计算设备中的一个或多个计算设备发送对附加速率分配的第二请求,其中,所述第二请求包括所述第三增量;其中,所述第一计算设备被配置为:从所述第二计算设备接收具有所述第二增量的所述第一请求;从所述第三计算设备接收具有所述第三增量的所述第二请求;确定所述第二增量大于所述第三增量,并且作为响应:向所述第二计算设备发送所述第一速率分配,其中,所述第一速率分配小于所述第一增量;向所述第三计算设备发送第二速率分配,其中,所述第二速率分配小于所述第一增量和所述第一速率分配。

在实施例中,一种用于配给由向客户端计算机发送数据的多个网络计算设备所使用的带宽量的方法,所述方法包括:确定将可用于所述多个网络计算设备中的第一计算设备在第一将来的时间段期间向所述客户端计算机发送数据的第一带宽份额;确定所述第一计算设备将在所述第一将来的时间段期间向所述客户端计算机发送数据的第一速率;确定所述第一速率比将可用于所述第一计算设备在所述第一将来的时间段期间向所述客户端计算机发送数据的所述第一带宽份额小第一增量;从所述多个网络计算设备中的第二计算设备接收对附加速率分配的第一请求;向所述第二计算设备发送等于或小于所述第一增量的第一速率分配;在所述第一将来的时间段期间以小于或等于所述第一速率减去所述第一速率分配的第一实际速率向所述客户端计算机发送数据。

2.0用于分发数据消费者的带宽的示例网络拓扑

图1示出了根据示例实施例的具有多个网络设备(数据生产者)和客户端计算机(数据消费者)的示例联网环境。在图1中,系统100包括客户端计算机110、网络设备120、网络设备130、网络设备140、网络设备150和网络设备160,在本文中为了简洁被统称为计算机110-160。计算机110-160通过一个或多个计算机网络或互联网直接地或间接地通信地耦合,并且可以使用诸如边界网关协议(“bgp”)之类的一个或多个标准或专有协议来发现彼此。例如,在图1中,网络设备130通过网络设备150与网络设备160通信地耦合。另外,例如,客户端计算机110通过网络设备120或网络设备160与网络设备130-150通信地耦合。此外,计算机110-160可以通过图1中未示出的一个或多个计算机通信地耦合。

图1中的网络设备中的每一个均可以包括被配置为实现本文中讨论的或图2中示出的一个或多个特征或步骤的硬件或软件。例如,图1包括网络设备160的分解图,所述网络设备160包括网络网络带宽分发指令105。网络带宽分发指令105可以是计算机逻辑或可执行指令,其当由网络设备160执行时,使得网络设备160实现本文中讨论的或图2中示出的一个或多个特征或步骤。网络设备120-160中的每个网络设备可以托管、执行或者实现网络带宽分发指令105或类似指令的副本。

客户端计算机110可以包括被配置为实现本文中讨论的或图2中示出的一个或多个特征或步骤的硬件或软件。例如,客户端计算机110可以包括客户端带宽分发指令112。客户端带宽分发指令112可以是使得客户端计算机110实现本文中讨论的一个或多个特征或步骤的计算机逻辑或可执行指令。

出于示出清楚的示例的目的,客户端计算机110被标记为计算机并且网络设备120-160被标记为网络设备;然而,计算机110-160各自可以是计算机。“计算机”可以是一个或多个物理计算机、虚拟计算机或计算设备。作为示例,计算机可以是一个或多个服务器计算机、基于云的计算机、基于云的计算机集群、诸如虚拟处理器、储存装置和存储器之类的虚拟机实例或虚拟机计算元件、数据中心、存储设备、路由器、集线器、交换机、台式计算机、膝上型计算机、移动设备或任何其他专用计算设备。除非另外明确地陈述,否则在本文中对“计算机”的任何引用可以意指一个或多个计算机。进一步地,出于示出清楚的示例的目的,在图1中示出了有限数量的元件,但是其他实施例可以使用任何数量的网络设备或计算机。

虽然上面列举的组件中的每一个均被示出为在彼此分开的远程计算机上运行,但是上面列举的组件中的一个或多个可以是同一计算机的一部分或者在同一计算机上执行。例如,网络设备120和网络设备130可以是在同一计算机上执行的两个软件应用,并且每个软件应用可以产生数据并将它发送到客户端计算机110。附加地或替代地,网络设备120可以是在客户端计算机110上执行的软件应用,并且软件应用可以通过一个或多个标准或专有联网协议向客户端计算机110发送数据。标准联网协议的非限制性示例可以是传输控制协议(tcp)和互联网协议(ip),被称为tcp/ip。

3.0用于分发网络计算设备向客户端计算机发送数据的速率的过程

在一些情形下,网络设备120-160可能以高于客户端计算机110可处理的速率产生数据并将它发送到客户端计算机110。例如,网络设备120-160可能在特定时间段期间发送比客户端计算机110可处理或者有带宽来接收的更多的数据。发送比客户端计算机110由于带宽限制、处理限制或其他限制而可接收的更多的数据可以被称为使得客户端计算机110过载。如果不加管制,则可能丢弃来自网络设备120-160的消息,或者客户端计算机110可能停止接收消息、停机或者以其他方式变得完全地或部分地无响应。图2示出了用于分发计算设备向客户端计算机发送数据的速率的过程。在实施例中,图1的元件中的每一个均托管或者执行程序指令,所述程序指令实现图2中示出的并且进一步在本文中的其他部分中公开的算法。

3.1确定每个计算设备可用的带宽份额

现在参考图2,在步骤210中,向客户端计算机发送数据的多个计算设备中的每个计算设备确定计算设备期望可用于计算设备在将来的时间段期间向客户端计算机发送数据的带宽份额。带宽可以是将来的时间段期间的数据量。因此,可供每个网络设备使用的份额可以基于客户端计算机可在不过载的情况下接收数据的速率以及向客户端计算机发送数据的多个计算机设备(消息生产者)中的计算机设备的总数。时间段可以是即将到来的秒、分钟、小时或在特定时间点开始或者结束的其他时间量。

出于示出清楚的示例的目的,假定客户端计算机110正在接收由网络设备120-160产生的数据,并且确定客户端计算机110能够从网络设备120-160接收并处理的总可用数据量是每分钟50兆位。客户端计算机110可以向网络设备120-160发送指示客户端计算机110正在从网络设备120-160接收数据,并且可从每分钟的顶部开始每分钟接收并处理50兆位的数据。因此,网络设备120-160中的每个网络设备可以确定网络设备可向客户端计算机110每分钟发送等量或按比例份额的数据,而不使客户端计算机110过载。因此,在此示例中,网络设备120-160中的每个网络设备可以确定网络设备具有每分钟十兆位的带宽份额。

在实施例中,从计算设备发送到客户端计算机的每个消息的大小可以是固定的。因此,带宽、份额或速率可以是客户端计算机可在将来的时间段期间在不过载情况下接收的消息的数量。附加地或替代地,速率可以基于与该时间段不同的时间量。例如,客户端计算机110可以向网络设备120-160发送指示它可在接下来的五分钟期间每分钟接收并处理多达10个消息的数据。

3.2确定计算设备将理想地发送消息的速率

在步骤220中,所述多个计算设备中的每个计算设备确定计算设备能在将来的时间段期间产生并向客户端计算机发送数据的速率。每个计算设备可以基于计算设备在一个或多个先前的时间段的每个周期内在客户端计算机将不会超载的情况下产生并向客户端计算机发送或者将会产生或者向客户端计算机发送数据的速率,来确定或者预测计算设备将理想地产生数据并将它发送到客户端计算机的速率。每个计算设备可以确定或者预测计算设备将在将来的时间段跨越的时间的长度上理想地产生消息的不同速率。出于示出清楚的示例的目的,假定如下:

●客户端计算机110正在从网络设备120-160接收数据;

●客户端计算机110已经向网络设备120-160发送指示它可从每分钟的顶部开始每分钟接收并处理五十兆位的数据,并且客户端计算机110正在从五个计算设备接收数据的数据;

●网络设备120-160各自确定每分钟十兆位(10个消息)是网络设备可用的带宽份额;

●网络设备120-160发送各自为一兆位的消息;

●如果客户端计算机110能够接收并处理所发送的所有消息而不过载,则网络设备120-140中的每个网络设备在过去的五分钟期间每分钟发送或者将会发送十个消息(十兆位)的平均值;

●如果客户端计算机110能够接收并处理是发送的所有消息而不过载,则网络设备150在过去的五分钟期间每分钟发送或者将会发送八个消息(八兆位)的平均值;

●如果客户端计算机110能够接收并处理所发送的所有消息而不过载,则网络设备160在过去的四分钟期间每分钟发送或者将会发送十二个消息(十二兆位)的加权平均值。

因此,网络设备120可以确定或者预测网络设备120将在接下来将开始的分钟内理想地发送十个消息(十兆位)。网络设备130可以确定或者预测网络设备130将在接下来将开始的分钟内理想地发送十个消息(十兆位)。网络设备140可以确定或者预测网络设备140将在接下来将开始的分钟内理想地发送十个消息(十兆位)。网络设备150可以确定或者预测网络设备150将在接下来将开始的分钟内理想地发送八个消息(八兆位)。网络设备160可以确定或者预测网络设备160将在接下来将开始的分钟内理想地发送十二个消息(十二兆位)。

每个计算设备可以使用不同的方法来确定或者预测计算设备将在特定将来的时间段期间向客户端计算机发送数据的理想速率。如先前示例中所图示,网络设备130可以通过计算网络设备130在最后的n个时间段期间向客户端计算机110发送或者将会发送数据的平均速率,来确定或者预测网络设备130将在将来的时间段期间向客户端计算机110理想地发送数据的速率。然而,网络设备160可能已在网络设备160在过去的两个周期期间已经向客户端计算机110发送或者将会发送的数据量中达到峰值。因此,网络设备160可以通过计算网络设备160在最后的n个时间段期间向客户端计算机110发送或者将会发送的数据的速率的加权平均值,来确定或者预测网络设备160将在将来的时间段期间向客户端计算机110理想地发送数据的速率。

为了改进计算设备对每个周期的边界达成一致并且准确地确定或者预测每个计算设备将向客户端计算机理想地发送数据的速率的能力,客户端计算机可以向计算设备发送同步数据。例如,客户端计算机110可以向网络设备120-160发送同步数据。同步数据可以包括自纪元(epoch)或其他时钟数据以来的时间。不必以原子方式使客户端计算机110和网络设备120-160同步;然而,更紧密的客户端计算机110和网络设备120-160被同步,更准确的客户端计算机110和网络设备120-160可以估计理想的带宽、份额或速率。

3.3确定计算设备是否需要附加带宽或者具有剩余带宽

在步骤230中,所述多个计算设备中的每个计算设备确定先前步骤中的理想速率是否小于或等于计算设备预期在第一步骤中可用的带宽份额加上任何附加速率分配两者。如果是,则对计算设备的控制可以进行到步骤260;否则,对计算设备的控制可以进行到步骤240。速率分配可以是原先预期可用于第一计算设备,但是被指派给第二计算设备的带宽的一部分。出于示出清楚的示例的目的,假定如下:

●客户端计算机110正在从网络设备120-160接收数据;

●网络设备120-160中的每个网络设备具有十兆位带宽份额以在将不久开始的特定周期期间向客户端计算机110发送数据;

●网络设备120-160发送各自为一兆位的消息;

●“理想速率”是计算设备将在特定周期内向客户端计算机110理想地发送数据的速率。

●网络设备120具有每分钟十个消息(十兆位)的理想速率;

●网络设备130具有每分钟十个消息(十兆位)的理想速率;

●网络设备140具有每分钟七个消息(七兆位)的理想速率;

●网络设备150具有每分钟十一个消息(十一兆位)的理想速率;

●网络设备160具有每分钟十二个消息(十二兆位)的理想速率。

因此,网络设备120-140中的每个网络设备可以确定网络设备具有小于或等于其十兆位带宽份额的理想速率,并且进行到步骤260。网络设备150和网络设备160可以各自确定网络设备具有不小于或等于其十兆位带宽份额的理想速率,并且进行到步骤240。

3.4请求并分发速率分配

在步骤240中,计算设备从所述多个计算设备中的一个或多个计算设备请求一个或多个速率分配。继续先前示例,网络设备150可以从网络设备120-140和160请求一个或多个速率分配,并且进行到步骤250。网络设备160可以从网络设备120-150请求一个或多个速率分配,并且进行到步骤260。

在步骤250中,一个或多个计算设备将剩余速率分配(若有的话)分发给所述多个计算设备中的一个或多个其他计算设备。继续先前示例,网络设备120-140可以各自接收来自网络设备150和网络设备160的对速率分配的请求。响应于接收到对速率分配的请求,网络设备140可以向网络设备150发送每分钟一个消息(一兆位)的第一速率分配并且向网络设备160发送每分钟一个消息(一兆位)的第二速率分配。

在步骤260中,请求了一个或多个速率分配的一个或多个计算设备中的每个计算机确定是否接收到一个(或多个)任何速率分配。如果是,则计算设备可以返回步骤230;否则,计算设备可以进行到步骤270。继续先前示例,在网络设备150-160接收到每分钟一个消息(一兆位)的速率分配之后,网络设备150-160可以返回到步骤230。网络设备150可以确定其理想速率(每分钟十一个消息或兆位)小于或等于其带宽份额(每分钟十个消息或兆位)加上接收到的任何附加速率分配(每分钟一个消息或兆位);因此,网络设备150可以进行到步骤250。网络设备160可以确定其理想速率(每分钟十二个消息或兆位)不小于或等于其带宽份额加上接收到的任何附加速率分配(十一个消息或兆位);因此,网络设备160可以返回到步骤240。

在再访问的步骤240中,网络设备160可以从网络设备120-150请求附加带宽或速率分配。网络设备140可以接收请求并且向网络设备160发送每分钟一个消息(一兆位)的另一速率分配。在网络设备260接收到该速率分配之后,网络设备160可以返回到步骤230并且确定其理想速率(十二个消息或兆位)小于或等于其带宽份额(十个消息或兆位)加上接收到的任何附加速率分配(两个消息或兆位);因此,网络设备150可以进行到步骤250。

在实施例中,网络设备160不必向网络设备120-150中的每个网络设备发送对附加速率分配的请求。替代地,网络设备160可以确定哪一个或多个网络设备已经在特定周期内向网络设备160发送了一个或多个速率分配,并且从那些一个或多个网络设备发送对特定周期内的速率分配的请求。在此示例中,网络设备160可以向网络设备140发送对特定周期内的速率分配的请求,但是不必向网络设备120、130或150发送对特定周期内的速率分配的请求。网络设备160可以隐式地确定网络设备120-150中的任何其他网络设备不具有任何剩余速率分配。

可以对第三计算设备重复对从第一计算设备到第二计算设备的速率分配的请求。例如,网络设备160可以从网络设备150请求速率分配。如果网络设备150确定网络设备150不具有任何剩余速率分配以提供给网络设备160,则网络设备150可以向网络设备120-140发送对速率分配的请求。例如,如果网络设备150从网络设备130接收到速率分配,则网络设备150可以将该速率分配转发到网络设备160。另外,例如,在步骤240中,网络设备160可以从网络设备150请求速率分配。网络设备160可能不知道网络设备120-140的ip地址。然而,网络设备150可以对网络设备120-140重复对从网络设备160到网络设备的速率分配的请求。网络设备150可以将对针对网络设备150的网络分配的请求发送到网络设备120-140或160。网络设备150可以从网络设备140接收到两个速率分配,并且将这些速率分配中的一个转发到网络设备160。

3.5根据分发的速率来发送消息或数据

在步骤270中,所述多个计算设备中的每个计算设备在将来的时间段期间以小于或等于计算设备带宽份额加上接收到的剩余实际速率(若有的话)减去放弃的剩余速率分配(若有的话)的实际速率,向客户端计算机发送数据。继续先前示例,在下一分钟开始时,网络设备120-160中的每个网络设备可以根据以下速率向客户端计算机110发送消息或数据:

●网络设备120未接收到或者放弃任何速率分配;因此,网络设备120可以以每分钟十个消息(十兆位)或更小的速率发送消息或数据;

●网络设备130未接收到或者放弃任何速率分配;因此,网络设备130可以以每分钟十个消息(十兆位)或更小的速率发送消息或数据;

●网络设备140未接收到任何速率分配,但是放弃每分钟三个消息(三兆位)的速率分配;因此,网络设备140可以以每分钟七个消息(七兆位)或更小的速率发送消息或数据;

●网络设备150接收到每分钟一个消息(一兆位)的速率分配,但是未放弃任何速率分配;因此,网络设备150可以以每分钟十一个消息(十一兆位)或更小的速率发送消息或数据;

●网络设备160接收到每分钟两个消息(两兆位)的速率分配,但是未放弃任何速率分配;因此,网络设备160可以以每分钟十二个消息(十二兆位)或更小的速率发送消息或数据。

当正在特定时间段期间执行步骤270时,系统可以在下一个时间段内重复步骤210-260。可无限地重复该过程。出于在本文中示出清楚的示例的目的,使用了整数;然而,客户端计算机可接收并处理的总可用带宽量、带宽份额、理想速率、速率分配以及本文中讨论的其他特征不必是整数。例如,计算设备可以有每分钟2.5个消息或兆位剩余,以分发给向客户端计算机发送数据的一个或多个计算设备。

在以上示例中,客户端计算机110具有足够的带宽可用于网络设备120-160中的每个网络设备以网络设备已确定或者预测为网络设备的理想速率的速率在特定周期内发送消息。然而,计算设备可能无法接收到足够的速率分配以用于计算设备以计算设备的理想速率向客户端计算机发送消息。在那种情况下,计算设备可以以等于或小于给予(若有的话)计算设备的带宽份额和速率分配的速率在特定时间段期间发送消息。出于示出清楚的示例的目的,假定如下:

●网络设备160具有每分钟十三兆位的理想速率;

●网络设备160具有每分钟十兆位的带宽份额;

●网络设备160已经接收到每分钟一兆位的第一速率分配。

在步骤260中,在发送对一个或多个速率分配的一个或多个附加请求之后,如果网络设备160未在特定周期内接收到任何附加速率分配,则网络设备160可以进行到步骤270。在步骤270中,尽管网络设备160具有每分钟十三兆位的理想速率,但网络设备160可以在特定周期期间以每分钟十一兆位或更小的速率发送数据。

3.6对数据或消息的类型进行优先级排序

一些消息对客户端计算机而言可能比其他消息更重要。例如,与例程状态变化有关的消息(“正常消息”)对客户端计算机110的用户而言可能不像与在特定周期期间出现的错误有关的消息(“错误消息”)一样重要。

在实施例中,对于特定周期,如果计算设备以大于带宽份额和任何附加速率分配的速率产生消息,则计算设备可以将这些消息存储在队列中。如果队列中的消息已被存储在队列中持续超过特定时间量,则计算设备可以从队列中移除该消息,而不将该消息发送到客户端计算机。

在实施例中,对于特定周期,如果计算设备以大于带宽份额和任何附加速率分配的速率产生消息,则计算设备可以将这些消息存储在优先级队列中。计算设备可以基于消息中的数据向放置到优先级队列中的每个消息指派优先级。例如,如果消息包括严重错误消息或者来自特别关键的计算机系统,则可以在队列中给予该消息高优先级,并且计算设备可以在发送队列中具有较低优先级的任何其他消息之前,将错误消息发送到客户端计算机。如果优先级队列中的消息与特定优先级和特定优先级计时器相关联,则可以向每种类型的消息指派优先级计时器,并且该消息在优先级队列中的时间量等于或大于与该类型的消息相关联的特定优先级定时器,然后网络计算机可以动态地将该消息移动到较低优先级或者从优先级队列中移除该消息。与第一类型的消息相关联的第一优先级定时器可以不同于与第二类型的消息相关联的第二优先级定时器。

3.7根据部分优先级速率来发送数据

在实施例中,计算设备可以维持各自与不同类型的消息和不同的优先级相关联的多个部分理想速率。所述多个部分理想速率的和可以是在步骤220中确定的理想速率。计算设备可以优于具有较低优先级的消息而对与较高优先级相关联的消息进行优先级排序。然而,可以将特定周期内输出的总消息限制于给予该计算设备的带宽份额加上任何速率分配(若有的话)。出于示出清楚的示例的目的,假定如下:

●网络设备160向客户端计算机110发送两种类型的消息:正常消息和错误消息;

●正常消息与错误消息相比具有较低的优先级;

●网络设备160具有每分钟10个消息的带宽份额。

在步骤220中,网络设备160可以基于网络设备160在一个或多个先前的时间段的每个周期内在客户端计算机110将不会过载的情况下产生并向客户端计算机110发送错误消息或者将会产生或者向客户端计算机110发送错误消息的速率,来确定或者预测网络设备160将理想地产生并向客户端计算机110发送错误消息的第一理想部分速率。网络设备160还可以基于网络设备160在一个或多个先前的时间段的每个周期内在客户端计算机110不会过载的情况下产生并向客户端计算机110发送消息或者将会产生或者向客户端计算机110发送消息的速率,来确定或者预测网络设备160将理想地产生并向客户端计算机110发送正常消息的第二理想部分速率。出于示出清楚的示例的目的,假定第一理想部分速率是每分钟四个消息,并且第二部分速率是每分钟十个消息。用于网络设备160向客户端计算机110发送消息的总理想速率是部分速率的和:在特定周期期间每分钟十四个消息。

与较低优先级相关联的消息首先被限制。例如,在接收到任何附加速率分配之后,在步骤270中,网络设备160可以以等于或小于(1)第一部分速率或(2)带宽份额加上接收到的任何附加速率分配(若有的话)中的较小者的速率,在特定周期期间向客户端计算机110发送错误消息。网络设备160可以以等于或小于(1)第二部分速率或(2)带宽份额加上接收到的任何附加速率分配(若有的话)但是减去第一部分速率中的较小者的速率,在特定周期期间向客户端计算机110发送正常消息。

3.8对计算设备进行优先级排序

一些计算设备与其他计算设备相比可能更重要,或者可以被更紧密地监测。例如,网络设备120-160可以是提供各种服务的计算机。网络设备160可以是向公司提供任务关键服务的计算机。监测网络设备120-160的健康状况的用户或管理员可能优选监测网络设备160中的比其他网络设备120-150更多的状态,这将使得网络设备160生成比网络设备120-150更多的消息。因此,使用客户端计算机110的用户可以在配置文件中存储指示如果需要则客户端计算机110的带宽的至少50%应该可用于网络设备160的数据。因此,在上面讨论的过程的步骤210中,客户端计算机110可以向网络设备120-160发送指示客户端计算机110正在从网络设备120-160接收数据并且从每分钟的顶部开始每分钟可接收并处理八十兆位的数据,并且网络设备160应该具有带宽的50%的默认份额,并且在网络设备120-150之中同等地划分剩余默认份额。因此,网络设备120-150中的每个网络设备可以确定网络设备可每分钟向客户端计算机110发送十兆位的数据,而不使客户端计算机110过载。网络设备160可以确定网络设备160可以每分钟向客户端计算机110发送多达40兆位的数据,而不使客户端计算机110过载。

3.9速率分配的更快分发

在以上示例中,步骤240被网络设备160重复两次(发送的每个请求各一次),并且步骤250被网络设备140重复三次(对于速率分配的每个请求接收和发送的每个速率分配各一次)。为了减少计算设备必须重复步骤的次数,计算设备可以发送指示计算设备需要多少附加带宽以满足计算设备的理想速率的对速率分配的请求。

在实施例中,每个对速率分配的请求可以包括速率增量。速率增量可以是高于或低于用于每个计算设备的带宽份额的带宽量。在以上示例中,网络设备120-130具有零的速率增量,因为每个网络设备具有与网络设备的带宽份额相同的理想速率。网络设备140具有每分钟三个消息(三兆位)的速率增量。网络设备150具有每分钟-1个消息(-1兆位)的速率增量。网络设备160具有每分钟-2个消息(-2兆位)的速率增量。因此,在以上示例中,在步骤240中,网络设备150可以发送包括每分钟-1个消息(-1兆位)的第一速率增量的对速率分配的请求;网络设备160可以发送包括每分钟-2个消息(-2兆位)的第二速率增量的对速率分配的请求。在步骤250中,网络设备140可以确定第一速率增量小于第二速率增量,并且作为响应,与分配给网络设备160的更大带宽量和分配给网络设备150的更少带宽量相比,向网络设备160分配更多的速率。

计算设备可以分配给请求速率分配的每个计算设备的带宽量可以基于网络设备的请求中的速率增量与每个接收到的请求中的所有速率增量的和的比率。继续先前示例,对于网络设备160,网络设备130可以计算网络设备160的速率增量(2个消息或兆位)与接收到的速率增量的总量(在此示例中包括来自网络设备150的速率增量(2个消息或兆位)和来自网络设备160的速率增量(2个消息或兆位))的比率。因此,分配给网络设备160的剩余带宽的比率可以是2/3,其在此示例中是2个消息(2兆位)。分配给网络设备150的剩余带宽的比率可以是1/3,其在此示例中是1个消息(1兆位)。

3.10并行实现方式

出于在本文中示出示例的目的,网络设备120-160中的每个网络设备执行网络带宽分发指令105的实例。然而,一个或多个网络设备可以同时或并行地执行网络带宽分发指令105的多于一个实例。每个实例可以是由网络设备执行的进程或线程。每个实例可以执行上面关于网络设备所讨论的方法中的每一个。例如,网络设备120上的第一实例可以向客户端计算机110发送在网络设备120上运行的任务关键服务的状态消息。网络设备120上的第二实例可以向客户端计算机110发送在网络设备120上运行的非任务关键服务的状态消息。网络设备120上的第一实例可被视为在特定周期内具有它自己的带宽份额和优先级的单独的设备,并且网络设备120上的第二实例可以被视为在特定周期内具有它自己的带宽份额和优先级的单独的设备。网络设备120上的第一实例可以在特定周期内从网络设备120或其他网络设备(例如网络设备130-160)上的第二实例请求速率分配。网络设备130可以从设备120上的第一实例和第二实例请求速率分配。客户端计算机110可以向网络设备120上的第一实例指派较高的优先级,并且向网络设备120上的第二实例指派较低的优先级。在实施例中,客户端计算机(例如客户端计算机110)也可以运行网络带宽分发指令105的实例,并且与客户端带宽分发指令112的实例同时或并行地执行该实例。

4.0实现机制-硬件概述

根据一个实施例,本文中描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行这些技术,或者可以包括诸如被持久地编程以执行这些技术的一个或多个专用集成电路(asic)或现场可编程门阵列(fpga)之列的数字电子设备,或者可以包括被编程为依照固件、存储器、其他储存装置或组合中的程序来指令执行这些技术的一个或多个通用硬件处理器。此类专用计算设备也可以将定制硬连线逻辑、asic或fpga与定制编程进行组合以实现这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备或并入硬连线和/或程序逻辑以实现这些技术的任何其他设备。

例如,图3是示出可以在其上实现本发明的实施例的计算机系统300的框图。计算机系统300包括用于传送信息的总线302或其他通信机制,以及与总线302耦合以处理信息的硬件处理器304。硬件处理器304可以是例如通用微处理器。

计算机系统300也包括耦合到总线302以用于存储要由处理器304执行的信息和指令的主存储器306,例如随机存取存储器(ram)或其他动态存储设备。主存储器306也被用于在执行要由处理器304执行的指令期间存储临时变量或其他中间信息。此类指令当被存储在处理器304可访问的非暂态存储介质中时,使得计算机系统300成为被定制为执行指令中指定的操作的专用机器。

计算机系统300进一步包括耦合到总线302以用于为处理器304存储静态信息和指令的只读存储器(rom)308或其他静态存储设备。存储设备310(例如磁盘或光盘)被提供并耦合到总线302以用于存储信息和指令。

计算机系统300可以经由总线302耦合到显示器312,例如,阴极射线管(crt),以用于向计算机用户显示信息。输入设备314(包括字母数字键和其他键)耦合到总线302以用于向处理器304传送信息和命令选择。另一类型的用户输入设备是光标控件316,例如,用于向处理器304传送方向信息和命令选择并且用于控制显示器312上的光标移动的鼠标、轨迹球或光标方向键。此输入设备通常具有允许设备指定平面中的位置的两个轴(第一轴(例如,x)和第二轴(例如,y))上的两个自由度。

计算机系统300可以使用与计算机系统相结合地使得或编程计算机系统300成为专用机器的定制硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑来实现本文中描述的技术。根据一个实施例,本文中的技术由计算机系统300响应于处理器304执行包含在主存储器306中的一个或多个计算机可执行指令的一个或多个序列来执行。可以将此类指令从另一存储介质/计算机可读介质(例如存储设备310)读取到主存储器306中。包含在主存储器306中的指令的序列的执行使得处理器304执行本文中描述的处理步骤。在替代实施例中,可以代替或者与软件指令相结合地使用硬连线电路。

如本文中所使用的术语“存储介质”和“计算机可读介质”指代存储使得机器以特定方式操作的数据和/或指令的任何非暂态介质。此类存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,例如,存储设备310。易失性介质包括动态存储器,例如,主存储器306。常见形式的存储介质包括例如软盘、柔性盘、硬盘、固态硬盘、磁带或任何其他磁数据存储介质、cd-rom、任何其他光学数据存储介质、具有孔图案的任何物理介质、ram、prom和eprom、flash–eprom、nvram、任何其他存储器芯片或盒。

存储介质不同于传输介质,但是可以与传输介质相结合地使用。传输介质参与在存储介质之间转移信息。例如,传输介质包括同轴电缆、铜线和光纤,包括含总线302的电线。传输介质也可采取声波或光波的形式,诸如在无线电波和红外数据通信期间产生的那些。

可以在将一个或多个指令的一个或多个序列承载到处理器304以供执行中涉及各种形式的介质。例如,最初可以在远程计算机的磁盘或固态驱动器上承载指令。远程计算机可将指令加载到其动态存储器中并且使用调制解调器来通过电话线发送指令。计算机系统300本地的调制解调器可在电话线上接收数据并且使用红外发射器将数据转换为红外信号。红外检测器可接收红外信号中承载的数据并且适当的电路可将数据放置在总线302上。总线302将数据承载到主存储器306,处理器304从主存储器306中检索并执行指令。由主存储器306接收到的指令可以可选地在由处理器304执行之前或之后被存储在存储设备310上。

计算机系统300还包括耦合到总线302的通信接口318。通信接口318提供耦合到被连接到本地网络322的网络链路320的双向数据通信。例如,通信接口318可以是综合服务数字网络(isdn)卡、有线电视调制解调器、卫星调制解调器或用于提供到对应类型的电话线的数据通信连接的调制解调器。作为另一示例,通信接口318可以是用于提供到兼容lan的数据通信连接的局域网(lan)卡。还可以实现无线链路。在任何这种实现方式中,通信接口318发送并接收承载表示各种类型信息的数字数据流的电、电磁或光学信号。

网络链路320通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路320可以通过本地网络322提供到主机计算机324或者到由互联网服务提供商(isp)326运营的数据设备的连接。isp326进而通过现在通常称为“互联网”328的全球分组数据通信网络来提供数据通信服务。本地网络322和互联网328都使用承载数字数据流的电、电磁或光学信号。通过各种网络的信号以及在网络链路320上并通过承载到和来自计算机系统300的数字数据的通信接口318的信号是传输介质的示例形式。

计算机系统300可通过网络、网络链路320和通信接口318来发送消息并接收数据,包括程序代码。在互联网示例中,服务器计算机330可以通过互联网328、isp326、本地网络322和通信接口318来发送用于应用程序的请求的代码。

所接收到的代码可以由处理器304在它被接收时执行,和/或存储在存储设备310或其他非易失性储存器中以供稍后执行。

5.0公开的其他方面

在前面的说明书中,已经参考可以从实现方式到实现方式变化的许多具体细节描述了本发明的实施例。本说明书和附图因此将在说明性而不是限制性意义上进行考虑。本发明的范围的唯一且排他性指标,以及由申请人旨在作为本发明的范围的内容,是按照此类权利要求发布的具体形式的根据此申请发布的权利要求的集合的字面和等同范围,包括任何后续修正。

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