概率性调节的制作方法

文档序号:15575354发布日期:2018-09-29 05:24阅读:179来源:国知局

以受限制的访问存储的数据的能力作为交换,冷存储系统可提供较低成本的数据存储。例如,对数据的访问可能受到单个用户可以全局达到的每秒查询(qps)或最大带宽的限制。这些限制可能会对例如计算机处理器单元(cpu)、内存或网络资源之类的非存储资源的总成本设置上限,并允许存储提供商维持低成本的数据存储供应。



技术实现要素:

在一些实现(implementation)中,系统包括多个端点和全局调节器。每一个端点都可以为不同用户接收请求。当端点接收请求时,端点向全局调节器提交带宽分配请求,全局调节器为每一个用户和每一个端点确定应该由端点为用户分配多少带宽。端点使用分配的带宽来判断请求应该被处理的概率,并且重复判断,直到处理请求或者确定超时期满,并应该通知用户请求将不被处理。

例如,当特定用户具有2mb/s的最大带宽上限,并且每一个请求对应1mb数据并由不同端点接收时,系统可以从20个不同端点为特定用户接收二十个读取请求。全局调节器为每一个端点分配0.1mb/s带宽,并将分配提供给接收请求的端点。端点使用带宽分配来确定接受请求的概率。

当请求最初未被接受时,端点可以以预定时间间隔确定是否接受该请求,直到例如最大接受延时的超时期满。对于每一个后续的确定,如果可用于接受请求的带宽尚未被使用,端点具有较高的接受请求的概率,例如,端点使用尚未用于处理请求的带宽的数量和带宽分配来确定概率。

如果请求不被端点接受,并且端点稍后为特定用户接收到相同请求或不同请求,则端点为该请求接收新分配,并且可以使用先前累计的带宽来确定是否接受该请求的新的概率。

通常,本说明书中描述的主题的一个创新方面可以体现在包括以下动作的方法中:对于多个处理数据的请求中的每一个,为特定实体从客户端设备接收处理数据的请求,每一个并且确定在服务于请求时要处理的数据的大小;对于多个处理数据的请求的集合的中的每一个请求,集合包括至少两个或更多个处理数据的请求,多个请求的集合中的每一个请求对应实体集合中的实体,实体集合包括两个或更多个实体,向调节器系统提供指示特定实体和在服务于请求时要处理的数据的大小的带宽分配请求,从调节器系统接收供特定实体在服务于请求时使用的带宽分配以及基于带宽分配、要处理的数据的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求;对于来自集合的请求的第一子集,响应于概率性地确定现在服务于请求,服务于请求;以及对于来自集合的请求的第二子集,响应于概率性地确定现在不服务于请求,确定预定时间段是否已经过去,响应于确定预定时间段已经过去,向客户端设备发送指示请求将不被服务的消息,或者响应于确定预定时间段未过去,按照带宽分配的数量增加令牌的累计数量,并重新确定是否现在服务于请求的概率性的确定。本方面的其他实施例包括相应的计算机系统、装置和记录在一个或多个计算机存储设备上的计算机程序,每一个被配置为执行该方法的动作。一个或多个计算机的系统可以被配置为凭借在系统上安装的软件、固件、硬件或它们的组合来执行特定操作或动作,所述软件,固件,硬件或操作的组合在操作中导致系统执行动作。一个或多个计算机程序可以被配置为凭借包括在由数据处理装置执行时使装置执行动作的指令来执行特定操作或动作。

通常,本说明书中描述的主题的一个创新方面可以体现在包括以下动作的方法中,对于多个处理数据的请求中的每一个,由端点从客户端设备为特定实体接收处理数据的请求,以及确定由端点为特定实体处理的请求的数量;对于多个处理数据的请求的集合的中的每一个请求,集合包括至少两个或更多个处理数据的请求,多个请求的集合中的每一个请求对应实体集合中的实体,实体集合包括两个或更多个实体,向调节器系统提供指示特定实体和由端点为特定实体处理的请求的数量的分配请求,从调节器系统接收供特定实体在服务于请求时使用的分配,以及基于分配、对于要被服务的请求值的一个值以及用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求;对于来自集合的请求的第一子集,响应于概率性地确定现在服务于请求,服务于请求,以及对于来自集合的请求的第二子集,响应于概率性地确定现在不服务于请求,确定预定时间段是否已经过去,响应于确定预定时间段已经过去,向客户端设备发送指示请求将不会被服务的消息,或者响应于确定预定时间段未过去,按照分配的数量增加令牌的累计数量,并且重新确定是否现在服务于请求的概率性的确定。本方面的其他实施例包括相应的计算机系统、装置和记录在一个或多个计算机存储设备上的计算机程序,每一个被配置为执行该方法的动作。一个或多个计算机的系统可以被配置为凭借在系统上安装的软件、固件、硬件或它们的组合来执行特定操作或动作,所述软件,固件,硬件或操作的组合在操作中导致系统执行动作。一个或多个计算机程序可以被配置为凭借包括在由数据处理装置执行时使装置执行动作的指令来执行特定操作或动作。

通常,本说明书中描述的主题的一个创新方面可以体现在包括以下动作的方法中:对于多个处理数据的请求中的每一个,为特定实体从客户端设备接收处理数据的请求并确定服务于请求所用的大小;对于多个处理数据的请求的集合的中的每一个请求,集合包括至少两个或更多个处理数据的请求,多个请求的集合中的每一个请求对应实体集合中的实体,实体集合包括两个或更多个实体,向调节器系统提供指示特定实体和服务于请求所用的大小的分配请求,从调节器系统接收供特定实体在服务于请求时使用的分配,以及基于分配、服务于请求所用的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求;对于来自集合的请求的第一子集,响应于概率性地确定现在服务于请求,服务于请求,以及对于来自集合的请求的第二子集,响应于概率性地确定现在不服务于请求,确定预定时间段是否已经过去,响应于确定预定时间段已经过去,向客户端设备发送指示请求将不会被服务的消息,或者响应于确定预定时间段未过去,按照分配的数量增加令牌的累计数量,并且重新确定是否现在服务于请求的概率性的确定。本方面的其他实施例包括相应的计算机系统、装置和记录在一个或多个计算机存储设备上的计算机程序,每一个被配置为执行该方法的动作。一个或多个计算机的系统可以被配置为凭借在系统上安装的软件、固件、硬件或它们的组合来执行特定操作或动作,所述软件,固件,硬件或操作的组合在操作中导致系统执行动作。一个或多个计算机程序可以被配置为凭借包括在由数据处理装置执行时使装置执行动作的指令来执行特定操作或动作。

前述和其他实施例的每个可以分别单独或组合地可选地包括以下特征中的一个或多个。概率性地确定是否现在服务于请求可以包括:基于带宽分配、要处理的数据的大小、用于数据处理装置上的特定实体的令牌的累计数量、用于数据处理装置的最大接受延时以及平均调节器延时,概率性地确定是否现在服务于请求。概率性地确定是否现在服务于请求可以包括:使用带宽分配、要处理的数据的大小和用于数据处理装置上的特定实体的令牌的累计数量,确定服务于请求的概率;生成随机数;将随机数与概率进行比较以确定随机数是否大于概率;以及响应于确定随机数不大于概率,确定现在服务于该请求;或者响应于确定随机数大于概率,确定现在不服务于该请求。

在一些实现中,该方法可以包括:对于与多个请求不同的处理数据的多个请求的第二集合中的每一个请求,第二集合包括至少一个或多个处理数据的请求:确定用于数据处理装置上的特定实体的令牌的累计数量是否小于数据的大小;以及响应于确定用于数据处理装置上的特定实体的令牌的累计数量不小于数据的大小,服务于请求。向调节器系统提供指示特定实体和在服务于请求时要处理的数据的大小的带宽分配请求可以包括:响应于确定用于所述数据处理装置的所述特定实体的令牌的累计数量小于数据的大小,向调节器系统提供指示特定实体和在服务于请求时要处理的数据的大小的带宽分配请求。重新确定是否现在服务所述请求的概率性的确定可包括:确定用于所述数据处理装置上的所述特定实体的令牌的累计数量是否小于数据的大小,响应于确定用于所述数据处理装置上的所述特定实体的令牌的累计数量不小于数据的大小,服务该请求,或者响应于确定用于所述数据处理装置上的所述特定实体的令牌的累计数量小于数据的大小,执行是否现在服务于请求的概率性的确定。

在一些实现中,该方法可以包括,确定令牌的累计数量是否为负值;向调节器系统提供指示特定实体和令牌的累计数量的更新的带宽分配请求;从调节器系统接收更新的带宽分配;以及按照更新的带宽分配的数量增加令牌的累计数量。服务于请求可以包括:从令牌的累计数量中减去在服务于请求时要处理的数据的大小。服务于请求可以包括:确定负债值,该负债值指示令牌的累计数量与在服务于请求时要处理的数据的大小之间的差值;确定负债值是否超过负债上限;以及响应于确定负债值不超过负债上限而服务于请求。

在一些实现中,数据处理装置包括云计算系统中的端点的一部分。在一些实现中,系统可以包括调节器系统。数据处理装置可以包括在一组多个设备中的设备,每一个设备向调节器系统发送分配请求;并且从调节器系统接收供特定实体在服务于请求时使用的分配包括:接收使用分配请求确定的分配,分配请求由调节器系统为特定实体从一组多个设备中的每一个设备接收。发送给一组多个设备中的每一个设备的,对于特定实体的分配请求中的每一个的总和等于对特定实体的预算。

在一些实现中,方法可以包括接收更新的分配。重新确定是否现在服务于请求的概率性的确定包括:使用更新的带宽分配、服务于请求所用的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求。

在一些实现中,概率性地确定是否现在服务于请求包括:基于分配、服务于请求所用的大小、用于数据处理装置上的特定实体的令牌的累计数量、用于数据处理装置的最大接受延时以及平均调节器延时,概率性地确定是否现在服务于请求。概率性地确定是否现在服务于请求包括:使用分配、服务于请求所用的大小和用于数据处理装置上的特定实体的令牌的累计数量来确定服务于请求的概率,生成随机数,将随机数与概率进行比较以确定随机数是否大于概率,以及响应于确定随机数不大于概率,确定现在服务于请求,或者响应于确定随机数大于概率,确定现在不服务于请求。

在一些实现中,该方法可以包括:对于与多个请求不同的处理数据的多个请求的第二集合中的每一个请求,第二集合包括至少一个或多个处理数据的请求:确定用于数据处理装置上的特定实体的令牌的累计数量是否小于服务于请求所用的大小;以及响应于确定用于数据处理装置上的特定实体的令牌的累计数量不小于服务于请求所用的大小,服务于请求。响应于确定用于数据处理装置上的特定实体的令牌的累计数量小于服务于请求所用的大小,发生向调节器系统提供分配请求,分配请求指示特定实体和服务于请求所用的大小。重新确定是否现在服务于请求的概率性的确定包括:确定用于数据处理装置上的特定实体的令牌的累计数量是否小于服务于请求所用的大小;响应于确定用于数据处理装置上的特定实体的令牌的累计数量不小于服务于请求所用的大小,服务于请求,或响应于确定用于数据处理装置上的特定实体的令牌的累计数量小于服务于请求所用的大小,执行是否现在服务于请求的概率性的确定。

在一些实现中,该方法可以包括:确定令牌的累计数量是否为负值;向调节器系统提供指示特定实体和令牌的累计数量的更新分配请求;从调节器系统接收更新的分配;以及按照更新的分配的数量增加令牌的累计数量。服务于请求可以包括:从令牌的累计数量中减去服务于请求所用的大小。服务于请求可以包括:确定负债值,负债值指示令牌的累计数量与服务于请求所用的大小之间的差值;确定负债值是否超过负债上限,和响应于确定负债值不超过负债上限而服务于请求。数据处理装置包括在一组多个设备中的设备,一组多个设备中的每一个设备向调节器系统发送分配请求。从调节器系统接收供特定实体在服务于请求时使用的分配可以包括:接收使用分配请求确定的分配,分配请求由调节器系统为特定实体从一组多个设备中的每一个设备接收。发送给一组多个设备中的每一个设备的,对于特定实体的分配请求中的每一个的总和等于对特定实体的预算。该方法可以包括接收更新的分配。重新确定是否现在服务于请求的概率性的确定包括:使用更新的分配、服务于请求所用的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求。

在一些实现中,确定服务于请求所用的大小包括:确定在服务于请求时要处理的数据的大小。向调节器系统提供指示特定实体和服务于请求所用的大小的分配请求包括:向调节器系统提供带宽分配请求,带宽分配请求指示特定实体和在服务于请求时要处理的数据的大小;从调节器系统接收供特定实体在服务于请求时使用的分配包括:从调节器系统接收供特定实体在服务于请求时使用的带宽分配;和基于分配、服务于请求所用的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求包括:基于带宽分配、要处理的数据的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求。确定服务于请求所用的大小包括:确定由包括数据处理装置的端点处理的对于特定实体的请求的数量;向调节器系统提供指示特定实体和服务于请求所用的大小的分配请求包括:向调节器系统提供分配请求,分配请求指示特定实体和要被端点处理的对于特定实体的请求的数量。基于分配、服务于请求所用的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求包括:基于分配、对于要被服务的请求的一个值以及用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求。

本说明书中描述的主题可以在特定实施例中实现,并且可以带来一个或多个以下优点。在一些实现中,相比其他系统,下面描述的系统和方法做出更快的接受决定,做出全局接受决定,最小化在利用的预算的期间,确保客户在较长时间段内平均不超过带宽预算,或这些中的两个或更多的组合。例如,全局调节器允许数据存储系统为特定用户或客户端设备确定对于每一个端点的带宽分配。在一些示例中,当端点允许特定用户或客户端设备陷入负债时,端点尽量减少预算使用不足的时间,并允许对可能不会被另外服务的请求的服务。在一些示例中,端点可以具有最大负债阈值,以确保客户端在较长时间段内平均不超过带宽预算。在一些实现中,当用于特定用户或客户端设备的令牌桶具有负值时,下面描述的系统和方法向调节器系统报告需求,以确保令牌桶将获得非零重填率,并且端点将会最终有足够的带宽来弥补特定用户或客户端设备的负债。

在本说明书中描述的主题的一种或多种实现的细节在下面的描述和附图中阐述。主题的其他特征、方面和优点将从描述、附图和权利要求中变得清晰。

附图说明

图1是数据存储系统服务于来自客户端设备的请求的环境的示例。

图2是用于概率性地判断是否服务于请求的过程的流程图。

图3是用于判断是否服务于请求的过程的流程图。

图4是增加令牌数量的过程的流程图。

图5是可以结合本文档中描述的计算机实现的方法使用的计算系统的框图。

在各个附图中类似的参考数字和标记指示类似的元件。

具体实施方式

示例数据存储系统

图1是环境100的示例,在该环境中数据存储系统102服务来自客户端设备a-b104a-b的请求。环境100包括多个客户端设备a-b104a-b,每一个客户端设备a-b104a-b在时间段ta期间向数据存储系统102中的一个或多个端点a-b106a-b发送数据请求。例如,客户端设备b104b可以请求两个不同的数据集合,来自端点a106a的第一数据集合和来自端点b106b的第二数据集合。

在时间tb期间,端点a-b106a-b向包括在数据存储系统102中的全局调节器108报告端点a-b106a-b当前观察到的对特定实体的需求,例如,特定实体为每一个当前活跃的实体。例如,在时间tb期间,端点a-b106a-b中的每一个为从客户端设备a-b104a-b接收的未解决的客户端数据请求发送带宽请求。未解决的客户端数据请求包括,在时间段ta期间接收的数据请求,例如,时间段ta紧接时间段tb之前的时间段。在一些示例中,未解决的客户端数据请求可以包括在时间段ta之前接收到的等待被服务的请求。

在下面的示例中,我们可以指每一个客户端设备的带宽分配,但带宽分配可以是每一个实体的,例如,每一个用户的。在这些示例中,带宽分配涉及指定网络带宽的值,例如以mb/s为单位。例如,当带宽分配是每一个实体的时,组织可具有多个客户端设备,每一个客户端设备从数据存储系统102请求数据。如下面更详细描述的,数据存储系统102具有对于组织的最大带宽,并将最大带宽应用于从该组织的客户端设备接收的请求。

全局调节器108在时间段tc期间向端点a-b106a-b发送带宽分配。例如,如下面更详细描述的,全局调节器108可以确定用于每一个实体带宽分配,例如,为每一个客户端设备a-b104a-b和为每一个端点a-b106a-b。全局调节器108可以将客户端设备a104a的最大可用带宽分配给端点a106a,因为端点a106a是从客户端设备a104a接收数据请求并且对客户端设备a104a具有未解决请求的唯一端点。最大可用带宽可基于客户端设备a104a的规则,例如,客户端设备a104a预定的最大带宽,或数据存储系统102的规则,例如,可用于从数据存储系统102请求数据的任何客户端设备的最大带宽来确定。

全局调节器108将客户端设备b104b的带宽预算分配给端点a-b106a-b中的每一个。例如,当客户端设备b104b的最大带宽是3mb/s时,全局调节器108可以向端点a-b106a-b中的每一个分配1.5mb/s的带宽预算。

全局调节器108为特定客户端设备或用户以及端点a-b106a-b中的每一个发送的所有分配的总和等于特定客户端设备或用户的带宽预算,例如最大带宽预算。全局调节器108可以确定用于特定客户端设备或用户的端点a-b106a-b中的每一个的分配。

全局调节器108在时间段tc期间将带宽预算提供给端点a-b106a-b。例如,当对特定客户端设备的带宽分配在端点之间变化时,全局调节器108向端点a106a发送消息,该消息包括对客户端设备a-b104a-b中的每一个的带宽分配,尤其是端点a106a的带宽分配,并向端点b106b发送第二消息,第二消息包括对客户端设备b104b的带宽分配。

在时间段td期间,端点a-b106a-b中的每一个概率性地确定是否服务针对各个端点的未解决的未决请求。例如,端点b106b可以确定是否服务于时间段ta期间从客户端设备b104b接收到的请求以及在时间段ta之前接收到的尚未处理的任何其他请求。在一些示例中,端点a-b106a-b中的每一个可以使用不同的方法来概率性地确定是否服务于请求。

在一些示例中,全局调节器108可以在端点之间均等地为特定的客户端设备分发(distribute)带宽预算,或者按照端点a-b106a-b报告的需求按比例为特定的客户端设备分发带宽预算。例如,当全局调节器108从三个需求分别为1mb、2mb和3mb的端点接收带宽配给(allocation)请求,并且相应客户端设备的带宽预算为3mb/s时,全局调节器108将分别向端点发送0.5mb/s,1mb/s和1.5mb/s的带宽分配。这些分配具有不超过总带宽预算的效果。平均在两秒内提供分配的全局调节器具有每一个可以在平均四秒内服务每一个请求的技术效果。

在一些实现中,全局调节器108可以通过确定为每一个服务的端点应当分配的全部需求,例如,对客户端设备所请求的数据而开始,然后继续降低最高分配,直到所有分配的总和等于客户端设备的预算。使用用上面的示例,全局调节器108将向三个端点中的每一个发送1mb/s的分配。

在一些实现中,全局调节器可以具有对于一个或多个端点a-b106a-b的最小需求水平。例如,每一个端点可能具有相同的最低需求水平或不同的最低需求水平。在一些示例中,数据存储系统102中的每一个端点可以具有1mb/s的最小需求。在这些示例中,全局调节器108可以为每一个端点分配最小需求,然后确定实体的最大带宽预算与累积的最小需求之间是否存在任何差异。例如,当每一个端点的最低需求为1mb/s时,该实体的带宽预算为3mb/s,并且全局调节器108接收该实体的三个带宽请求,全局调节器108为每一个端点分配1mb/s的带宽分配。

当实体的带宽预算为3.5mb/s,并且带宽分配请求为1mb、2mb和3mb时,则全局调节器108将最小需求分配给每一个端点,例如,1mb/s,然后将剩余带宽,例如0.5mb/s分配给端点。全局调节器108确定第二和第三端点分别具有1mb和2mb的剩余需求,并将剩余的0.5mb/s带宽分配给这些端点。例如,全局调节器可以为第二端点和第三端点中的每一个分配0.25mb/s的额外带宽,最终带宽分配分别为1mb/s,1.25mb/s和1.25mb/s。在一些示例中,全局调节器108可以向第二端点分配0.167mb/s,向第三端点分配0.333mb/s,最终带宽分配分别为1mb/s,1.167mb/s和1.333mb/s。

端点a-b106a-b中的每一个为端点已经从其接收到请求的每一个客户端设备维护令牌桶,例如,为每个活跃的客户端设备或用户维护令牌桶。当端点a-b106a-b中的一个端点从全局调节器108接收到用于特定客户端设备的带宽分配时,端点将用于特定客户端设备的带宽分配用作用于客户端设备的令牌桶的填充率,例如,直到端点从全局调节器108接收到用于特定客户端设备的另一带宽分配为止。填充率是端点更新用于客户端设备的令牌桶的值的速率。

当端点接收到来自客户端设备的请求时,端点确定在服务该请求时要处理的字节数。例如,如果请求是读取请求,则端点确定该端点响应于该请求而将提供给客户端设备的字节数。端点将服务于请求时要处理的字节数与用于客户端设备的令牌桶中的令牌数量进行比较。当端点确定服务于请求时要处理的字节数小于或等于用于客户端设备的令牌桶中的令牌数量时,端点可以接受该请求,例如,确定服务于该请求,并在服务于来自用于客户端设备的令牌桶中的令牌的请求时,减去要处理的字节数。

当端点确定服务于请求时要处理的字节数大于用于客户端设备的令牌桶中的令牌数量时,端点概率性地确定是否接受请求,例如是否立即服务于请求。例如,端点可以概率性地确定是否接受使用对客户端设备的当前带宽分配、用于客户端设备的令牌桶中的令牌数量、以及服务该请求所需的令牌数量(例如,在服务请求时要处理的字节数)的客户端设备的请求。这具有技术效果,即,超过带宽预算并且可能不被传统调节技术服务的请求仍然可以被服务。

如果端点概率性地确定接受请求,例如开始服务于该请求,则服务对客户端设备的请求时,该端点从用于客户端设备的令牌桶中减去要处理的字节数,将用于客户端设备的令牌桶带入负状态,例如负债状态。令牌桶的值可以是大小的度量,例如比特、字节、兆字节、千兆字节、兆兆字节或其他数据的适当的数量。

如果端点概率性地确定没有导致请求的接受,端点可以不拒绝该请求。端点将请求放在队列中,并根据时间表重复该概率性的确定,例如,每预定时间间隔一次。例如,端点可以为客户端设备的请求每秒执行一次概率性的确定,直到该请求被接受或者用于该请求的接受截止期限过去为止,例如,直到预定时间段已经过去。

当请求的接受截止时间过去时,端点拒绝该请求。端点可以向客户端设备发送消息,该消息指示该请求将不被服务。

当端点重复概率性的确定时,端点可以使用不同的带宽分配、令牌数量或者使用两者。例如,端点在每次按照带宽分配量的数量增加令牌桶中的令牌数量来执行概率性的确定之后,更新用于特定客户端设备或用户的令牌桶中的令牌数量。

端点可以从全局调节器108接收用于客户端设备的更新的带宽分配。例如,在执行概率性的确定之后,端点可以响应于接收到对客户端设备的请求的端点中的一个、完成对客户端设备的请求的服务并且具有用于客户端设备的非负令牌桶的端点中的一个、或者响应于两者,从全局调节器接收更新的带宽分配。

在一些示例中,端点a106a可以在第一时间段期间从客户端设备b104b接收请求并且概率性地确定不服务该请求。端点b106b在第一时间段之后的第二时间段期间从客户端设备b104b接收请求,并向全局调节器108发送带宽分配请求。全局调节器108确定对客户端设b104b的请求在端点a106a上仍然未解决,并且使用从端点a-b106a-b中的每一个接收的带宽分配请求来确定端点a106a和端点b106b两者的带宽分配。端点a-b106a-b从全局调节器108接收带宽分配,并使用该分配以概率性地确定是否服务于来自客户端设备b104b的相应请求。例如,端点a106a使用新接收的带宽分配来概率性地确定是否接受对客户端设备b104b的请求。

端点可以接收更新的带宽分配,而不管端点确定是否服务于请求。例如,端点可以在确定服务于对客户端设备的请求之后接收更新的带宽分配。端点可以在确定不立即服务于对客户端设备的请求之后接收更新的带宽分配。

在一些实现中,端点可以使用下面的方程(1)作为执行概率性的确定的处理的一部分。例如,端点可以使用方程(1)来确定接受概率admprob,该接受概率是对客户端设备的请求被接受的概率。当admprob大于或等于1时,端点接受请求,例如,服务于请求。当admprob在1和0之间时,端点继续执行是否接受请求的概率性的确定。admprob可以是任何适当的值,例如整数、负值、或这些中的两个或更多个的组合,admprob的为整数时的绝对值大于对应的请求不被自动接受的值。

admprob=(-ln(eps)/(maxadmlat-avgthrottlerlat))*(asgn/debt)(1)

端点可以将eps确定为端点同时接收n个请求并且所有请求均被拒绝的最大概率,例如,n个请求来自不同客户端设备。例如,端点可以确定eps的值n等于一千。在一些示例中,n的值是端点可以接收的对特定客户端设备的请求的最大数量。在一些实现中,端点可以将eps定义为小于或等于0.001的值。管理员可以定义eps的值。

端点将maxadmlat确定为最大接受延时。maxadmlat可以是从客户端设备收到请求和端点响应该请求,例如,指示该请求已经或未被接受之间的最长时间。例如,当每次确定的结果是该请求不会被接受时,端点可以继续执行概率性的确定,直到来自客户端设备的相应请求的接收的最大接受延时到期为止,此时,端点将向客户端设备发送消息,指示该请求未被接受,并且该端点将不会服务于该请求。

端点可以将avgthrottlerlat确定为从全局调节器108取得带宽分配的平均延时。端点可以将asgn确定为用于客户端的当前带宽分配,即端点正在执行是否接受请求的概率性的确定的当前带宽分配。端点可以将dabt确定为当前负债(debt),例如,如果请求被接受,则将创建的用于客户端设备的令牌桶中负数的令牌。由端点使用上述值avgthrottlerlat、asgn和debt具有如下技术效果:请求被服务的概率随着当前负债的增加而下降,从而在较长的时间段客户端设备平均不超过带宽预算。此外,由于该方程的评估可以很快,所以对请求的接受的决定可以很快,例如,端点可以不用等待来自全局调节器的决定,而使用该方程做出决定。

例如,随后端点b106b可以从具有2mb/s的带宽上限的客户端设备b104b接收读取请求。读取请求是二十个读取请求中的一个,该二十个读取请求是在如相同的一秒时间间隔的特定时间段期间由数据存储系统102中的不同端点接收的,每一个读取请求1mb数据。包括端点b106b在内的端点中的每一个向全局调节器108发送对客户端设备b104b的带宽请求,指示1mb的需求。全局调节器108确定为客户端设备b104b确定2mb/s的带宽上限,并为端点中的每一个确定0.1mb/s的带宽分配。全局调节器108将带宽分配发送到包括端点b106b的端点中的每一个。假设avgthrottlerlat为2秒,则端点中的每一个将在向全局调节器108发送带宽分配请求的两秒钟内接收带宽分配。

端点b106b确定客户端设备b104b在端点b106b上不具有任何当前负债,因此在接受请求之后的负债将是用于该请求的被处理的数据量,例如,debt等于1mb,maxadmlat是四秒。端点b106b使用等于0.001的eps来确定admprob=-1n(0.001)/2s*0.1mb/s/1mb=0.35。端点b106b使用admprob=0.35来概率性地确定是否接受该请求。例如,端点b106b生成0与1之间的随机数并将生成的随机数,并将生成的随机数与admprob进行比较。如果生成的随机数满足admprob,例如,小于或等于admprob,则端点b106b确定接受该请求,例如服务于该请求。如果生成的随机数不满足admprob,例如大于admprob,则端点b106b确定目前不接受该请求。

响应于不接受请求的确定,端点b106b确定自从接收请求以来

maxadmlat时间段是否已经过去。在此示例中,当实际调节器延时为2秒且每次确定需要一秒时,已经过去了三秒且maxadmlat为四秒。

当端点b106b确定maxadmlat未过去时,端点b106b再次概率性地确定是否接受该请求。例如,端点b106b通过带宽分配将用于客户端设备b104b的令牌数量增加,例如,为用于客户端设备b104b的令牌桶中的总令牌值0.1mb增加0.1。如果请求被接受,端点b106b确定将会累计的负债的数量,例如,0.1mb的令牌减去需要服务于请求的1mb导致0.9mb的debt值。

端点b106b使用方程(1)来确定admprob=-1n(0.001)/2s*0.1mb/s/0.9mb=0.39,并且生成另一个随机数。端点b106b将该另一个随机数与更新的值admprob=0.39进行比较以概率性地确定是否接受该请求。如果端点b106b概率性地确定接受该请求,则端点b106b响应于该请求来确定数据,例如服务该请求,并且将该数据提供给客户端设备b104b或者将该数据存储在数据存储器中。如果端点b106b概率性地确定不接受该请求,则端点b106b向客户端设备b104b发送消息,以指示该请求将不被服务,例如,由于最大接受延时已到期。

客户端设备a-b104a-b可以包括个人计算机、移动通信设备以及可以通过网络发送和接收数据的其他设备。诸如局域网(lan)、广域网(wan)、因特网或这些的组合的网络将客户端设备a-b104a-b和端点a-b106a-b连接。在一些实现中,网络将端点a-b106a-b和全局调节器108连接。

我们在前文中提到单个端点a-b106a-b,但是环境100的实现可以使用单端点计算机或者彼此结合执行的多端点计算机,包括,例如,被部署为云计算服务的远程计算机集合。我们在前文中涉及提到单个全局调节器108,但是环境100的实现可以使用单个全局调节器计算机或者彼此结合执行的多个全局调节器计算机,例如,包括被部署为云计算服务的远程计算机集合。

示例处理流程

图2是用于概率性地确定是否服务于请求的过程200的流程图。例如,过程200可以被来自环境100的端点a-b106a-b中的一个或两个使用。

端点从用于特定实体的客户端设备接收处理数据的请求(202)。例如,处理数据的请求可以是从数据存储器读取数据或者向数据存储器写入数据的请求。例如,端点从客户端设备接收读取或写入请求。特定实体可以是客户端设备或客户端设备的用户。在一些示例中,特定实体可以是拥有客户端设备的实体,例如组织。

端点确定在服务于请求时要处理的数据的大小(204),这意味着为服务于请求确定大小。例如,端点确定将从数据存储器读取并提供给客户端设备、或从客户端设备接收并将被写入数据存储器的字节或位的数量。

在一些实现中,端点确定服务于请求所用的大小。该大小可以是每秒资源单位,例如,mb/s或每秒请求数。服务于请求的大小可以是要处理的数据的大小、为特定实体接收的请求的数量、在如1秒的一段时间内为特定实体接收的请求的数量、通过端点为特定实体接收的请求数量、或服务于请求所用的其他合适的值。端点使用服务于请求所用的大小来概率性地确定是否服务于请求。

端点向调节器系统提供指示特定实体和在服务请求时要处理的数据的大小的带宽分配请求(206)。端点可以包括指示客户端设备作为特定实体的数据。在一些示例中,端点包括指示客户端设备的用户作为特定实体的数据。

端点从调节器系统接收用于特定实体在服务于请求时使用的带宽分配(208)。例如,调节器系统从多个不同的端点接收带宽分配请求。调节器系统使用带宽分配请求来确定哪些请求是对特定实体的。调节器系统确定配给特定实体的最大带宽。调节器系统使用分配配给特定实体的最大带宽和对特定实体的带宽分配请求,未端点中的每一个确定带宽分配,调节器系统从这些端点接收对特定实体的带宽分配请求。调节器系统将对特定实体的带宽分配提供给每一个端点,例如相同的带宽分配或不同的带宽分配。

带宽分配可以是任何适当类型的值。例如,带宽分配可以是每秒字节数、每秒比特数、每秒兆字节或每秒千兆字节。

端点基于带宽分配、要处理的数据的大小以及用于特定实体的令牌累计数量,来概率性地确定指示是否现在服务于该请求的值(210)。例如,端点确定一个布尔值,该值指示端点是否应该服务于请求。令牌的累计数量可能是以任何适当的单位表示的值。例如,令牌的累计数量可以是以位、字节、兆字节、千兆字节、兆兆字节或其他适当的数据为单位的值。

在一些示例中,端点生成表示端点应该服务于请求的概率的第一值。例如,端点使用随机数发生器随机产生第二值,并且将第一值与第二值进行比较,以概率性地确定端点是否应该服务于请求。在这些示例中,端点可以生成布尔值,该值是第一值和第二值的比较结果,并使用布尔值作为上述值。在一些实现中,端点可以使用第二值作为上述值。

端点确定该值是否指示请求应该被服务(212)。例如,端点确定布尔值是真还是假。在一些示例中,端点确定第二值是否满足,例如小于或等于第一值。

响应于确定该值指示应该服务于请求,该端点服务于该请求(214)。例如,端点从数据存储器中检索所请求的数据,并且例如,响应于读取请求,将检索到的数据提供给客户端设备。在一些示例中,例如,响应于写入请求的接收,端点将接收到的数据存储在数据存储器中。

响应于确定该值指示该请求不应被服务,端点确定预定时间段是否已经过去(216)。例如,端点确定最大接受延时的时间段是否已经过去。

响应于确定预定时间段已经过去,端点向客户端设备发送消息,指示请求将不被服务(218)。例如,端点向识别该请求的客户端设备发送消息,并指示此时不会服务于该请求。端点可以稍后从客户端设备接收请求执行相同动作的另一请求,例如,同样的数据从数据存储器被读取并被提供给客户端设备,或同样的数据被写入数据存储器。

当端点稍后在概率性地确定不服务于请求之后从客户端设备接收到另一请求时,该端点可能已经在用于特定实体的令牌桶中累积了令牌,例如,并且具有较高的概率服务于其他请求。例如,如果端点在用于特定实体的令牌桶中累积了0.2mb,并且确定不服务来自客户端设备的请求,则该端点在令牌桶中保持0.2mb,并且在随后的是否服务来自客户端设备的其他请求的概率性确定期间,例如,当端点没有从客户端设备接收任何对特定实体或两者的中间请求的时候,使用这些令牌。然后端点具有较高的服务于对特定实体的其他请求的概率。

响应于确定预定时间段尚未过去,端点将令牌的累计数量增加,增加的值使用带宽分配量来确定(220)。例如,端点可以通过将带宽分配量乘以预定时间段的长度来确定该值。端点继续基于带宽分配、要处理的数据的大小以及用于特定实体的更新的令牌数量,概率性地确定指示是否现在服务于请求的第二值。端点可以使用例如从调节器系统接收到的更新的带宽分配来确定第二值。

上述过程200中的步骤的顺序仅是说明性的,并且概率性地确定是否服务于请求可以按不同的顺序执行。例如,在概率性地确定指示是否现在服务于请求的值之前,端点可以增加用于特定实体的令牌的累计数量。

在一些实现中,过程200可以包括附加的步骤、更少的步骤、或者步骤中的一些可以被分成多个步骤。例如,端点可以在不执行步骤216和218的情况下执行过程200,例如没有最大接受延时。在这些示例中,端点继续执行是否服务于请求的概率性的确定,直到请求被服务、直到从客户端设备接收到指示请求不应该被服务的消息或直到两者为止。在一些实现中,端点可以执行在下面更详细地描述的作为过程200的一部分的过程300或过程400。

在一些实现中,端点可以从调节器系统接收更新的带宽分配。例如,端点可以接收第一带宽分配,使用导致端点不服务该请求的第一带宽分配来执行第一概率性的确定,然后从调节器系统接收第二带宽分配。例如,端点可以使用第二带宽分配、要处理的数据的大小以及用于该特定实体的令牌的累计数量来执行是否服务该请求的第二概率性的确定。

图3是用于确定是否服务于请求的过程300的流程图。例如,过程300可以被来自环境100的端点a-b106a-b中的一个或两个使用。

端点确定用于特定实体的令牌的累计数量是否小于为了请求要处理的数据的大小(302)。例如,端点从用于特定实体的客户端设备接收请求。端点确定服务于请求要被读取或写入的数据大小。端点将要读取或写入的数据的大小与用于特定实体的令牌桶中令牌的累计数量进行比较。

响应于确定用于特定实体的令牌的累计数量不小于数据的大小,端点服务于请求(304)。例如,端点检索为读取请求所请求的数据并将数据提供给客户端设备。在一些示例中,端点将从客户端设备接收的数据写入数据存储器中。由于令牌的累计数量大于或等于为了请求要处理的数据的大小,因此端点服务于请求,而无需从调节器系统请求带宽分配。

响应于确定用于特定实体的令牌的累计数量小于数据的大小,端点向调节器系统提供带宽分配请求(306)。例如,端点确定该请求不应该被立即服务,并且要概率性地确定是否服务于请求。

在一些实现中,过程300可以包括附加的步骤、更少的步骤、或者步骤中的一些可以被分成多个步骤。例如,端点可以将过程300执行为上述过程200中的步骤206的一部分。

图4是用于增加令牌数量的过程400的流程图。例如,过程400可以被来自环境100的端点a-b106a-b中的一个或两个使用。

端点确定用于特定实体的令牌的累计数量是否为负值(402)。例如,在服务于对特定实体,例如,对特定客户端设备或特定用户的请求之后,端点确定用于特定实体的令牌桶中的令牌的累计数量是否为负。

端点向调节器系统提供指示特定实体和令牌的累计数量的带宽分配请求(404)。例如,端点向调节器系统提供特定实体的标识和令牌的负的数量。端点可以向调节器系统提供带宽分配请求,不论端点是否具有对特定实体的未解决请求。

端点从调节器系统接收用于特定实体的带宽分配(406)。例如,调节器系统使用对特定实体的带宽分配请求和来自端点的从其他端点接收的对特定实体的其他带宽分配请求,来确定用于特定实体的带宽分配。调节器系统可以为端点中的每一个发送用于特定实体的不同带宽分配或相同带宽分配。

端点按照带宽分配的数量,将令牌的累计数量增加(408)。例如,端点按照从调节器系统接收的带宽分配中指示的量,增加用于特定实体的令牌桶中的令牌的累计数量。端点可以每一个时间间隔,例如,每一秒的时间间隔增加用于特定实体的令牌桶中的令牌的累计数量一次,直到接收到更新的用于特定实体的带宽分配、令牌的累计数量不再为负或直到这两者为止。如果端点接收到针对特定实体的更新的带宽分配,则端点使用更新的带宽分配来执行步骤408。

在一些实现中,过程400可以包括附加的步骤、更少的步骤、或者步骤中的一些可以被分成多个步骤。例如,端点可以在执行过程200之后执行过程400,或者可以单独执行过程400。

可选的实现细节

在一些实现中,全局调节器周期性地与端点进行通信,例如每秒一次。全球调节器可以基于最大努力与终端进行通信。

在一些实现中,如果在服务于对客户端设备的来自用于客户端设备的令牌桶的请求时,减去要处理的字节数后,客户端设备的负债数量将会超过负债的阈值数量,则端点确定不服务于请求。例如,端点不执行概率性的确定并向客户端设备发送指示该请求将不被服务的消息。在这些示例中,如果在执行概率性的确定之前请求被服务,端点可以确定累计的负债数量,并且响应于确定负债数量不满足负债的阈值数量,例如,大于或等于负债的阈值数量,而执行概率性的确定。

在一些示例中,负债的阈值数量,例如,最大负债阈值可以是负的负债值。数据存储系统可以选择最大负债阈值,以为从数据存储系统请求数据的实体提供平滑的调节体验。例如,阈值数量可以是-1mb。当端点确定将通过服务于请求被累计的负债数量低于阈值数量时,端点将不服务于请求。

在一些实现中,端点可以从特定客户端设备、为特定实体或两者接收多个请求。在这些实现中,端点将对特定客户端设备或特定实体的需求确定为要服务于请求中的每一个时要处理的数据大小的总和。

在一些实现中,端点可以将令牌桶重置为零。例如,在端点接收对特定实体的请求、服务对特定实体的请求、或者向特定实体发送如表示请求不会被服务的消息的预定时间段之后,端点可以将用于特定实体的令牌桶重置为零。当桶具有正的数目的令牌或负的数目的令牌时,端点可以重置令牌桶。在一些示例中,端点可以重置令牌桶以减少内存使用,例如维持令牌桶所需的内存。

在一些实现中,数据存储系统可以以每秒使用的另一资源单位来确定是否服务于请求。例如,数据存储系统可以以每秒使用的请求来概率性地确定是否服务对特定实体的请求。在该示例中,每一个端点确定例如在特定时间段期间或未被服务的从每一个实体接收的请求的数量,并且向全局调节器发送指示请求的数量的分配请求。在这个实现中,分配涉及指定每秒请求数的值,并且涉及在一定数量的请求中被测量的用于令牌桶的值。对特定实体全局调节器确定接收对特定实体的请求的端点中的每一个的请求和分配的数量。具有对于特定实体的请求的端点从全局调节器接收分配,并将asgn用作从全局调节器接受的分配和将debt用作在请求被接受时例如以请求的数量创建的负债的数量,使用方程(1)来概率性地确定是否服务于对于特定端点的特定请求,对于特定实体的请求在特定时间段期间被接收或未被服务过。

例如,端点可以接收对特定实体的两个请求,例如,在相同的时间段期间接收两个请求,或者在第一时间段期间接收未被服务的第一请求并在第一时间段之后的第二时间段期间接收第二请求。端点向全局调节器发送分配请求,指示端点有两个请求。

当从其他端点接收到18个请求时,全局调节器确定对特定实体的请求的最大数量,例如每秒一个请求,以及对特定实体接收的请求的总数,例如20个。全局调速器确定用于端点中的每一个的分配。例如,全局调节器可以为每一个请求确定1/20=0.05个请求每秒(qps)的分配,并且由于端点接收到两个请求,用于端点的分配应该是每秒0.1个请求。全局调节器为接收到对特定实体的请求的其他端点确定其他分配。

端点从全局调节器接收每秒0.1个请求的分配,并且为两个请求中的每一个请求概率性地确定是否接受该请求。由于请求中的每一个的大小都是1,例如是一个请求,所以当请求被服务时将创建的负债的总量最初对于两个请求都是相同的,直到请求中的一个被服务为止。例如,如果用于特定实体的端点的令牌桶为零,那么这两个请求的debt值将为1。

在该示例中,端点可以对第一请求确定admprob——请求中的每一个被服务的接受概率,然后使用admprob来概率性地确定是否服务于第一请求。如果端点确定第一请求应该被服务,则端点接受请求并更新用于特定实体的令牌桶。然后端点可以为第二请求确定更新的debt值。端点可以确定更新的debt值是否超过负债上限,如果是,则确定第二请求不会被接受。如果更新的debt值不超过负债上限,则端点可以确定admprob的更新值并概率性地确定是否服务第二请求。

当端点概率性地确定不应当服务第一请求时,在概率性地确定是否服务第二请求时,端点可以使用为第一请求确定的admprob的值。例如,服务于第二请求将创建的负债总数量与服务于第一请求将创建的负债总数量相同,并且对特定实体的分配相同。

其他实现细节

本说明书中描述的主题和功能操作的实施例可以以数字电子电路、有形体现(tangibly-embodied)的计算机软件或固件、计算机硬件、包括本说明书中公开的结构及其结构等同物,或在它们中的一个或多个的组合实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即编码在有形(tangible)非暂时性程序载体上的计算机程序指令的一个或多个模块,用于由数据处理装置运行或控制数据处理装置的操作。可替换地或附加地,可以将程序指令编码在人工生成的传播信号上,例如机器生成的电信号、光信号或电磁信号,该信号被生成以对信息进行编码以便传输给合适的接收装置,供数据处理装置运行。计算机存储介质可以是机器可读存储设备、机器可读存储基板(substrate),随机或串行存取存储设备,或它们中的一个或多个的组合。

术语“数据处理装置”是指数据处理硬件并且包括用于处理数据的各种装置、设备和机器,例如包括可编程处理器、计算机、或多个处理器或计算机。该装置还可以是或者还包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置可以可选地包括为计算机程序创建运行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们的一项或多项的组合的代码。

可以被称为或被描述为程序、软件、软件应用程序、模块、软件模块、脚本或代码的计算机程序,可以以任何形式的编程语言来编写,包括编译或解释性语言或声明性或过程性语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或其他适用于计算环境的单元。计算机程序可以但不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中,例如存储在标记语言(markuplanguage)文档中的一个或多个脚本,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件中,例如,存储一个或多个模块、子程序或部分代码的文件。计算机程序可以被部署为在一台计算机上运行,或在位于一个站点或跨多个站点分布并通过通信网络互连的多台计算机上运行。

本说明书中描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程计算机执行,以通过在输入数据上进行操作并生成输出来执行功能。处理和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以被实现为专用逻辑电路,例如,专用逻辑电路为fpga(现场可编程门阵列)或asic(专用集成电路)。

举例来说,适用于计算机程序的运行的计算机包括,通用微处理器或专用微处理器或两者、或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或从两者接收指令和数据。计算机的基本元件是中央处理单元和一个或多个内存设备,中央处理单元用于执行或运行指令的,内存设备用于存储指令和数据。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,或者可操作地耦合至大容量存储设备以从大容量存储设备接收数据或向大容量存储设备传输数据,或从大容量存储设备接收数据和向大容量存储设备传输数据两者。但是,计算机不需要有这种设备。此外,可以将计算机嵌入另一个设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或如通用串行总线(usb)闪存驱动器的便携式存储设备,此处仅举几例。

适合于存储计算机程序指令和数据的计算机可读介质包括:所有形式的非易失性内存、介质和内存设备,例如内存设备包括半导体内存设备和闪存设备,例如半导体内存设备为eprom、eeprom;如内部硬盘或可移动盘的磁盘;磁光盘;和cd-rom和dvd-rom盘。处理器和内存可以由专用逻辑电路补充或并入其中。

为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有用于向用户显示信息的显示设备、键盘和指点设备(pointingdevice)的计算机上实现,显示设备例如crt(阴极射线管)或lcd(液晶显示器)监视器,指点设备例如鼠标或轨迹球,用户可以通过其向计算机提供输入。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式被接收,包括声学、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收到的请求,将网页发送到用户设备上的网络浏览器。

本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括如作为数据服务器的后端组件,或者包括如应用服务器的中间件组件,或者包括如具有图形用户界面或web浏览器的客户端计算机的前端组件,用户可通过该图形用户界面或web浏览器与本说明书中描述的主题的实现交互,或者包括一个或多个这样的后端、中间件或前端组件的任意组合。系统的组件可以通过任何形式或者数字数据通信的介质互连,例如,通过通信网络。通信网络的例子包括局域网(lan)和如因特网的广域网(wan)。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通过通过通信网络进行交互。客户端和服务器之间的关系是凭借运行在各个计算机上的计算机程序产生的,并且彼此具有客户端-服务器关系。在一些实施例中,服务器将如html页面的数据传送到用户设备,例如,目的在于向与用户设备交互的用户显示数据和从与用户设备交互的用户接收用户输入,用户设备充当客户端。可以在服务器处从用户设备接收在用户设备处生成的数据,例如用户交互的结果。

这样一种类型的计算机的示例在图5中示出,图5示出了通用计算机系统500的示意图。根据一种实现,系统500可以被用于与先前描述的任何计算机实现的方法相关的描述的操作。系统500包括处理器510、内存520、存储设备530和输入/输出设备540。组件510、520、530和540中的每一个使用系统总线550互连。处理器510能够处理用于在系统500内运行的指令。在一种实现中,处理器510是单线程处理器。在另一种实现中,处理器510是多线程处理器。处理器510能够处理存储在内存520中或存储设备530上的指令,以在输入/输出设备540上显示用于用户界面的图形信息。

内存520存储系统500内的信息。在一种实现中,内存520是计算机可读介质。在一种实现中,内存520是易失性内存单元。在另一种实现中,内存520是非易失性内存单元。

存储设备530能够为系统500提供大容量存储。在一种实现中,存储设备530是计算机可读介质。在各种不同的实现中,存储设备530可以是软盘设备、硬盘设备、光盘设备或磁带设备。

输入/输出设备540为系统500提供输入/输出操作。在一种实现中,输入/输出设备540包括键盘和/或指示设备。在另一实现中,输入/输出设备540包括用于显示图形用户界面的显示单元。

虽然本说明书包含许多具体的实现细节,但这些细节不应被解释为对要求的范围的限制,而应被解释为可能特定于特定实施例的特征的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可以组合在单个实施例中实现。相反地,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分开或以任何合适的子组合来实现。此外,尽管上文可能将特征描述为以某些组合起作用并且甚至最初如此要求,但是来自所要求保护的组合的一个或多个特征可以在一些情况下从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。

类似地,尽管在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示出的特定顺序或相继顺序执行这样的操作,或者所有示出的操作都要执行,来达到期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以被一起集成在单个软件产品中,或者打包成多个软件产品。

已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中列举的动作可以以不同的顺序执行并仍然达到期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或相继顺序来达到期望的结果。在一些情况下,多任务和并行处理可能是有利的。

进一步的实现在以下示例中被概括:

示例1:一种系统包括:数据处理装置;和非暂时性计算机可读存储介质,非暂时性计算机可读存储介质与数据处理装置进行数据通信,并存储可由数据处理装置运行的指令,并依据这种运行使得数据处理装置执行以下操作:对于多个处理数据的请求中的每一个:为特定实体从客户端设备接收处理数据的请求;以及确定服务于请求所用的大小;对于多个处理数据的请求的集合的中的每一个请求,集合包括至少两个或更多个处理数据的请求,多个请求的集合中的每一个请求对应于包括两个或更多个实体的实体的集合中的实体:向调节器系统提供指示特定实体和服务于请求所用的大小的分配请求;从调节器系统接收供特定实体在服务于请求时使用的分配;以及基于该分配、服务于请求所用的大小以及用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求;对于来自集合的请求的第一子集,响应于概率性地确定现在服务于请求:服务于请求;以及对于来自集合的请求的第二子集,响应于概率性地确定现在不服务于请求:确定预定时间段是否已经过去;响应于确定预定时间段已经过去,向客户端设备发送消息,指示请求将不会被服务;或者响应于确定预定时间段未过去:按照分配的数量增加令牌的累计数量;和重新确定是否现在服务于请求的概率性的确定。

示例2:根据示例1的系统,其中概率性地确定是否现在服务于请求包括:基于分配、服务于请求所用的大小、用于数据处理装置上的特定实体的令牌的累计数量、用于数据处理装置的最大接受延时以及平均调节器延时,概率性地确定是否现在服务于请求。

示例3:根据示例1或2的系统,其中,概率性地确定是否现在服务于请求包括:使用分配、服务于请求所用的大小和用于数据处理装置上的特定实体的令牌的累计数量,来确定服务于请求的概率;生成随机数;将随机数与概率进行比较以,确定随机数是否大于概率;以及响应于确定随机数不大于概率,确定现在服务于请求;或者响应于确定随机数大于概率,确定现在不服务于请求。

示例4:根据示例1至3中的一个的系统,该操作包括:对于与多个请求不同的处理数据的多个请求的第二集合中的每个请求,第二集合包括至少一个或多个处理数据的请求:确定用于数据处理装置上的特定实体的令牌的累计数量是否小于服务于请求所用的大小;以及响应于确定用于数据处理装置上的特定实体的令牌的累计数量不小于服务于请求所用的大小,服务于请求,其中,响应于确定用于数据处理装置上的特定实体的令牌的累计数量小于服务于请求所用的大小,发生向调节器系统提供指示特定实体和服务于请求所用的大小的分配请求。

示例5:根据示例4的系统,其中,重新确定是否现在服务于请求的概率性的确定包括:确定用于数据处理装置上的特定实体的令牌的累计数量是否小于服务于请求所用的大小;响应于确定用于数据处理装置上的特定实体的令牌的累计数量不小于服务于请求所用的大小,服务于请求,或响应于确定用于数据处理装置上的特定实体的令牌的累计数量小于服务于请求所用的大小,执行是否现在服务于请求的概率性的确定。

示例6:根据示例1至5中的一个的系统,操作包括:确定令牌的累计数量是否为负值;向调节器系统提供指示特定实体和令牌的累计数量的更新分配请求;从调节器系统接收更新的分配;以及按照更新的分配的数量增加令牌的累计数量。

示例7:根据示例1至6中的一个的系统,其中,服务于请求包括:从令牌的累计数量中减去服务于请求所用的大小。

示例8:根据示例1至7中的一个的系统,其中,服务于请求包括:确定负债值,负债值指示令牌的累计数量与服务于请求所用的大小之间的差值;确定负债值是否超过负债上限;和响应于确定负债值未超过负债上限而服务于请求。

示例9:根据示例1至8中的一个的系统,其中,数据处理装置包括云计算系统中的端点的一部分。

示例10:根据示例1至9中的一个的系统,包括调节器系统。

示例11:根据示例1至10中的一个的系统,其中:数据处理装置包括一组多个设备中的设备,一组多个设备中的每一个设备向调节器系统发送分配请求;并且从调节器系统接收供特定实体在服务于请求时使用的分配包括:接收使用分配请求确定的分配,分配请求由调节器系统为特定实体从一组多个设备中的每一个设备接收。

示例12:根据示例11的系统,其中,发送给一组多个设备中的每一个设备的,对于特定实体的分配请求中的每一个的总和等于对特定实体的预算。

示例13:根据示例1至12中的一个的系统,操作包括:接收更新的分配,其中重新确定是否现在服务于请求的概率性的确定包括:使用更新的分配、服务于请求所用的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求。

示例14:根据示例1至13中的一个的系统,其中,为特定实体接收处理数据的请求包括:接收读取请求或写入请求中的一个。

示例15:根据示例1至14中的一个的系统,其中,为特定实体接收处理数据的请求包括:为特定用户接收请求。

示例16:根据示例1至15中的一个的系统,其中,为特定实体接收处理用于数据的请求包括:为特定公司接收请求。

示例17:根据示例1至16中的一个的系统,其中,服务于请求包括:确定对请求的响应;和向客户端设备提供响应。

示例18:根据示例1至17中的一个的系统,其中,重新确定是否现在服务于请求的概率性的确定包括:重新确定是否现在服务于请求的概率性的确定,直到预定时间段过去为止。

示例19:根据示例1至18中的一个的系统,其中,多个请求的集合包括多个请求中的每一个请求每一个。

示例20:根据示例1至19中的一个的系统,其中:确定服务于请求所用的大小包括:确定在服务于请求时要处理的数据的大小;向调节器系统提供指示特定实体和服务于请求所用的大小的分配请求包括:向调节器系统提供带宽分配请求,带宽分配请求指示特定实体和在服务于请求时要处理的数据的大小;从调节器系统接收供特定实体在服务于请求时使用的分配包括:从调节器系统接收供特定实体在服务于请求时使用的带宽分配;和基于分配、服务于请求所用的大小以及用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求包括:基于带宽分配、要处理的数据的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求。

示例21:根据示例1至20中的一个的系统,其中:确定服务于请求所用的大小包括:确定由包括数据处理装置的端点所处理的对于特定实体的请求的数量;向调节器系统提供指示特定实体和服务于请求所用的大小的分配请求包括:向调节器系统提供分配请求,分配请求指示特定实体和要由端点处理的对于特定实体的请求的数量;以及基于分配、服务于请求所用的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求包括:基于分配、对于要被服务的请求的一个值以及用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求。

示例22:一种非暂时性计算机可读存储介质,该存储介质存储可由数据处理装置运行的指令,并且依据这种运行使得数据处理装置执行操作,该操作包括:对于多个处理数据的请求中的每一个:为特定实体从客户端设备接收处理数据的请求;以及确定在服务于请求时要处理的数据的大小;对于多个处理数据的请求的集合的中的每一个请求,集合包括至少两个或更多个处理数据的请求,多个请求的集合中的每一个请求对应实体集合中的实体,实体集合包括两个或更多个实体:向调节器系统提供指示特定实体和在服务于请求时要处理的数据的大小的带宽分配请求;从调节器系统接收供特定实体在服务于请求时使用的带宽分配;以及基于带宽分配、要处理的数据的大小和用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求;对于来自集合的请求的第一子集,响应于概率性地确定现在服务于请求:服务于请求;以及对于来自集合的请求的第二子集,响应于概率性地确定现在不服务于请求:确定预定时间段是否已经过去;响应于确定预定时间段已经过去,向客户端设备发送消息,指示请求将不会被服务;或者响应于确定预定时间段未过去:按照带宽分配的数量增加令牌的累计数量;和重新确定是否现在服务于请求的概率性的确定。

示例23:一种计算机实现的方法,包括:对于多个处理数据的请求中的每一个:由端点从客户端设备为特定实体接收处理数据的请求;以及为特定实体确定要由端点处理的请求的数量;对于多个处理数据的请求的集合的中的每一个请求,集合包括至少两个或更多个处理数据的请求,多个请求的集合中的每一个请求对应实体集合中的实体,实体集合包括两个或更多个实体:向调节器系统提供指示特定实体和由端点为特定实体处理的请求的数量的分配请求;从调节器系统接收供特定实体在服务于请求时使用的分配;以及基于分配、对于要被服务的请求值的一个值以及用于数据处理装置上的特定实体的令牌的累计数量,概率性地确定是否现在服务于请求;对于来自集合的请求的第一子集,响应于概率性地确定现在服务于请求:服务于请求;以及对于来自集合的请求的第二子集,响应于概率性地确定现在不服务于请求:确定预定时间段是否已经过去;响应于确定预定时间段已经过去,向客户端设备发送消息,指示请求将不会被服务;或者响应于确定预定时间段未过去:按照分配的数量增加令牌的累计数量;和重新确定是否现在服务于请求的概率性的确定。

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