请求负载控制方法、装置、存储介质和计算机设备与流程

文档序号:17772860发布日期:2019-05-28 19:38阅读:243来源:国知局
请求负载控制方法、装置、存储介质和计算机设备与流程

本申请涉及计算机技术领域,特别是涉及一种请求负载控制方法、装置、存储介质和计算机设备。



背景技术:

随着计算机技术的发展,出现了搜索引擎技术。搜索引擎技术通过将网络上的大量信息进行加工处理,建立搜索引擎本地的信息数据库和索引数据库,从而对用户提出的各种检索作出响应,提供用户所需的信息。然而,搜索引擎系统在提供检索服务时常常会因为检索请求过多而导致搜索引擎系统过载崩溃的情况。因此,对于高并发搜索引擎系统,过载保护是保护整体系统稳定、高效运行的关键。

目前,传统的过载保护方法通常是基于秒级qps(querypersecond,每秒请求数)监控进行请求削峰的快速拒绝方案。也就是在每秒周期内,当到达请求数达到qps上限后,对当前一秒内后续接收到的请求统一拒绝。

然而,基于传统的系统过载保护方法,当系统请求数很高时,常常会导致每秒后段时间内所有请求都被拒绝,使得整个搜索引擎系统只能在每秒周期的前段时间内提供检索服务,导致检索服务周期性失效。



技术实现要素:

基于此,有必要针对检索服务周期性失效的技术问题,提供一种请求负载控制方法、装置、存储介质和计算机设备。

一种请求负载控制方法,包括:

获取当前时间片内到达的请求所对应的意图强度值;

确定预设数量的历史时间片所对应的累计历史请求下发量;所述预设数量的历史时间片与当前时间片构成当前的单位时长;

获取对应单位时长的请求上限量;

根据所述累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界;

根据所述意图强度值和所述意图强度边界的大小关系,对当前时间片内到达的所述请求进行负载控制。

一种请求负载控制装置,所述装置包括:

获取模块,用于获取当前时间片内到达的请求所对应的意图强度值;

确定模块,用于确定预设数量的历史时间片所对应的累计历史请求下发量;所述预设数量的历史时间片与当前时间片构成当前的单位时长;

所述获取模块还用于获取对应单位时长的请求上限量;

所述确定模块还用于根据所述累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界;

负载控制模块,用于根据所述意图强度值和所述意图强度边界的大小关系,对当前时间片内到达的所述请求进行负载控制。

一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述请求负载控制方法的步骤。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述请求负载控制方法的步骤。

上述请求负载控制方法、装置、存储介质和计算机设备,从单位时长中划分出更细粒度的时间片,以时间片为滑动窗口进行处理。对于每个时间片,利用历史时间片所对应的累计历史请求下发量和对应单位时长的请求量上限,动态确定每个时间片对应的意图强度边界。从而在当前时间片内到达请求时,利用该请求所对应的意图强度值和动态确定的意图强度边界对请求进行负载控制,可以实现对请求进行柔性的负载控制,可尽量避免检索服务周期性失效的问题。

一种请求负载控制方法,包括:

获取检索子系统的负载状态;

当所述负载状态满足预设条件时,获取当前时间片内到达的请求对应于所述检索子系统的意图强度值;

按照所述意图强度值所满足的负载控制条件对所述请求进行负载控制。

上述请求负载控制方法,当检索子系统的负载状态满足预设条件时,才对当前时间片内到达的请求,按照意图强度值所满足的负载控制条件进行负载控制。这样根据检索子系统的负载状态有选择性地对请求进行负载控制,可在预设条件下才执行请求负载控制方法,能减轻计算压力并节省资源,并有效地实现系统过载保护。

附图说明

图1为一个实施例中请求负载控制方法的应用环境图;

图2为一个实施例中请求负载控制方法的流程示意图;

图3为一个实施例中根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界的步骤的流程示意图;

图4为一个实施例中获取当前时间片所对应的预测请求到达量的步骤的流程示意图;

图5为一个实施例中根据可下发请求余量和预测请求到达量确定当前时间片所对应的意图强度边界的步骤的流程示意图;

图6为一个实施例中请求负载控制方法还包括获取离散的意图强度边界概率分布的步骤的流程示意图;

图7为一个实施例中根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤的流程示意图;

图8为一个实施例中音乐类目每分钟请求实际下发量曲线示意图;

图9为一个实施例中音乐类目每分钟不同意图强度边界区间的请求拒绝量示意图;

图10为另一个实施例中请求负载控制方法的流程示意图;

图11为一个实施例中请求负载控制装置的结构框图;

图12为另一个实施例中请求负载控制装置的结构框图;

图13为一个实施例中请求负载控制方法的流程示意图;

图14为一个实施例中请求负载控制装置的结构框图;

图15为一个实施例中计算机设备的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中请求负载控制方法的应用环境图。参照图1,该请求负载控制方法应用于检索系统。该检索系统包括终端110和服务器120。终端110和服务器120通过网络连接。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。在一个实施例中,服务器120包括融合层121和检索子系统122。融合层121接收终端110发起的检索请求,并根据该检索请求调用对应类目的检索子系统进行类目检索。

如图2所示,在一个实施例中,提供了一种请求负载控制方法。本实施例主要以该方法应用于上述图1中的服务器120来举例说明。参照图2,该请求负载控制方法具体包括如下步骤:

s202,获取当前时间片内到达的请求所对应的意图强度值。

其中,时间片是从单位时长中划分出的更细粒度的时间段。从单位时长中划分出时间片,具体可以是将单位时长划分为一定数目的等时长的时间片,也可以是将单位时长划分为一定数目的时长按比例增加的时间片,或者是将单位时长随机划分为一定数目的时间片。例如,当单位时间为1秒时,可以将1秒划分为10个100毫秒的时间片。请求是终端向服务器发起的要求,具体可以是检索请求、命令请求或认证请求等。意图强度值可以是请求对某检索类目的意图强弱大小的值。意图强度值越大则说明用户输入该请求是用于检索该类目相关内容的可能性越大。

具体地,当到达服务器的请求为检索请求时,检索请求中含有检索串(query)。服务器可获取当前时间片内到达的请求中的检索串对各检索类目的意图强度值。

在一个实施例中,服务器可预先建立检索串对各检索类目的意图强度值的对应关系表。根据该对应关系表,服务器可通过查找请求中的检索串来确定与该请求所对应的意图强度值。

在一个实施例中,服务器可预先根据历史检索记录分别建立检索串对各检索类目的机器分类模型。服务器可将到达的请求输入到不同检索类目所对应的机器分类模型中,输出该请求对检索类目的意图强度值。

s204,确定预设数量的历史时间片所对应的累计历史请求下发量;预设数量的历史时间片与当前时间片构成当前的单位时长。

其中,历史时间片是基于时间维度的在当前时间片前面的时间片。累计历史请求下发量是累计历史时间片所对应的历史请求中实际下发的数量。具体地,服务器可通过计数器来实现请求下发量的统计。在一个实施例中,服务器可通过请求实际下发计数器来实现请求下发量的统计,每当有一个请求被下发时,请求实际下发计数器就加1。服务器可通过统计单位时长内除当前时间片外的其他历史时间片所对应的请求下发量,来确定预设数量的历史时间片所对应的累计历史请求下发量。

举例说明,单位时间为1秒,可以将1秒划分为10个100毫秒的时间片。服务器可以统计当前100毫秒的时间片之前的9个时间片内的历史请求下发量之和,将之前的9个时间片内的历史请求下发量之和作为累计历史请求下发量。

s206,获取对应单位时长的请求上限量。

其中,请求上限量是服务器能对请求进行下发的最大量。单位时长的请求上限量是单位时长内服务器能下发的请求最大量。具体地,服务器获取的对应单位时长的请求上限量可以是预先配置的值,也可以是根据服务器当前的工作状态获取的动态的值。

例如,服务器可通过接收该请求的检索子系统的系统负载能力,设定单位时长服务器能下发的请求上限量。或者,服务器可通过对检索子系统的实际性能进行压力测试,以获取该检索子系统单位时长的请求上限量。服务器还可以对服务器端请求队列拥塞情况进行评估得到当前的单位时长的请求上限量。

s208,根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界。

其中,意图强度边界是意图强度的边界值。意图强度边界可以用来作为请求被拒绝或是被下发的临界意图强度值,例如,服务器可以选择拒绝意图强度值低于意图强度边界的请求,下发意图强度值高于意图强度边界的请求,以此进行请求负载控制。

具体地,服务器可以确定对应单位时长的请求上限量和单位时长内除当前时间片外的其他时间片所对应的累计历史请求下发量的差值,将差值作为当前时间片内服务器的可下发请求余量。根据当前时间片内服务器的可下发请求余量,确定当前时间片所对应的意图强度边界。

在一个实施例中,服务器可根据历史请求到达量预测当前时间片所对应的预测请求到达量。根据当前时间片所对应的预测请求到达量和可下发请求余量的差,确定当前时间片所对应的期望请求拒绝量。将期望请求拒绝量和预测请求到达量的商作为当前时间片所对应的期望请求拒绝概率。服务器可预先根据历史请求到达量和历史请求下发量拟合意图强度边界概率分布,其中,意图强度边界概率分布是一定周期内所有请求中被下发的请求落在该意图强度边界范围内的概率分布。拟合可采用线性最小二乘法或多项式拟合等方式进行。再根据期望请求拒绝概率即可确定当前时间片所对应的意图强度边界。

在一个实施例中,服务器可根据历史请求到达量预测当前时间片所对应的预测请求到达量。将可下发请求余量和当前时间片所对应的预测请求到达量的商,作为期望请求下发概率。假设当前时间片到达的请求数量随意图强度值呈正态分布、普阿松分布、二项分布等或其他预设概率分布。将期望请求下发概率作为预设函数分布的面积值,计算得到意图强度值,将计算得到的意图强度值作为意图强度边界。

在一个实施例中,服务器可获取历史时间片内被下发的请求所对应的意图强度值。将所有请求所对应的意图强度值归一化到预设区间,按一定粒度为间隔将意图强度值预设区间均分为多个区间段(假设为m个区间段),取每个区间段的区间下界值作为意图强度边界。分别统计历史时间片内这m个区间段中的请求下发量的平均值。当大于某意图强度边界的范围内的请求下发数的和为可下发请求余量或最接近可下发请求余量时,将该意图强度边界作为当前时间片所对应的意图强度边界。

s210,根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制。

具体地,服务器可通过比较当前时间片内到达的请求的意图强度值和意图强度边界的大小关系,对当前时间片内到达的大于意图强度边界的请求和小于意图强度边界的请求分别采取不同的方式进行负载控制。

在一个实施例中,服务器可对当前时间片内到达的请求中,意图强度值大于或等于意图强度边界的请求进行下发处理;对意图强度值小于意图强度边界的请求进行拒绝处理,以此来对当前时间片内到达的请求进行负载控制。

在一个实施例中,为避免当前时间片内到达的请求多为低意图请求,服务器可对当前时间片内到达的请求中,意图强度值大于或等于意图强度边界的请求进行下发处理;对意图强度值小于意图强度边界的请求按预设概率进行拒绝处理,以此缓解服务器的过拒绝处理的情况。

在一个实施例中,为避免当前时间片内到达的请求多为低意图请求,服务器可对当前时间片内到达的请求中,意图强度值大于或等于意图强度边界的请求进行下发处理;对意图强度值小于意图强度边界的请求按意图强度值划分为若干个不同层次,优先保留意图强度值较高的请求。

上述请求负载控制方法,从单位时长中划分出更细粒度的时间片,以时间片为滑动窗口进行处理。对于每个时间片,利用历史时间片所对应的累计历史请求下发量和对应单位时长的请求量上限,动态确定每个时间片对应的意图强度边界。从而在当前时间片内到达请求时,利用该请求所对应的意图强度值和动态确定的意图强度边界对请求进行负载控制,可以实现对请求进行柔性的负载控制,可尽量避免检索服务周期性失效的问题。

在一个实施例中,请求负载控制方法还包括:在当前时间片内,当请求到达后,确定当前的单位时长所对应的请求下发总量;当请求下发总量超过对应单位时长的请求上限量时,直接拒绝请求。

具体地,服务器可通过请求实际下发计数器来统计请求下发量。每当有一个请求被下发时,请求实际下发计数器就加1。在当前时间片内,当请求到达后,服务器可获取请求实际下发计数器统计的当前的单位时长所对应的请求下发总量。当请求下发总量超过对应单位时长的请求上限量时,直接拒绝到达的请求。

上述实施例中,服务器可通过比较当前的单位时长所对应的请求下发总量和单位时长的请求上限量的大小来判断当前的检索子系统是否达到负载饱和状态。当检索子系统当前达到负载饱和状态时则能快速拒绝请求,提高了负载控制效率。

在一个实施例中,根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界的步骤包括:

s302,根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的可下发请求余量。

具体地,服务器可将对应单位时长的请求上限量减去单位时长内除当前时间片外的其他时间片内的累计历史请求下发量,得到差值,将得到的差值作为当前时间片所对应的可下发请求余量。或者将得到的差值加上预留的请求余量的和作为当前时间片所对应的可下发请求余量。其中,预留的请求余量可以是1或2。

s304,获取当前时间片所对应的预测请求到达量。

其中,预测请求到达量是以时间片为单位,对当前时间片内的请求到达情况进行预测而得到的请求到达量。具体地,服务器可通过计数器来实现请求到达量的统计,例如,服务器可通过请求到达计数器来实现请求到达量的统计,每当有一个请求到达服务器时,请求到达计数器的请求到达量就加1。服务器可根据请求到达计数器统计的历史请求到达量来预测当前时间片的请求到达量。

在一个实施例中,服务器可通过请求到达计数器分别统计预设数量的历史时间片所对应的历史请求到达量。将历史请求到达量中出现频次最高的请求到达量作为当前时间片所对应的预测请求到达量。例如,服务器统计10个历史时间片所对应的请求到达量,发现这10个时间片中请求到达的数量分别是5、6、6、7、9、5、4、0、5、5。经统计发现请求到达量5出现的频次最高,因此将5作为当前时间片所对应的预测请求到达量。

在一个实施例中,服务器可获取历史请求到达的具体时间,统计预设时间段内请求到达数量。服务器可采用线性最小二乘法或多项式拟合等方式拟合请求到达量随时间变化的函数。根据拟合的请求到达量随时间变化的函数确定当前时间片的起始时间和结束时间,根据微分原理计算当前时间片内的请求到达数量。

在一个实施例中,服务器可获取当前时间片之前的历史时间片的请求到达量。根据当前时间片之前的历史时间片的请求到达量的变化率,计算当前时间片所对应的预测请求到达量。

在一个实施例中,服务器可获取当前时间片之前的多个历史时间片的请求到达量。根据相邻的两个时间片之间的请求到达量之差计算请求到达量的变化率。根据预设时间段的请求到达量的变化率,服务器可采用线性最小二乘法或多项式拟合等方式拟合请求到达量的变化率随时间变化的函数。根据该请求到达量的变化率随时间变化的函数,预测当前时间片与前一时间片之间的请求到达量的变化率,再计算当前时间片所对应的预测请求到达量。

在一个实施例中,服务器可获取当前时间片之前的前两次历史时间片的请求到达量。根据微分思想,可以认为前后两个时间片的到达请求量的变化率是一致的。服务器可直接将前两次历史时间片的请求到达量的变化率作为当前时间片的变化率,从而计算得到当前时间片的预测请求到达量。例如,假设当前时间片的前一时间片的请求到达量为recv_qpr1,再往前一个时间片的请求到达量为recv_qpr2,时间片时间间隔为d,则前两个时间片的请求到达量的变化率rate=(recv_qpr1-recv_qpr2)/d。根据连续假设与微分假设,当前时间片的预测请求到达量(expected_qpr)可以计算如下:

expected_qpr=recv_qpr1+rate*d=recv_qpr1+(recv_pqr1-recv_qpr2)。

s306,根据可下发请求余量和预测请求到达量确定当前时间片所对应的意图强度边界。

具体地,服务器可根据可下发请求余量和预测请求到达量确定期望请求拒绝量。再根据期望请求拒绝量和预测请求到达量确定期望请求拒绝概率。根据期望请求拒绝概率确定当前时间片所对应的意图强度边界。

在一个实施例中,服务器可根据历史请求下发量和历史请求到达量确定意图强度边界概率分布。具体地,服务器可将所有请求所对应的意图强度值归一化到预设区间,按一定粒度为间隔将意图强度值预设区间均分为多个区间段(假设为m个区间段),取每个区间段的区间上界值作为意图强度边界。将落在意图强度边界范围内的请求量之和与总请求量的商作为请求拒绝概率。因此,根据意图强度边界概率分布可唯一确定期望请求拒绝概率所对应的意图强度边界。

在一个实施例中,服务器可假设当前时间片到达的请求数量随意图强度值呈正态分布、普阿松分布、二项分布等或其他预设概率分布。将期望请求下发概率作为预设函数分布的面积值,计算得到意图强度值,将计算得到的意图强度值作为意图强度边界。

上述实施例中,根据可下发请求余量和预测请求到达量来确定当前时间片所对应的意图强度边界,使得所确定的意图强度边界能随当前检索子系统的实际负载情况而变化,更能反应当前时间片服务器的实际工作情况,使得根据意图强度边界进行负载控制时能更准确。

在一个实施例中,步骤s302具体包括:当累计历史请求下发量小于对应单位时长的请求上限量时,将请求上限量和累计历史请求下发量的差作为当前时间片所对应的可下发请求余量,或者将差与预设正整数的和作为当前时间片所对应的可下发请求余量;预设正整数的取值范围是[1,2]。

具体地,为考虑临界保护,服务器可预先设置一个或两个预留的请求余量。当累计历史请求下发量小于对应单位时长的请求上限量时,服务器可将请求上限量和累计历史请求下发量的差作为当前时间片所对应的可下发请求余量,或者将该差值与预留的请求余量的和作为当前时间片所对应的可下发请求余量。

在一个实施例中,步骤s302还包括:当累计历史请求下发量大于或等于对应单位时长的请求上限量时,将零或预设正整数作为当前时间片所对应的可下发请求余量。

具体地,当累计历史请求下发量大于或等于对应单位时长的请求上限量时,服务器可将零或者预先设置的预留的请求余量作为当前时间片所对应的可下发请求余量。

上述实施例中,服务器可预先设置一个或两个预留的请求余量。当累计历史请求下发量大于或等于对应单位时长的请求上限量时,服务器可将零或者预先设置的请求余量作为当前时间片所对应的可下发请求余量,以保护服务器的临界检索服务能力,可以避免检索服务器临界失效的问题。

在一个实施例中,获取当前时间片所对应的预测请求到达量的步骤包括:

s402,获取当前时间片之前连续的多个历史时间片各自对应的历史请求到达量。

具体地,服务器可通过请求实际到达计数器统计的不同时间片所对应的请求到达量,获取当前时间片之前连续的多个历史时间片各自对应的历史请求到达量。

s404,根据获取的历史请求到达量之间的变化趋势,及多个历史时间片中最近的历史时间片对应的历史请求到达量,确定当前时间片对应的预测请求到达量。

具体地,服务器可获取多个连续时间片所对应的历史请求到达量,根据历史请求到达量之间的变化趋势,和多个历史时间片中最近的历史时间片对应的历史请求到达量,计算当前时间片所对应的预测请求到达量。

在一个实施例中,服务器可获取多个历史请求到达量之间的变化差值,计算将这些变化差值的平均值,将平均值作为当前时间片对应的预测请求到达量的变化值。根据最近的历史时间片对应的历史请求到达量和当前时间片对应的预测请求到达量的变化值计算当前时间片对应的预测请求到达量。

在一个实施例中,服务器可获取多个连续时间片所对应的历史请求到达量,根据历史请求到达量计算多个请求到达量的变化率。根据计算的请求到达量的变化率预测当前时间片所对应的请求到达量的预测变化率。根据最近的历史时间片对应的历史请求到达量和预测变化率值计算当前时间片对应的预测请求到达量。

上述实施例中,根据获取的历史请求到达量之间的变化趋势,确定当前时间片对应的预测请求到达量,使得预测的请求到达量的准确性更高。

在一个实施例中,步骤s404包括:当多个历史时间片中最近的历史时间片所对应历史请求到达量最大时,或多个历史时间片各自对应的历史请求到达量均相同时,将最近的历史时间片所对应历史请求到达量作为当前时间片对应的预测请求到达量。

具体地,当服务器获取的多个历史时间片中最近的历史时间片所对应历史请求到达量最大时,也就是说请求到达量处于上升趋势。由于请求到达量的增大更容易触发过载保护,当进行当前请求到达量预测时可以直接忽略请求到达量的上升变化量,将最近的历史时间片所对应历史请求到达量作为当前时间片所对应的预测请求到达量。或者,当多个历史时间片各自对应的历史请求到达量均相同时,也就是说历史请求到达量之间的变化趋势为零,此时服务器可直接将最近的历史时间片所对应历史请求到达量作为当前时间片对应的预测请求到达量。

在一个实施例中,步骤s404还包括:当多个历史时间片中最近的历史时间片所对应历史请求到达量最小时,将比最近的历史时间片所对应历史请求到达量小的非负值作为当前时间片对应的预测请求到达量。

具体地,当多个历史时间片中最近的历史时间片所对应历史请求到达量最小时,也就是说请求到达量处于下降趋势,此时就需要考虑请求到达量的变化趋势。服务器可将比最近的历史时间片所对应历史请求到达量小的非负值作为当前时间片对应的预测请求到达量。

在一个实施例中,多个历史时间片包括第一历史时间片和第二历史时间片;第一历史时间片是当前时间片的前一时间片,对应第一历史请求到达量;第二历史时间片是第一历史时间片的前一时间片,对应第二历史请求到达量;当第一历史请求到达量小于第二历史请求到达量、且第一历史请求到达量的两倍大于第二历史请求到达量时,将第一历史请求到达量的两倍减去第二历史请求到达量,得到当前时间片对应的预测请求到达量。

在一个实施例中,当第一历史请求到达量的两倍小于第二历史请求到达量时,将零作为当前时间片对应的预测请求到达量。

具体地,当历史请求到达量处于下降趋势时,根据连续假设和微分假设,服务器可将当第一历史请求到达量与第二历史请求到达量的变化率作为预测请求到达量与第一历史请求到达量的变化率。

例如,服务器可通过请求到达计数器recv_util记录当前时间片的前两个时间片的请求到达量,假设当前时间片的前一时间片所对应的请求到达量为recv_qpr1,也就是第一历史请求到达量为recv_qpr1。假设再往前一个时间片的请求到达量为recv_qpr2,也就是第二历史请求到达量为recv_qpr2。假设时间片时间间隔为d,则第一历史请求到达量与第二历史请求到达量的变化率rate=(recv_qpr1-recv_qpr2)/d。则当前时间片的到达请求量可以计算如下:

expected_qpr=recv_qpr1+rate*d=recv_qpr1+(recv_pqr1-recv_qpr2)。

当第一历史请求到达量的两倍小于第二历史请求到达量时,即recv_qpr1+(recv_pqr1-recv_qpr2)的值为负数时,将零作为当前时间片对应的预测请求到达量。

在一个实施例中,当到达请求量处于上升增大趋势时,即recv_qpr1-recv_qpr2>0时,由于到达请求量的增大更容易触发过载保护,进行当前请求量预测时可采用保守预测策略,也就是可以直接忽略请求量的上升变化量,取expected_qpr=recv_qpr1。反之,当到达请求量处于下降趋势时,为了保证及时从过载保护拒绝请求状态恢复到非过载状态,则需要考虑请求到达量的变化量。因此,可以得到当前时间片的请求到达量计算公式如下:

上述实施例中,通过采用连续假设和微分假设,认为前后两个时间片内的请求到达量的变化率是一致的。通过历史请求到达量的变化率得到当前时间片所对应的预测请求到达量,使得预测请求到达量的准确性更高。并且,当请求到达量处于增大趋势时,采用保守预测策略对当前的请求到达量进行预测,避免服务器过早进入过载保护状态。反之,当请求到达量处于下降趋势时,考虑请求到达量的变化情况,可以及时从过载保护拒绝请求状态恢复到非过载状态。这样,可使得服务器能更及时、准确地进行负载控制。

在一个实施例中,步骤s306包括以下具体步骤:

s502,根据预测请求到达量和可下发请求余量的差,确定当前时间片所对应的期望请求拒绝量。

具体地,服务器可获取当前时间片所对应的预测请求到达量,计算预测请求到达量与当前时间片所对应的可下发请求余量的差值,将该差值作为当前时间片所对应的期望请求拒绝量。

s504,根据期望请求拒绝量和预测请求到达量,得到当前时间片所对应的期望请求拒绝概率。

具体地,服务器可计算当前时间片所对应的期望请求拒绝量和预测请求到达量的商,根据该商值确定当前时间片所对应的期望请求拒绝概率。

s506,根据期望请求拒绝概率和预设的意图强度边界概率分布,确定当前时间片所对应的意图强度边界。

其中,意图强度边界概率分布是一定周期内所有请求中被下发的请求落在该意图强度边界范围内的概率分布。例如,假设意图强度边界概率分布是请求拒绝概率关于意图强度边界x的函数f(x),定义为:在一定周期内,意图强度值落在[0,x]区间内的被下发的请求数目占全部请求到达的比重。

具体地,服务器可预先设置意图强度边界概率分布,将期望请求拒绝概率作为请求拒绝概率值,即可根据预设的意图强度边界概率分布,确定当前时间片所对应的意图强度边界。

例如,服务器可预先设置意图强度边界概率分布,即设置意图强度边界x与函数f(x)的对应关系。当给定一个意图强度边界值x,根据意图强度边界概率分布可以得到该意图强度边界值对应的请求拒绝概率值f(x);同样地,给定一个请求拒绝概率值f(x),也可以直接根据意图强度边界概率分布得到对应的意图强度边界值x。

上述实施例中,根据当前时间片所对应的预测请求到达量和可下发请求余量,可准确高效地确定期望请求拒绝概率。再将期望请求拒绝概率带入预设的意图强度边界概率分布中,即可准确、快速地确定与期望请求拒绝概率相对应的意图强度边界。

在一个实施例中,当期望请求拒绝量小于或者等于零时,直接将请求确定为待下发的请求。

具体地,当服务器计算的当前时间片所对应的预测请求到达量与当前时间片所对应的可下发请求余量的差值小于或等于零时,也就是说当前时间片所对应的预测请求到达量小于或等于可下发请求余量时,则预测当前时间片无需拒绝请求,可将当前时间片到达的请求确定为待下发请求。

在一个实施例中,服务器可通过计数器来实现请求待下发量的统计。例如,服务器可通过请求待下发计数器来实现请求待下发量的统计,每当有一个请求被确定为待下发请求时,请求待下发计数器就加1。

上述实施例中,当期望请求拒绝量小于或者等于零时,说明当前时间片所对应的预测到达的所有请求都无需拒绝,可直接将该请求确定为待下发请求,结束过载保护流程,提高了负载控制效率。

在一个实施例中,意图强度边界概率分布包括离散的意图强度边界与离散的请求拒绝概率的映射关系;步骤s506包括:从意图强度边界概率分布所包括的离散的请求拒绝概率中,确定与期望请求拒绝概率匹配的请求拒绝概率;按照映射关系,确定匹配的请求拒绝概率所映射的离散的意图强度边界;根据所匹配的请求拒绝概率所映射的离散的意图强度边界确定当前时间片所对应的意图强度边界。

具体地,服务器可从意图强度边界概率分布所包括的离散的请求拒绝概率中,确定与期望请求拒绝概率误差最小的请求拒绝概率。按照离散的意图强度边界与离散的请求拒绝概率的映射关系,确定匹配的请求拒绝概率所映射的离散的意图强度边界;将请求拒绝概率所映射的离散的意图强度边界作为当前时间片所对应的意图强度边界。

在一个实施例中,当意图强度边界概率分布所包括的离散的请求拒绝概率中存在等于期望请求拒绝概率的请求拒绝概率时,则将等于期望请求拒绝概率的请求拒绝概率作为与期望请求拒绝概率匹配的请求拒绝概率。

在一个实施例中,当意图强度边界概率分布所包括的离散的请求拒绝概率中不存在等于期望请求拒绝概率的请求拒绝概率时,则从离散的请求拒绝概率中,筛选大于期望请求拒绝概率的最小请求拒绝概率,将最小拒绝概率作为请求拒绝概率。

在一个实施例中,当意图强度边界概率分布所包括的离散的请求拒绝概率中不存在等于期望请求拒绝概率的请求拒绝概率时,还可从离散的请求拒绝概率中,筛选小于期望请求拒绝概率的最大请求拒绝概率,将最大拒绝概率作为请求拒绝概率。

上述实施例中,从意图强度边界概率分布所包括的离散的请求拒绝概率中,选择与期望请求拒绝概率匹配的请求拒绝概率。再根据意图强度边界概率分布确定与该请求拒绝概率相对应的意图强度边界,使得确定的意图强度边界最接近当前时间片所期望的意图强度边界,进一步提高了负载控制的有效性。

在一个实施例中,根据所匹配的请求拒绝概率所映射的离散的意图强度边界确定当前时间片所对应的意图强度边界包括取根据所匹配的请求拒绝概率所映射的离散的意图强度边界和预设意图强度边界上限中的最小值,将最小值作为当前时间片所对应的意图强度边界。

具体地,在实际应用中,当服务器以与请求拒绝概率相对应的意图强度边界进行负载控制时,有可能因为请求拒绝概率过高而导致意图强度边界也很高。而有可能当前时间片内到达的请求的意图强度值都远低于意图强度边界,这样会使得所有请求都被拒绝而出现严重过拒绝的现象。因此,服务器可通过预先设置预设意图强度边界上限,并比较请求拒绝概率所映射的离散的意图强度边界与预设意图强度边界上限的大小,取两者中的最小值作为当前时间片所对应的意图强度边界。这样,可以有效地预防过拒绝现象。

在一个实施例中,请求负载控制方法还包括获取离散的意图强度边界概率分布的步骤:

s602,统计预设统计时长内的历史请求集合。

具体地,服务器可统计预设统计时长内的历史请求集合,其中,历史请求集合包含到达的历史请求和该历史请求所对应的意图强度值。预设统计时长例如一天、一周或一个月等。

s604,获取历史请求集合中的历史请求各自所对应的历史意图强度值;历史意图强度值在意图强度边界范围内。

具体地,服务器可预先设置意图强度值的取值范围,将意图强度值的取值范围作为意图强度边界范围。服务器可获取历史请求集合中的历史请求各自所对应的历史意图强度值,其中,获取的意图强度值在意图强度边界范围内。

举例说明,服务器可预先将意图强度值归一化到[0,1]区间,将[0,1]区间作为意图强度边界的取值范围。这样,服务器获取的历史意图强度值就可落在意图强度边界的范围内。

s606,从意图强度边界范围中划分出离散的意图强度边界。

具体地,服务器可从意图强度边界范围中划分出离散的意图强度边界。例如,意图强度边界范围为[0,1]区间,按一定粒度(比如0.01)为间隔,将取值范围为[0,1]的意图强度边界范围均分为多个区间段(比如100个区间段),取每个区间段的区间上界值作为意图强度边界值,这样就从意图强度边界范围中划分出了100个离散的意图强度边界。

s608,统计历史请求集合中所对应的历史意图强度值小于或等于各个离散的意图强度边界的数量。

具体地,服务器可统计历史请求集合中所对应的历史意图强度值小于或等于各个离散的意图强度边界的数量。举例说明,对于意图强度边界范围为[0,1]区间,以0.01为间隔所划分的意图强度边界值x,当给定不同意图强度边界值x时,服务器可统计一定时间周期内意图强度值落在[0,x]的请求数n(x)。

s610,分别将对应于各个离散的意图强度边界统计的数量除以历史请求集合中历史请求的总数量,得到与各个离散的意图强度边界分布存在映射关系的离散的请求拒绝概率。

具体地,当服务器获取到对应于各个离散的意图强度边界统计的数量时,将该数量分别除以历史请求集合中历史请求的总数量,得到的值就是服务器到达的请求中意图强度值小于该意图强度边界的概率。将得到的概率值作为与意图强度边界相对应的请求拒绝概率。

举例说明,意图强度边界概率分布函数f(x)的计算方法如下:将请求所对应的意图强度值归一化到[0,1]区间,按一定粒度(比如0.01)为间隔将[0,1]意图强度值区间均分为多个区间段(比如100个区间段)。取每个区间段的区间上界值作为意图强度边界值x,统计观察一定周期内所有请求的意图强度值落在区间段[0,x]的请求数目,记为n(x)。若整个周期内的所有请求数为n,则给定意图强度边界值x的请求拒绝概率分布f(x)=n(x)/n。

显然,f(x)是关于x的单调递增函数。当意图强度值、意图强度边界均与检索类目相对应时,直观地,意图强度值[0,0]区间内的请求都是无该类目意图的检索请求,并不会调用该检索子系统,因此f(0)=0;而意图强度值[0,1]区间内的请求数目等于预期请求该类目系统的全部请求数目,f(1)=1。给定一个意图强度边界值x,根据意图强度边界概率分布函数可以得到该意图强度值对应的请求拒绝概率f(x);同样地,给定一个请求拒绝概率f(x),也可以直接根据意图强度边界概率分布得到对应的意图强度边界值x。参照以下表1:

表1

例如,如表1所示,以0.01为间隔,给定不同意图强度边界值x,统计一定周期内意图强度值落在[0,x]的请求数n(x),该周期内请求总数为n=1000,根据f(x)=n(x)/n则可以得到意图强度边界概率分布如下表1中所示。

上述实施例中,根据预设时长内历史请求和各历史请求所对应的历史意图强度值,确定与各个离散的意图强度边界分布存在映射关系的离散的请求拒绝概率,使得根据期望拒绝概率所确定的意图强度边界的准确性高,能很好地代表了当前时间片所对应的意图强度边界,进而提高了负载控制的准确性。

在一个实施例中,当意图强度边界概率分布所包括的离散的请求拒绝概率中不存在等于期望请求拒绝概率的请求拒绝概率时,则从离散的请求拒绝概率中,筛选大于期望请求拒绝概率的最小请求拒绝概率,得到与期望请求拒绝概率匹配的请求拒绝概率。

在一个实施例中,当意图强度边界概率分布所包括的离散的请求拒绝概率中存在等于期望请求拒绝概率的请求拒绝概率时,则将等于期望请求拒绝概率的请求拒绝概率作为与期望请求拒绝概率匹配的请求拒绝概率。

举例说明,由于意图强度边界概率分布函数f(x)为关于意图强度边界x的离散函数,当给定意图强度边界值x0不存在等于离散的意图强度边界时,通常可以取与x0差距最小的且大于x0的意图强度边界值x,即x≥x0,以f(x)作为给定意图强度边界值的请求拒绝概率。同样地,当给定请求拒绝概率g不存在等于离散的请求拒绝概率时,通常可以取与g差距最小的且大于g的最小请求拒绝概率f(x),从而得到最小请求拒绝概率f(x)对应的意图强度边界值x,即保证得到最小的x,使得f(x)≥g。

例如,根据表1中所示,若给定意图强度边界值x0=0.015,可以向上取得离散的意图强度边界值x=0.02,以f(0.02)=0.012作为意图强度边界值x0对应的请求拒绝概率。若给定请求拒绝概率g=0.455,取等于g的意图强度边界概率f(x)=0.455,其对应的意图强度边界值为0.51。若给定请求拒绝概率g=0.48,而意图强度边界概率分布所包括的离散的请求拒绝概率中没有等于0.48的值,时,取大于0.48的最小请求拒绝概率0.5,将其对应的意图强度边界分数0.52作为意图强度边界。

在一个实施例中,根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤包括:

s702,从意图强度边界概率分布所包括的离散的请求拒绝概率中,获取小于最小请求拒绝概率的最大请求拒绝概率。

s704,按照映射关系,确定最大请求拒绝概率对应的低阶意图强度边界。

具体地,服务器可根据离散的请求拒绝概率与离散的意图强度边界的对应关系,确定最大请求拒绝概率对应的低阶意图强度边界。

s706,获取当前时间片所对应的拒绝请求控制概率。

在一个实施例中,服务器可预先设置预设数值为拒绝请求控制概率,例如0.5或0.3等。

在一个实施例中,服务器可计算最小请求拒绝概率与最大请求拒绝概率之间的第一差;计算期望请求拒绝概率与最大请求拒绝概率之间的第二差;将第一差和第二差的商作为当前时间片所对应的拒绝请求控制概率。

s708,当意图强度值大于或等于低阶意图强度边界,且小于当前时间片所对应的意图强度边界时,按照拒绝请求控制概率对当前时间片内到达的请求进行负载控制。

上述实施例中,当意图强度值大于或等于低阶意图强度边界,且小于当前时间片所对应的意图强度边界时,按照拒绝请求控制概率对当前时间片内到达的请求进行拒绝或者下发,这样分层对请求进行负载控制可提高服务器检索服务的有效性。

在一个实施例中,当意图强度值小于低阶意图强度边界时,服务器直接拒绝请求。

在一个实施例中,当意图强度值大于当前时间片所对应的意图强度边界时,服务器将请求确定为待下发的请求。

在一个实施例中,步骤s210包括:统计按照拒绝请求控制概率拒绝的请求量和当前时间片内当意图强度值小于低阶意图强度边界时直接拒绝的请求量,得到预期请求拒绝量;当预期请求拒绝量大于期望请求拒绝量,且当前的单位时长所对应的请求下发总量小于请求上限量时,则将当前判定需拒绝的请求确定为待下发的请求。

具体地,服务器可通过计数器来实现预期请求拒绝量的统计。在一个实施例中,服务器可通过请求预期拒绝计数器来实现预期请求拒绝量的统计,每当有一个请求预期被拒绝时,请求预期拒绝计数器就加1。当单位时长内请求预期拒绝计数器统计的预期请求拒绝量大于期望请求拒绝量,且当前的单位时长所对应的请求下发总量小于请求上限量时,则将当前判定需拒绝的请求确定为待下发的请求。

进一步地,在一个实施例中,服务器可统计当前的单位时长所对应的已下发请求量;在当前待下发的请求的量与已下发请求量的和未超过请求上限量时,将当前待下发的请求下发。

具体地,服务器可通过计数器来实现请求待下发量的统计。在一个实施例中,服务器可通过请求待下发计数器来实现请求待下发量的统计,每当有一个请求被确定为带下发请求时,请求待下发计数器就加1。当当前待下发的请求的量与已下发请求量的和未超过请求上限量时,服务器将当前待下发的请求下发。

上述实施例中,根据当前时间片内请求所对应的意图强度值分别与低阶意图强度边界和意图强度边界的大小关系,对当前时间片内到达的请求进行分层拒绝,可对当前时间片内到达的请求进行灵活、有效的负载控制。

在一个实施例中,意图强度值、累计历史请求下发量、请求上限量和意图强度边界均与检索类目相对应;步骤s210包括:根据对应相同检索类目的意图强度值和意图强度边界的大小关系,并对应于相同检索类目所对应的检索子系统,对当前时间片内到达的请求进行负载控制。

举例说明,用户通过终端进行检索操作时,终端向融合层发起检索请求,融合层根据该检索请求调用对应的检索子系统进行类目检索。以音乐类目为例,设定音乐类目检索子系统的每秒请求上限量max_qps=22,则每分钟最大请求上限量max_qpm=60*22=1320。预设到达音乐类目检索子系统的请求量从0到4200qpm(每分钟请求量)增加,稳定一定时间后再逐步下降到0。通过实施该请求负载控制方法,服务器监控每分钟不同意图强度边界区间的请求拒绝量和请求实际下发量,最终结果如图8和图9所示。其中,图8为音乐类目每分钟请求实际下发量曲线。由图8可知,融合层下发到音乐类目子系统的请求量从0逐步上升到1312后稳定,最终随着请求到达量的下降也逐步下降。融合层下发到音乐类目子系统的请求实际下发量的最大量为1312,这与设定的max_qpm的差异在波动误差范围内,可以认为系统达到满负载。图9为音乐类目每分钟不同意图强度边界区间的请求拒绝量。由图9可知,意图强度值低的请求被拒绝的比例更高,说明低意图请求被优先拒绝,意图强度值高的请求优先通过,能很好地实现对当前时间片内到达的请求进行负载控制。

图2为一个实施例中请求负载方法的流程示意图。应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

下面以在实际应用中的一个例子来详细说明请求负载控制方法。该请求负载控制方法应用于服务器中的融合层。

如图10所示,首先,融合层针对每个类目业务分别维护4个qps原子计数器:a.请求到达计数器recv_util,用于统计到达融合层的请求量;b.请求待下发计数器may_util,用于统计可能需要下发的请求量;c.请求预期拒绝计数器discard_util,用于统计可能需要拒绝的请求量;d.请求实际下发计数器real_util,用于统计最终实际下发给检索子系统的请求量。

再者,假设各个qps原子计数器计数时以一个时间片为基本单位。将1秒分为10个时间片,即统计粒度以100ms作为一个时间片,并以一个时间片100ms作为一个滑动窗口,统计当前窗口在内的10个时间片(即1秒)的请求量。

求负载控制方法的具体流程如下:

1)终端发起检索请求,该请求到达融合层。,在前时间片内,当每到达一个请求时,请求到达计数器recv_util统计的请求到达量recv_qps加1。

2)融合层判断包含当前时间片在内的1秒内请求实际下发计数器real_util的请求下发量real_qps,若real_qps超过请求上限量max_qps,则直接拒绝该请求,对应的检索子系统不做该请求的检索。

3)根据连续假设和微分假设,基于滑动窗口预测当前时间片的预测请求到达量expected_qpr。其中,连续假设为,假设到达融合层的请求量是连续变化的;微分假设为,假设当时间片足够小时,前后两个时间片的请求到达量的变化率是稳定的。具体计算方式如下:

假设当前时间片的前一时间片的请求到达量为recv_qpr1,再往前一个时间片的请求到达量为recv_qpr2,时间片之间的时间间隔为d,则前两个时间片的请求到达量变化率rate=(recv_qpr1-recv_qpr2)/d。根据连续假设与微分假设,当前时间片的请求到达量可以计算如下:

expected_qpr=recv_qpr1+rate*d=recv_qpr1+(recv_pqr1-recv_qpr2)。

其中,若按上述公式计算得到expected_qpr<0时,应修正为expected_qpr=0。当请求到达量处于上升趋势时,取expected_qpr=recv_qpr1。因此,可以得到当片时间片的请求到达量计算公式如下:

4)融合层获取当前一秒除当前时间片外请求实际下发计数器real_util的实际已下发的请求量last_real_qps,从而预测当前时间片还能接收的可下发请求余量为remain=max_qps-last_real_qps。同时,考虑临界保护,一般多留一个请求的余量,因此当前时间片内检索子系统还能接收的请求余量预测公式如下:

5)计算当前时间片内预计需要拒绝的请求数overflow=expected_qpr–remain。若oveflow<=0,说明当前时间片内预测到达的所有请求都无需拒绝,可直接下发到达的请求,结束过载保护流程。否则,进入步骤6)。

6)计算当前时间片内的期望请求拒绝概率discard_prob=overflow/expected_qpr。

7)以discard_prob作为给定请求拒绝概率,根据意图强度边界概率分布求得离散的意请求拒绝概率取值范围内的真实请求拒绝概率accumulate_prob及其对应的意图强度边界qi_score。

8)预设意图强度边界上限为0.5,则意图强度边界上限intent_threshold=min(0.5,qi_score),根据意图强度边界概率分布求以意图强度边界上限intent_threshold为意图强度边界值对应的请求拒绝概率,记为ac_prob。设定若到到达的请求的意图强度值intent>intent_threshold,执行步骤11);否则执行步骤9)。

9)按前述方法计算得到的请求拒绝概率ac_prob,可能大于当前时间片的期望请求拒绝概率discard_prob,如果把到达的请求的意图强度值低于intent_threshold的全部拒绝,会导致过拒绝现象,因此可以采用分层拒绝的策略。具体方法为:

a.根据意图强度边界概率分布取比ac_prob低一层的请求拒绝概率ac_prob1对应的低阶意图强度边界值qi_score1;

b.将到达的请求中的意图强度值intent<qi_score1的请求全部拒绝;

c.将qi_score1<intent<intent_threshold的请求按拒绝请求控制概率拒绝,其中,拒绝请求控制概率为(discard_prob–ac_prob1)/(ac_prob–ac_prob1)。对于未被拒绝请求,跳转步骤11)继续执行;否则执行步骤10)。

10)过拒绝处理:按步骤9)进行分层拒绝时,可能由于当前到达的请求对该检索子系统而言都是低意图的,而导致过度拒绝。因此可以通过请求预期拒绝计数器discard_util统计当前时间片按步骤9)执行时预期被拒绝的请求的总数量discard,当预期请求拒绝量discard>overflow,但当前秒请求实际下发计数器real_util统计的real_qps小于max_qps时,则请求不拒绝,确定该请求为待下发请求,执行步骤11);否则直接拒绝请求,结束过载保护流程。

11)每当确定有待下发请求时,请求待下发计数器may_util对当前时间片内的待下发请求量加1后得到当前时间片内待下发请求量may1。融合层可累加上请求实际下发计数器real_util统计的当前秒除当前时间片外其他时间片内的请求下发量real1,得到当前时间片在内当前秒的预期请求下发量may=may1+real1。若may>=max_qps,则拒绝该请求,结束过载保护流程;否则执行步骤12)。

12)请求实际下发计数器real_util统计量加1,下发请求到检索子系统完成内容检索。整个过载保护流程结束。

需要说明地是,该请求负载控制方法不仅可以应用于融合层,也可具体应用于检索子系统或者融合层与检索子系统建立的反馈链路上等。本领域技术人员可以理解,说明书中示出的应用环境,仅仅是与本申请方案相关的部分场景,并不构成对本申请方案应用环境的限定。

如图11所示,在一个实施例中,提供了一种请求负载控制装置1100,包括获取模块1101、确定模块1102、负载控制模块1103。

获取模块1101,用于获取当前时间片内到达的请求所对应的意图强度值。

确定模块1102,用于确定预设数量的历史时间片所对应的累计历史请求下发量;预设数量的历史时间片与当前时间片构成当前的单位时长。

获取模块1101还用于获取对应单位时长的请求上限量。

确定模块1102还用于根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界。

负载控制模块1103,用于根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制。

上述请求负载控制装置,从单位时长中划分出更细粒度的时间片,以时间片为滑动窗口进行处理。对于每个时间片,利用历史时间片所对应的累计历史请求下发量和对应单位时长的请求量上限,动态确定每个时间片对应的意图强度边界。从而在当前时间片内到达请求时,利用该请求所对应的意图强度值和动态确定的意图强度边界对请求进行负载控制,可以实现对请求进行柔性的负载控制,可尽量避免检索服务周期性失效的问题。

在一个实施例中,确定模块1102还用于在当前时间片内,当请求到达后,确定当前的单位时长所对应的请求下发总量;负载控制模块1103还用于当请求下发总量超过对应单位时长的请求上限量时,直接拒绝请求。

上述实施例中,服务器可通过比较当前的单位时长所对应的请求下发总量和单位时长的请求上限量的大小来判断当前的检索子系统是否达到负载饱和状态。当检索子系统当前达到负载饱和状态时则能快速拒绝请求,提高了负载控制效率。

在一个实施例中,确定模块1102还用于根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的可下发请求余量;获取当前时间片所对应的预测请求到达量;根据可下发请求余量和预测请求到达量确定当前时间片所对应的意图强度边界。

上述实施例中,根据可下发请求余量和预测请求到达量来确定当前时间片所对应的意图强度边界,使得所确定的意图强度边界能随当前检索子系统的实际负载情况而变化,更能反应当前时间片服务器的实际工作情况,使得根据意图强度边界进行负载控制时能更准确。

在一个实施例中,确定模块1102还用于当累计历史请求下发量小于对应单位时长的请求上限量时,将请求上限量和累计历史请求下发量的差作为当前时间片所对应的可下发请求余量,或者将差与预设正整数的和作为当前时间片所对应的可下发请求余量;预设正整数的取值范围是[1,2]。

在一个实施例中,确定模块1102还用于当累计历史请求下发量大于或等于对应单位时长的请求上限量时,将零或预设正整数作为当前时间片所对应的可下发请求余量。

上述实施例中,服务器可预先设置一个或两个预留的请求余量。当累计历史请求下发量大于或等于对应单位时长的请求上限量时,服务器可将零或者预先设置的请求余量作为当前时间片所对应的可下发请求余量,以保护服务器的临界检索服务能力,可以避免检索服务器临界失效的问题。

在一个实施例中,确定模块1102还用于获取当前时间片之前连续的多个历史时间片各自对应的历史请求下发到达量;根据获取的历史请求下发到达量之间的变化趋势,及多个历史时间片中最近的历史时间片对应的历史请求下发到达量,确定当前时间片对应的预测请求到达量。

上述实施例中,根据获取的历史请求到达量之间的变化趋势,确定当前时间片对应的预测请求到达量,使得预测的请求到达量的准确性更高。

在一个实施例中,确定模块1102还用于当多个历史时间片中最近的历史时间片所对应历史请求下发到达量最大时,或多个历史时间片各自对应的历史请求下发到达量均相同时,将最近的历史时间片所对应历史请求下发到达量作为当前时间片对应的预测请求到达量。

在一个实施例中,确定模块1102还用于当多个历史时间片中最近的历史时间片所对应历史请求下发到达量最小时,将比最近的历史时间片所对应历史请求下发到达量小的非负值作为当前时间片对应的预测请求到达量。

在一个实施例中,多个历史时间片包括第一历史时间片和第二历史时间片;第一历史时间片是当前时间片的前一时间片,对应第一历史请求下发到达量;第二历史时间片是第一历史时间片的前一时间片,对应第二历史请求下发到达量;确定模块1102还用于当第一历史请求下发到达量小于第二历史请求下发到达量、且第一历史请求下发到达量的两倍大于第二历史请求下发到达量时,将第一历史请求下发到达量的两倍减去第二历史请求下发到达量,得到当前时间片对应的预测请求到达量。

在一个实施例中,确定模块1102还用于当第一历史请求到达量的两倍小于第二历史请求到达量时,将零作为当前时间片对应的预测请求到达量。

上述实施例中,通过采用连续假设和微分假设,认为前后两个时间片内的请求到达量的变化率是一致的。通过历史请求到达量的变化率得到当前时间片所对应的预测请求到达量,使得预测请求到达量的准确性更高。并且,当请求到达量处于增大趋势时,采用保守预测策略对当前的请求到达量进行预测,避免服务器过早进入过载保护状态。反之,当请求到达量处于下降趋势时,考虑请求到达量的变化情况,可以及时从过载保护拒绝请求状态恢复到非过载状态。这样,可使得服务器能更及时、准确地进行负载控制。

在一个实施例中,确定模块1102还用于根据预测请求到达量和可下发请求余量的差,确定当前时间片所对应的期望请求拒绝量;根据期望请求拒绝量和预测请求到达量,得到当前时间片所对应的期望请求拒绝概率;根据期望请求拒绝概率和预设的意图强度边界概率分布,确定当前时间片所对应的意图强度边界。

上述实施例中,根据当前时间片所对应的预测请求到达量和可下发请求余量,可准确高效地确定期望请求拒绝概率。再将期望请求拒绝概率带入预设的意图强度边界概率分布中,即可准确、快速地确定与期望请求拒绝概率相对应的意图强度边界。

在一个实施例中,确定模块1102还用于当期望请求拒绝量小于或者等于零时,直接将请求确定为待下发的请求。

上述实施例中,当期望请求拒绝量小于或者等于零时,说明当前时间片所对应的预测到达的所有请求都无需拒绝,可直接将该请求确定为待下发请求,结束过载保护流程,提高了负载控制效率。

在一个实施例中,意图强度边界概率分布包括离散的意图强度边界与离散的请求拒绝概率的映射关系;确定模块1102还用于从意图强度边界概率分布所包括的离散的请求拒绝概率中,确定与期望请求拒绝概率匹配的请求拒绝概率;按照映射关系,确定匹配的请求拒绝概率所映射的离散的意图强度边界;根据所匹配的请求拒绝概率所映射的离散的意图强度边界确定当前时间片所对应的意图强度边界。

在一个实施例中,确定模块1102还用于当意图强度边界概率分布所包括的离散的请求拒绝概率中不存在等于期望请求拒绝概率的请求拒绝概率时,则从离散的请求拒绝概率中,筛选大于期望请求拒绝概率的最小请求拒绝概率,得到与期望请求拒绝概率匹配的请求拒绝概率。

在一个实施例中,确定模块1102还用于当意图强度边界概率分布所包括的离散的请求拒绝概率中存在等于期望请求拒绝概率的请求拒绝概率时,则将等于期望请求拒绝概率的请求拒绝概率作为与期望请求拒绝概率匹配的请求拒绝概率。

上述实施例中,从意图强度边界概率分布所包括的离散的请求拒绝概率中,选择与期望请求拒绝概率匹配的请求拒绝概率。再根据意图强度边界概率分布确定与该请求拒绝概率相对应的意图强度边界,使得确定的意图强度边界最接近当前时间片所期望的意图强度边界,进一步提高了负载控制的有效性。

在一个实施例中,确定模块1102还用于取根据所匹配的请求拒绝概率所映射的离散的意图强度边界和预设意图强度边界上限中的最小值,将最小值作为当前时间片所对应的意图强度边界。

在一个实施例中,如图12所示,请求负载控制装置1100还包括统计模块1104、划分模块1105。

统计模块1104,用于统计预设统计时长内的历史请求集合。

获取模块1101还用于获取历史请求集合中的历史请求各自所对应的历史意图强度值;历史意图强度值在意图强度边界范围内。

划分模块1105,用于从意图强度边界范围中划分出离散的意图强度边界。

统计模块1104还用于统计历史请求集合中所对应的历史意图强度值小于或等于各个离散的意图强度边界的数量。

确定模块1102还用于分别将对应于各个离散的意图强度边界统计的数量除以历史请求集合中历史请求的总数量,得到与各个离散的意图强度边界分布存在映射关系的离散的请求拒绝概率。

上述实施例中,根据预设时长内历史请求和各历史请求所对应的历史意图强度值,确定与各个离散的意图强度边界分布存在映射关系的离散的请求拒绝概率,使得根据期望拒绝概率所确定的意图强度边界的准确性高,能很好地代表了当前时间片所对应的意图强度边界,进而提高了负载控制的准确性。

在一个实施例中,负载控制模块1103还用于从意图强度边界概率分布所包括的离散的请求拒绝概率中,获取小于最小请求拒绝概率的最大请求拒绝概率;按照映射关系,确定最大请求拒绝概率对应的低阶意图强度边界;获取当前时间片所对应的拒绝请求控制概率;当意图强度值大于或等于低阶意图强度边界,且小于当前时间片所对应的意图强度边界请求拒绝概率时,按照拒绝请求控制概率对当前时间片内到达的请求进行负载控制。

在一个实施例中,负载控制模块1103还用于计算最小请求拒绝概率与最大请求拒绝概率之间的第一差;计算期望请求拒绝概率与最大请求拒绝概率之间的第二差;将第一差和第二差的商作为当前时间片所对应的拒绝请求控制概率。

上述实施例中,当意图强度值大于或等于低阶意图强度边界,且小于当前时间片所对应的意图强度边界时,按照拒绝请求控制概率对当前时间片内到达的请求进行拒绝或者下发,这样分层对请求进行负载控制可提高服务器检索服务的有效性。

在一个实施例中,负载控制模块1103还用于当意图强度值小于低阶意图强度边界时,直接拒绝请求。

在一个实施例中,负载控制模块1103还用于统计按照拒绝请求控制概率拒绝的请求量和当前时间片内当意图强度值小于低阶意图强度边界时直接拒绝的请求量,得到预期请求拒绝量;当预期请求拒绝量大于期望请求拒绝量,且当前的单位时长所对应的请求下发总量小于请求上限量时,则将当前判定需拒绝的请求确定为待下发的请求。

在一个实施例中,负载控制模块1103还用于统计当前的单位时长所对应的已下发请求量;在当前待下发的请求的量与已下发请求量的和未超过请求上限量时,将当前待下发的请求下发。

在一个实施例中,负载控制模块1103还用于当意图强度值大于当前时间片所对应的意图强度边界时,将请求确定为待下发的请求;当待下发的请求满足下发条件时,将当前待下发的请求下发。

上述实施例中,根据当前时间片内请求所对应的意图强度值分别与低阶意图强度边界和意图强度边界的大小关系,对当前时间片内到达的请求进行分层拒绝,可对当前时间片内到达的请求进行灵活、有效的负载控制。

在一个实施例中,意图强度值、累计历史请求下发量、请求上限量和意图强度边界均与检索类目相对应;负载控制模块1103还用于根据对应相同检索类目的意图强度值和意图强度边界的大小关系,并对应于相同检索类目所对应的检索子系统,对当前时间片内到达的请求进行负载控制。

如图13所述,在一个实施例中,提供了一种请求负载控制方法,本实施例主要以该方法应用于上述图1中的服务器120来举例说明。参照图13,该请求负载控制方法具体包括如下步骤:

s1302,获取检索子系统的负载状态。

其中,负载状态是检索子系统中资源消耗的状态。负载状态比如可以是高负载状态、低负载状态或者空闲状态。具体地,服务器可直接接收检索子系统反馈的自身负载状态。或者服务器可通过实时监测检索子系统的工作状态来获取检索子系统的负载状态。服务器还可以通过检测检索子系统当前的负载余量来获取检索子系统的负载状态。步骤s1302可以周期性执行。

s1304,当负载状态满足预设条件时,获取当前时间片内到达的请求对应于检索子系统的意图强度值。

其中,预设条件是负载状态为高负载状态或服务器接收到开启负载控制指令等。高负载状态是负载量等于或大于预设阈值。具体地,当负载状态满足预设条件时,服务器获取当前时间片内到达的请求对应于检索子系统的意图强度值。

在一个实施例中,当负载状态不满足预设条件时,例如检索子系统处于负载较小或空闲状态,则服务器不执行获取当前时间片内到达的请求对应于检索子系统的意图强度值及后续步骤。

s1306,按照所述意图强度值所满足的负载控制条件对所述请求进行负载控制。

其中,负载控制条件是对请求进行负载控制的条件。负载控制条件具体可以是当请求对应于检索子系统的意图强度值大于或等于意图强度阈值时,对请求进行下发,当请求的意图强度值小于预设的意图强度值时,直接拒绝请求。其中,意图强度阈值可是预先设置好的值,也可以是根据当前请求的实际到达量而动态变化的值,还可以是服务器根据历史请求到达和历史请求下发的情况而计算出的值。

具体地,服务器在获取到当前时间片内到达的请求对应于检索子系统的意图强度值后,判断意图强度值所满足的负载控制条件,对请求进行对应的负载控制。

上述请求负载控制方法,当检索子系统的负载状态满足预设条件时,才对当前时间片内到达的请求,按照意图强度值所满足的负载控制条件进行负载控制。这样根据检索子系统的负载状态有选择性地对请求进行负载控制,可在预设条件下才执行请求负载控制方法,能减轻计算压力并节省资源,并有效地实现系统过载保护。

在一个实施例中,步骤s1306包括:按照意图强度值和预设的意图强度阈值的大小关系,对当前时间片内到达的请求进行负载控制;或者,确定预设数量的历史时间片所对应的累计历史请求下发量;预设数量的历史时间片与当前时间片构成当前的单位时长;获取对应单位时长的请求上限量;根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界;根据意图强度值和意图强度边界的大小关系,将请求对应于检索子系统进行负载控制。

在一个实施例中,服务器可预先设置意图强度阈值,按照当前时间片到达的请求的意图强度值与预设的意图强度阈值的大小关系,对请求进行负载控制。例如,当意图强度值可量化时,预先设置意图强度阈值m,当请求的意图强度值大于或等于m时,确定该请求为待下发的请求;当请求的意图强度值小于m时,则拒绝该请求。

在一个实施例中,服务器可确定预设数量的历史时间片所对应的累计历史请求下发量;预设数量的历史时间片与当前时间片构成当前的单位时长;获取对应单位时长的请求上限量;根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界;根据意图强度值和意图强度边界的大小关系,将请求对应于检索子系统进行负载控制。

上述实施例中,当检索子系统的负载状态满足预设条件时,可利用预先设置的意图强度阈值或者动态确定意图强度边界来对请求进行负载控制。其中,从单位时长中划分出更细粒度的时间片,以时间片为滑动窗口进行处理。对于每个时间片,利用历史时间片所对应的累计历史请求下发量和对应单位时长的请求量上限,动态确定每个时间片对应的意图强度边界。从而在当前时间片内到达请求时,利用该请求所对应的意图强度值和动态确定的意图强度边界对请求进行负载控制,可以实现对请求进行柔性的负载控制,可尽量避免检索服务周期性失效的问题。

如图14所示,在一个实施例中,提供了一种请求负载控制装置1400,包括获取模块1401、负载控制模块1402。

获取模块1401,用于获取检索子系统的负载状态。

获取模块1401,用于当负载状态满足预设条件时,获取当前时间片内到达的请求对应于检索子系统的意图强度值。

负载控制模块1402,用于按照意图强度值所满足的负载控制条件对请求进行负载控制。

上述请求负载控制装置,当检索子系统的负载状态满足预设条件时,才对当前时间片内到达的请求,按照意图强度值所满足的负载控制条件进行负载控制。这样根据检索子系统的负载状态有选择性地对请求进行负载控制,可在预设条件下才执行请求负载控制方法,能减轻计算压力并节省资源,并有效地实现系统过载保护。

图15示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的服务器120。如图15所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现请求负载控制方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行请求负载控制方法。本领域技术人员可以理解,图y中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的请求负载控制装置可以实现为一种计算机程序的形式,计算机程序可在如图15所示的计算机设备上运行。计算机设备的存储器中可存储组成该请求负载控制装置的各个程序模块,比如,图11所示的获取模块1101、确定模块1102和负载控制模块1103。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的请求负载控制方法中的步骤。

例如,图15所示的计算机设备可以通过如图11所示的请求负载控制装置中的获取模块1101执行步骤s202和s206。计算机设备可通过确定模块1102执行步骤s204和s208。计算机设备可通过负载控制模块执行步骤s210。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中储存有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:获取当前时间片内到达的请求所对应的意图强度值;确定预设数量的历史时间片所对应的累计历史请求下发量;预设数量的历史时间片与当前时间片构成当前的单位时长;获取对应单位时长的请求上限量;根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界;根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制。

在一个实施例中,计算机程序使得还处理器执行以下步骤:在当前时间片内,当请求到达后,确定当前的单位时长所对应的请求下发总量;当请求下发总量超过对应单位时长的请求上限量时,直接拒绝请求。

在一个实施例中,计算机程序使得处理器在执行根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界的步骤时具体执行以下步骤:根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的可下发请求余量;获取当前时间片所对应的预测请求到达量;根据可下发请求余量和预测请求到达量确定当前时间片所对应的意图强度边界。

在一个实施例中,计算机程序使得处理器在执行根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的可下发请求余量的步骤时具体执行以下步骤:当累计历史请求下发量小于对应单位时长的请求上限量时,将请求上限量和累计历史请求下发量的差作为当前时间片所对应的可下发请求余量,或者将差与预设正整数的和作为当前时间片所对应的可下发请求余量;预设正整数的取值范围是[1,2]。

在一个实施例中,计算机程序使得处理器在执行根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的可下发请求余量的步骤时具体执行以下步骤:当累计历史请求下发量大于或等于对应单位时长的请求上限量时,将零或预设正整数作为当前时间片所对应的可下发请求余量。

在一个实施例中,计算机程序使得处理器在执行获取当前时间片所对应的预测请求到达量的步骤时具体执行以下步骤:获取当前时间片之前连续的多个历史时间片各自对应的历史请求下发到达量;根据获取的历史请求到达量之间的变化趋势,及多个历史时间片中最近的历史时间片对应的历史请求到达量,确定当前时间片对应的预测请求到达量。

在一个实施例中,计算机程序使得处理器在执行根据获取的历史请求到达量之间的变化趋势,及多个历史时间片中最近的历史时间片对应的历史请求到达量,确定当前时间片对应的预测请求到达量的步骤时具体执行以下步骤:当多个历史时间片中最近的历史时间片所对应历史请求到达量最大时,或多个历史时间片各自对应的历史请求到达量均相同时,将最近的历史时间片所对应历史请求到达量作为当前时间片对应的预测请求到达量。

在一个实施例中,计算机程序使得处理器在执行根据获取的历史请求到达量之间的变化趋势,及多个历史时间片中最近的历史时间片对应的历史请求到达量,确定当前时间片对应的预测请求到达量的步骤时具体执行以下步骤:当多个历史时间片中最近的历史时间片所对应历史请求到达量最小时,将比最近的历史时间片所对应历史请求到达量小的非负值作为当前时间片对应的预测请求到达量。

在一个实施例中,多个历史时间片包括第一历史时间片和第二历史时间片;第一历史时间片是当前时间片的前一时间片,对应第一历史请求到达量;第二历史时间片是第一历史时间片的前一时间片,对应第二历史请求到达量;计算机程序使得处理器在执行当多个历史时间片中最近的历史时间片所对应历史请求到达量最小时,将比最近的历史时间片所对应历史请求到达量小的非负值作为当前时间片对应的预测请求到达量的步骤时具体执行以下步骤:当第一历史请求到达量小于第二历史请求到达量、且第一历史请求到达量的两倍大于第二历史请求到达量时,将第一历史请求到达量的两倍减去第二历史请求到达量,得到当前时间片对应的预测请求到达量。

在一个实施例中,计算机程序使得处理器在执行当多个历史时间片中最近的历史时间片所对应历史请求到达量最小时,将比最近的历史时间片所对应历史请求到达量小的非负值作为当前时间片对应的预测请求到达量的步骤时具体执行以下步骤:当第一历史请求到达量的两倍小于第二历史请求到达量时,将零作为当前时间片对应的预测请求到达量。

在一个实施例中,计算机程序使得处理器在执行根据可下发请求余量和预测请求到达量确定当前时间片所对应的意图强度边界的步骤时具体执行以下步骤:根据预测请求到达量和可下发请求余量的差,确定当前时间片所对应的期望请求拒绝量;根据期望请求拒绝量和预测请求到达量,得到当前时间片所对应的期望请求拒绝概率;根据期望请求拒绝概率和预设的意图强度边界概率分布,确定当前时间片所对应的意图强度边界。

在一个实施例中,计算机程序还使得处理器执行以下步骤:当期望请求拒绝量小于或者等于零时,直接将请求确定为待下发的请求。

在一个实施例中,意图强度边界概率分布包括离散的意图强度边界与离散的请求拒绝概率的映射关系;计算机程序使得处理器在执行根据期望请求拒绝概率和预设的意图强度边界概率分布,确定当前时间片所对应的意图强度边界的步骤时具体执行以下步骤:从意图强度边界概率分布所包括的离散的请求拒绝概率中,确定与期望请求拒绝概率匹配的请求拒绝概率;按照映射关系,确定匹配的请求拒绝概率所映射的离散的意图强度边界;根据所匹配的请求拒绝概率所映射的离散的意图强度边界确定当前时间片所对应的意图强度边界。

在一个实施例中,计算机程序还使得处理器执行以下步骤:统计预设统计时长内的历史请求集合;获取历史请求集合中的历史请求各自所对应的历史意图强度值;历史意图强度值在意图强度边界范围内;从意图强度边界范围中划分出离散的意图强度边界;统计历史请求集合中所对应的历史意图强度值小于或等于各个离散的意图强度边界的数量;分别将对应于各个离散的意图强度边界统计的数量除以历史请求集合中历史请求的总数量,得到与各个离散的意图强度边界分布存在映射关系的离散的请求拒绝概率。

在一个实施例中,计算机程序使得处理器在执行根据所匹配的请求拒绝概率所映射的离散的意图强度边界确定当前时间片所对应的意图强度边界的步骤时具体执行以下步骤:取根据所匹配的请求拒绝概率所映射的离散的意图强度边界和预设意图强度边界上限中的最小值,将最小值作为当前时间片所对应的意图强度边界。

在一个实施例中,计算机程序使得处理器在执行从意图强度边界概率分布所包括的离散的请求拒绝概率中,确定与期望请求拒绝概率匹配的请求拒绝概率的步骤时具体执行以下步骤:当意图强度边界概率分布所包括的离散的请求拒绝概率中不存在等于期望请求拒绝概率的请求拒绝概率时,则从离散的请求拒绝概率中,筛选大于期望请求拒绝概率的最小请求拒绝概率,得到与期望请求拒绝概率匹配的请求拒绝概率。

在一个实施例中,计算机程序使得处理器在执行从意图强度边界概率分布所包括的离散的请求拒绝概率中,确定与期望请求拒绝概率匹配的请求拒绝概率的步骤时具体执行以下步骤:当意图强度边界概率分布所包括的离散的请求拒绝概率中存在等于期望请求拒绝概率的请求拒绝概率时,则将等于期望请求拒绝概率的请求拒绝概率作为与期望请求拒绝概率匹配的请求拒绝概率。

在一个实施例中,计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:从意图强度边界概率分布所包括的离散的请求拒绝概率中,获取小于最小请求拒绝概率的最大请求拒绝概率;按照映射关系,确定最大请求拒绝概率对应的低阶意图强度边界;获取当前时间片所对应的拒绝请求控制概率;当意图强度值大于或等于低阶意图强度边界,且小于当前时间片所对应的意图强度边界时,按照拒绝请求控制概率对当前时间片内到达的请求进行负载控制。

在一个实施例中,计算机程序使得处理器在执行获取当前时间片所对应的拒绝请求控制概率的步骤时具体执行以下步骤:计算最小请求拒绝概率与最大请求拒绝概率之间的第一差;计算期望请求拒绝概率与最大请求拒绝概率之间的第二差;将第一差和第二差的商作为当前时间片所对应的拒绝请求控制概率。

在一个实施例中,计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:当意图强度值小于低阶意图强度边界时,直接拒绝请求。

在一个实施例中,计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:统计按照拒绝请求控制概率拒绝的请求量和当前时间片内当意图强度值小于低阶意图强度边界时直接拒绝的请求量,得到预期请求拒绝量;当预期请求拒绝量大于期望请求拒绝量,且当前的单位时长所对应的请求下发总量小于请求上限量时,则将当前判定需拒绝的请求确定为待下发的请求。

在一个实施例中,计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:统计当前的单位时长所对应的已下发请求量;在当前待下发的请求的量与已下发请求量的和未超过请求上限量时,将当前待下发的请求下发。

在一个实施例中,计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:当意图强度值大于当前时间片所对应的意图强度边界时,将请求确定为待下发的请求;当待下发的请求满足下发条件时,将当前待下发的请求下发。

在一个实施例中,意图强度值、累计历史请求下发量、请求上限量和意图强度边界均与检索类目相对应;计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:根据对应相同检索类目的意图强度值和意图强度边界的大小关系,并对应于相同检索类目所对应的检索子系统,对当前时间片内到达的请求进行负载控制。

上述计算机设备,从单位时长中划分出更细粒度的时间片,以时间片为滑动窗口进行处理。对于每个时间片,利用历史时间片所对应的累计历史请求下发量和对应单位时长的请求量上限,动态确定每个时间片对应的意图强度边界。从而在当前时间片内到达请求时,利用该请求所对应的意图强度值和动态确定的意图强度边界对请求进行负载控制,可以实现对请求进行柔性的负载控制,可尽量避免检索服务周期性失效的问题。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中储存有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:获取检索子系统的负载状态;当负载状态满足预设条件时,获取当前时间片内到达的请求对应于检索子系统的意图强度值;按照意图强度值所满足的负载控制条件对请求进行负载控制。

在一个实施例中,计算机程序使得处理器在执行按照意图强度值所满足的负载控制条件对请求进行负载控制的步骤时具体执行以下步骤:按照意图强度值和预设的意图强度阈值的大小关系,对当前时间片内到达的请求进行负载控制;或者,确定预设数量的历史时间片所对应的累计历史请求下发量;预设数量的历史时间片与当前时间片构成当前的单位时长;获取对应单位时长的请求上限量;根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界;根据意图强度值和意图强度边界的大小关系,将请求对应于检索子系统进行负载控制。

上述计算机设备,当检索子系统的负载状态满足预设条件时,才对当前时间片内到达的请求,按照意图强度值所满足的负载控制条件进行负载控制。这样根据检索子系统的负载状态有选择性地对请求进行负载控制,可在预设条件下才执行请求负载控制方法,能减轻计算压力并节省资源,并有效地实现系统过载保护。

一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现以下步骤:获取当前时间片内到达的请求所对应的意图强度值;确定预设数量的历史时间片所对应的累计历史请求下发量;预设数量的历史时间片与当前时间片构成当前的单位时长;获取对应单位时长的请求上限量;根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界;根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制。

在一个实施例中,计算机程序使得还处理器执行以下步骤:在当前时间片内,当请求到达后,确定当前的单位时长所对应的请求下发总量;当请求下发总量超过对应单位时长的请求上限量时,直接拒绝请求。

在一个实施例中,计算机程序使得处理器在执行根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界的步骤时具体执行以下步骤:根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的可下发请求余量;获取当前时间片所对应的预测请求到达量;根据可下发请求余量和预测请求到达量确定当前时间片所对应的意图强度边界。

在一个实施例中,计算机程序使得处理器在执行根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的可下发请求余量的步骤时具体执行以下步骤:当累计历史请求下发量小于对应单位时长的请求上限量时,将请求上限量和累计历史请求下发量的差作为当前时间片所对应的可下发请求余量,或者将差与预设正整数的和作为当前时间片所对应的可下发请求余量;预设正整数的取值范围是[1,2]。

在一个实施例中,计算机程序使得处理器在执行根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的可下发请求余量的步骤时具体执行以下步骤:当累计历史请求下发量大于或等于对应单位时长的请求上限量时,将零或预设正整数作为当前时间片所对应的可下发请求余量。

在一个实施例中,计算机程序使得处理器在执行获取当前时间片所对应的预测请求到达量的步骤时具体执行以下步骤:获取当前时间片之前连续的多个历史时间片各自对应的历史请求下发到达量;根据获取的历史请求到达量之间的变化趋势,及多个历史时间片中最近的历史时间片对应的历史请求到达量,确定当前时间片对应的预测请求到达量。

在一个实施例中,计算机程序使得处理器在执行根据获取的历史请求到达量之间的变化趋势,及多个历史时间片中最近的历史时间片对应的历史请求到达量,确定当前时间片对应的预测请求到达量的步骤时具体执行以下步骤:当多个历史时间片中最近的历史时间片所对应历史请求到达量最大时,或多个历史时间片各自对应的历史请求到达量均相同时,将最近的历史时间片所对应历史请求到达量作为当前时间片对应的预测请求到达量。

在一个实施例中,计算机程序使得处理器在执行根据获取的历史请求到达量之间的变化趋势,及多个历史时间片中最近的历史时间片对应的历史请求到达量,确定当前时间片对应的预测请求到达量的步骤时具体执行以下步骤:当多个历史时间片中最近的历史时间片所对应历史请求到达量最小时,将比最近的历史时间片所对应历史请求到达量小的非负值作为当前时间片对应的预测请求到达量。

在一个实施例中,多个历史时间片包括第一历史时间片和第二历史时间片;第一历史时间片是当前时间片的前一时间片,对应第一历史请求到达量;第二历史时间片是第一历史时间片的前一时间片,对应第二历史请求到达量;计算机程序使得处理器在执行当多个历史时间片中最近的历史时间片所对应历史请求到达量最小时,将比最近的历史时间片所对应历史请求到达量小的非负值作为当前时间片对应的预测请求到达量的步骤时具体执行以下步骤:当第一历史请求到达量小于第二历史请求到达量、且第一历史请求到达量的两倍大于第二历史请求到达量时,将第一历史请求到达量的两倍减去第二历史请求到达量,得到当前时间片对应的预测请求到达量。

在一个实施例中,计算机程序使得处理器在执行当多个历史时间片中最近的历史时间片所对应历史请求到达量最小时,将比最近的历史时间片所对应历史请求到达量小的非负值作为当前时间片对应的预测请求到达量的步骤时具体执行以下步骤:当第一历史请求到达量的两倍小于第二历史请求到达量时,将零作为当前时间片对应的预测请求到达量。

在一个实施例中,计算机程序使得处理器在执行根据可下发请求余量和预测请求到达量确定当前时间片所对应的意图强度边界的步骤时具体执行以下步骤:根据预测请求到达量和可下发请求余量的差,确定当前时间片所对应的期望请求拒绝量;根据期望请求拒绝量和预测请求到达量,得到当前时间片所对应的期望请求拒绝概率;根据期望请求拒绝概率和预设的意图强度边界概率分布,确定当前时间片所对应的意图强度边界。

在一个实施例中,计算机程序还使得处理器执行以下步骤:当期望请求拒绝量小于或者等于零时,直接将请求确定为待下发的请求。

在一个实施例中,意图强度边界概率分布包括离散的意图强度边界与离散的请求拒绝概率的映射关系;计算机程序使得处理器在执行根据期望请求拒绝概率和预设的意图强度边界概率分布,确定当前时间片所对应的意图强度边界的步骤时具体执行以下步骤:从意图强度边界概率分布所包括的离散的请求拒绝概率中,确定与期望请求拒绝概率匹配的请求拒绝概率;按照映射关系,确定匹配的请求拒绝概率所映射的离散的意图强度边界;根据所匹配的请求拒绝概率所映射的离散的意图强度边界确定当前时间片所对应的意图强度边界。

在一个实施例中,计算机程序还使得处理器执行以下步骤:统计预设统计时长内的历史请求集合;获取历史请求集合中的历史请求各自所对应的历史意图强度值;历史意图强度值在意图强度边界范围内;从意图强度边界范围中划分出离散的意图强度边界;统计历史请求集合中所对应的历史意图强度值小于或等于各个离散的意图强度边界的数量;分别将对应于各个离散的意图强度边界统计的数量除以历史请求集合中历史请求的总数量,得到与各个离散的意图强度边界分布存在映射关系的离散的请求拒绝概率。

在一个实施例中,计算机程序使得处理器在执行根据所匹配的请求拒绝概率所映射的离散的意图强度边界确定当前时间片所对应的意图强度边界的步骤时具体执行以下步骤:取根据所匹配的请求拒绝概率所映射的离散的意图强度边界和预设意图强度边界上限中的最小值,将最小值作为当前时间片所对应的意图强度边界。

在一个实施例中,计算机程序使得处理器在执行从意图强度边界概率分布所包括的离散的请求拒绝概率中,确定与期望请求拒绝概率匹配的请求拒绝概率的步骤时具体执行以下步骤:当意图强度边界概率分布所包括的离散的请求拒绝概率中不存在等于期望请求拒绝概率的请求拒绝概率时,则从离散的请求拒绝概率中,筛选大于期望请求拒绝概率的最小请求拒绝概率,得到与期望请求拒绝概率匹配的请求拒绝概率。

在一个实施例中,计算机程序使得处理器在执行从意图强度边界概率分布所包括的离散的请求拒绝概率中,确定与期望请求拒绝概率匹配的请求拒绝概率的步骤时具体执行以下步骤:当意图强度边界概率分布所包括的离散的请求拒绝概率中存在等于期望请求拒绝概率的请求拒绝概率时,则将等于期望请求拒绝概率的请求拒绝概率作为与期望请求拒绝概率匹配的请求拒绝概率。

在一个实施例中,计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:从意图强度边界概率分布所包括的离散的请求拒绝概率中,获取小于最小请求拒绝概率的最大请求拒绝概率;按照映射关系,确定最大请求拒绝概率对应的低阶意图强度边界;获取当前时间片所对应的拒绝请求控制概率;当意图强度值大于或等于低阶意图强度边界,且小于当前时间片所对应的意图强度边界时,按照拒绝请求控制概率对当前时间片内到达的请求进行负载控制。

在一个实施例中,计算机程序使得处理器在执行获取当前时间片所对应的拒绝请求控制概率的步骤时具体执行以下步骤:计算最小请求拒绝概率与最大请求拒绝概率之间的第一差;计算期望请求拒绝概率与最大请求拒绝概率之间的第二差;将第一差和第二差的商作为当前时间片所对应的拒绝请求控制概率。

在一个实施例中,计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:当意图强度值小于低阶意图强度边界时,直接拒绝请求。

在一个实施例中,计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:统计按照拒绝请求控制概率拒绝的请求量和当前时间片内当意图强度值小于低阶意图强度边界时直接拒绝的请求量,得到预期请求拒绝量;当预期请求拒绝量大于期望请求拒绝量,且当前的单位时长所对应的请求下发总量小于请求上限量时,则将当前判定需拒绝的请求确定为待下发的请求。

在一个实施例中,计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:统计当前的单位时长所对应的已下发请求量;在当前待下发的请求的量与已下发请求量的和未超过请求上限量时,将当前待下发的请求下发。

在一个实施例中,计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:当意图强度值大于当前时间片所对应的意图强度边界时,将请求确定为待下发的请求;当待下发的请求满足下发条件时,将当前待下发的请求下发。

在一个实施例中,意图强度值、累计历史请求下发量、请求上限量和意图强度边界均与检索类目相对应;计算机程序使得处理器在执行根据意图强度值和意图强度边界的大小关系,对当前时间片内到达的请求进行负载控制的步骤时具体执行以下步骤:根据对应相同检索类目的意图强度值和意图强度边界的大小关系,并对应于相同检索类目所对应的检索子系统,对当前时间片内到达的请求进行负载控制。

上述计算机可读存储介质,从单位时长中划分出更细粒度的时间片,以时间片为滑动窗口进行处理。对于每个时间片,利用历史时间片所对应的累计历史请求下发量和对应单位时长的请求量上限,动态确定每个时间片对应的意图强度边界。从而在当前时间片内到达请求时,利用该请求所对应的意图强度值和动态确定的意图强度边界对请求进行负载控制,可以实现对请求进行柔性的负载控制,可尽量避免检索服务周期性失效的问题。

一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现以下步骤:获取检索子系统的负载状态;当负载状态满足预设条件时,获取当前时间片内到达的请求对应于检索子系统的意图强度值;按照意图强度值所满足的负载控制条件对请求进行负载控制。

在一个实施例中,计算机程序使得处理器在执行按照意图强度值所满足的负载控制条件对请求进行负载控制的步骤时具体执行以下步骤:按照意图强度值和预设的意图强度阈值的大小关系,对当前时间片内到达的请求进行负载控制;或者,确定预设数量的历史时间片所对应的累计历史请求下发量;预设数量的历史时间片与当前时间片构成当前的单位时长;获取对应单位时长的请求上限量;根据累计历史请求下发量和对应单位时长的请求上限量,确定当前时间片所对应的意图强度边界;根据意图强度值和意图强度边界的大小关系,将请求对应于检索子系统进行负载控制。

上述计算机可读存储介质,当检索子系统的负载状态满足预设条件时,才对当前时间片内到达的请求,按照意图强度值所满足的负载控制条件进行负载控制。这样根据检索子系统的负载状态有选择性地对请求进行负载控制,可在预设条件下才执行请求负载控制方法,能减轻计算压力并节省资源,并有效地实现系统过载保护。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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