用于处理查询输入的方法、装置、设备和可读存储介质转让专利

申请号 : CN202111067443.9

文献号 : CN113791904B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 甄真尹劲草陈佳捷

申请人 : 北京百度网讯科技有限公司

摘要 :

本公开提供了用于处理查询输入的方法、装置、设备和可读存储介质,涉及数据处理技术领域,尤其涉及智能搜索和深度学习领域。具体实现方案为:确定用于指示当前查询输入的计算量的第一指示;获取用于指示可用于处理查询输入的多个服务器的性能的第二指示和用于指示多个服务器是否已被分配了查询输入的第三指示;以及基于第一指示、第二指示和第三指示,从多个服务器中选择未被分配查询输入的目标服务器来处理当前查询输入。通过该方法,可以减少查询输入的延迟,提高了用户体验,相对于搜索引擎具备通用性,并且还改进了服务器迁移容忍性。

权利要求 :

1.一种用于处理查询输入的方法,包括:

确定用于指示当前查询输入的计算量的第一指示;

获取用于指示可用于处理查询输入的多个服务器的性能的第二指示和用于指示所述多个服务器是否已被分配了先前查询输入的第三指示;以及基于所述第一指示、所述第二指示和所述第三指示,从所述多个服务器中确定用于处理所述当前查询输入的目标服务器,所述目标服务器未被分配所述先前查询输入,其中确定所述第一指示包括:接收所述当前查询输入;以及

将所述当前查询输入应用于计算量预测模型来获得所述第一指示,所述计算量预测模型是基于历史查询输入和对应的延时得到的,其中确定所述目标服务器包括:

将第一指示确定为针对所述当前查询输入的计算量指示值;

将所述计算量指示值与第二阈值进行比较;以及

基于所述比较的结果,从所述多个服务器的第一服务器子组或所述多个服务器的第二服务器子组中选择未被分配查询任务的服务器作为所述目标服务器,所述第一服务器子组中的服务器的性能优于所述第二服务器子组中的服务器的性能,其中选择未被分配查询任务的目标服务器包括:

如果确定所述计算量指示值小于等于所述第二阈值,则从所述第二服务器子组中选择未被分配查询任务的服务器作为所述目标服务器;以及如果确定所述计算量指示值大于所述第二阈值,则从所述第一服务器子组中选择未被分配查询任务的服务器作为所述目标服务器。

2.根据权利要求1所述的方法,其中获取所述第二指示和所述第三指示包括:获取所述多个服务器中的每个服务器的资源配置信息;以及基于所述资源配置信息来确定针对所述多个服务器的性能的第二指示。

3.根据权利要求1所述的方法,其中确定所述目标服务器包括:将第一指示确定为针对所述当前查询输入的计算量指示值;

基于所述第三指示,从所述多个服务器确定出未被分配所述先前查询输入的一组服务器;

基于所述第二指示,确定针对所述一组服务器中的每个服务器的性能指示值;以及基于所述计算量指示值和所述性能指示值,从所述一组服务器中确定所述目标服务器。

4.根据权利要求3所述的方法,其中从所述一组服务器中确定所述目标服务器包括:确定所述计算量指示值和所述性能指示值两者与预定值的接近程度;以及基于所述接近程度来从所述一组服务器中确定出所述目标服务器。

5.根据权利要求1所述的方法,其中确定所述目标服务器包括:基于所述第二指示确定针对所述多个服务器中的每个服务器的性能指示值;

将所述性能指示值与第一阈值进行比较以将所述多个服务器划分为第一服务器子组和第二服务器子组。

6.根据权利要求1所述的方法,还包括:

如果确定所述目标服务器被分配了所述当前查询输入,调整所述第三指示中的与所述目标服务器相对应的指示值。

7.根据权利要求6所述的方法,还包括:

确定所述第三指示是否指示所述多个服务器中的每个服务器均已被分配查询任务;以及如果确定所述多个服务器中的每个服务器均已被分配查询任务,将所述第三指示调整为指示所述多个服务器未被分配查询任务。

8.一种用于处理查询输入的装置,包括:

第一指示确定模块,被配置为确定用于指示当前查询输入的计算量的第一指示;

指示获取模块,被配置为获取用于指示可用于处理查询输入的多个服务器的性能的第二指示和用于指示所述多个服务器是否已被分配了先前查询输入的第三指示;以及查询输入处理模块,被配置为基于所述第一指示、所述第二指示和所述第三指示,从所述多个服务器中确定用于处理所述当前查询输入的目标服务器,所述目标服务器未被分配所述先前查询输入,其中所述第一指示确定模块包括:

接收模块,被配置为接收所述当前查询输入;以及

应用模块,被配置为将所述当前查询输入应用于计算量预测模型来获得所述第一指示,所述计算量预测模型是基于历史查询输入和对应的延时得到的,其中查询输入处理模块包括:

第二计算量指示值确定模块,被配置为将第一指示确定为针对所述当前查询输入的计算量指示值;

第二比较模块,被配置为将所述计算量指示值与第二阈值进行比较;以及结果处理模块,被配置为基于所述比较的结果,从所述多个服务器的第一服务器子组或所述多个服务器的第二服务器子组中选择未被分配查询任务的服务器作为所述目标服务器,所述第一服务器子组中的服务器的性能优于所述第二服务器子组中的服务器的性能,其中所述结果处理模块包括:

第一选择模块,被配置为如果确定所述计算量指示值小于等于所述第二阈值,则从所述第二服务器子组中选择未被分配查询任务的服务器作为所述目标服务器;以及第二选择模块,被配置为如果确定所述计算量指示值大于所述第二阈值,则从所述第一服务器子组中选择未被分配查询任务的服务器作为所述目标服务器。

9.根据权利要求8所述的装置,其中所述指示获取模块包括:资源配置信息获取模块,被配置为获取所述多个服务器中的每个服务器的资源配置信息;以及第二指示确定模块,被配置为基于所述资源配置信息来确定针对所述多个服务器的性能的第二指示。

10.根据权利要求8所述的装置,其中所述查询输入处理模块包括:第一计算量指示值确定模块,被配置为将第一指示确定为针对所述当前查询输入的计算量指示值;

一组服务器确定模块,被配置为基于所述第三指示,从所述多个服务器确定出未被分配所述先前查询输入的一组服务器;

第一性能指示值确定模块,被配置为基于所述第二指示,确定针对所述一组服务器中的每个服务器的性能指示值;以及目标服务器确定模块,被配置为基于所述计算量指示值和所述性能指示值,从所述一组服务器中确定所述目标服务器。

11.根据权利要求10所述的装置,其中目标服务器确定模块包括:接近程度确定模块,被配置为确定所述计算量指示值和所述性能指示值两者与预定值的接近程度;以及基于接近程度的服务器确定模块,被配置为基于所述接近程度来从所述一组服务器中确定出所述目标服务器。

12.根据权利要求8所述的装置,其中查询输入处理模块包括:第二性能指示值确定模块,被配置为基于所述第二指示确定针对所述多个服务器中的每个服务器的性能指示值;

第一比较模块,被配置为将所述性能指示值与第一阈值进行比较以将所述多个服务器划分为第一服务器子组和第二服务器子组。

13.根据权利要求8所述的装置,还包括:

第一调整模块,被配置为如果确定所述目标服务器被分配了所述当前查询输入,调整所述第三指示中的与所述目标服务器相对应的指示值。

14.根据权利要求13所述的装置,还包括:

已被分配查询任务确定模块,被配置为确定所述第三指示是否指示所述多个服务器中的每个服务器均已被分配查询任务;以及第二调整模块,被配置为如果确定所述多个服务器中的每个服务器均已被分配查询任务,将所述第三指示调整为指示所述多个服务器未被分配先前查询任务。

15.一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑7中任一项所述的方法。

16.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1‑7中任一项所述的方法。

说明书 :

用于处理查询输入的方法、装置、设备和可读存储介质

技术领域

[0001] 本公开涉及数据处理技术领域,尤其涉及智能搜索和深度学习的用于处理查询输入的方法、装置、设备和可读存储介质。

背景技术

[0002] 随着科技的发展,知识和信息的数量快速溶增加。为了便于用户快速的获取到所需的信息,通常可以通过搜索引擎来查找所需的信息。搜索引擎随着处理的信息量的增加也在快速的改进,以能及时的为用户提供各种信息。现在的常用的搜索引擎有谷歌的搜索引擎和百度的搜索引擎。这些常用的搜索引擎会从海量的资源中为用户检索相应的信息。虽然现在的搜索技术已经被广泛应用,然而,在进行数据或信息的搜索时,还存在许多的问题需要解决。

发明内容

[0003] 本公开提供了一种用于处理查询输入的方法、装置、设备以及可读存储介质。
[0004] 根据本公开的一方面,提供了一种处理查询输入的方法。该方法包括确定用于指示当前查询输入的计算量的第一指示;获取用于指示可用于处理查询输入的多个服务器的性能的第二指示和用于指示多个服务器是否已被分配了查询输入的第三指示;以及基于第一指示、第二指示和第三指示,从多个服务器中选择未被分配查询输入的目标服务器来处理当前查询输入。
[0005] 根据本公开的第二方面,提供了一种用于处理查询输入的装置。该装置包括第一指示确定模块,被配置为确定用于指示当前查询输入的计算量的第一指示;指示获取模块,被配置为获取用于指示可用于处理查询输入的多个服务器的性能的第二指示和用于指示多个服务器是否已被分配了查询输入的第三指示;以及查询输入处理模块,被配置为基于第一指示、第二指示和第三指示,从多个服务器中选择未被分配查询输入的目标服务器来处理当前查询输入。
[0006] 根据本公开的第三方面,提供了一种电子设备。该电子设备包括至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据本公开的第一方面的方法。
[0007] 根据本公开的第四方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行根据本公开的第一方面的方法。
[0008] 根据本公开的第五方面,提供一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据本公开的第一方面的方法的步骤。
[0009] 应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

[0010] 附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0011] 图1示出了本公开的多个实施例能够在其中实现的环境100的示意图;
[0012] 图2示出了根据本公开的一些实施例的用于处理查询输入的方法200的流程图;
[0013] 图3A示出了根据本公开的一些实施例的查询输入延迟与查询输入计算量的示例300A的示意图;
[0014] 图3B示出了根据本公开的一些实施例的查询输入延迟与查询输入计算量的示例300B的示意图;
[0015] 图4示出了根据本公开的一些实施例的查询输入分配的过程400的示意图;
[0016] 图5示出了根据本公开的一些实施例的用于处理查询输入的示例系统500的示意图;
[0017] 图6示出了根据本公开的一些实施例的用于处理查询输入的示例系统600的示意图;以及
[0018] 图7示出了根据本公开的一些实施例的用于处理查询输入的装置700的框图;以及[0019] 图8示出了能够实施本公开的多个实施例的设备800的框图。

具体实施方式

[0020] 以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0021] 在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
[0022] 在搜索引擎中,针对查询输入存在延迟长尾的问题,即响应时间比较长。这影响了用户体验,容易导致客户流失。优化查询输入的延迟长尾,对于提升用户体验非常有帮助。
[0023] 优化查询输入的延迟长尾的方法比较多。其可分为三大类。第一类是性能优化类方法。该类方法以通用的优化手段,优化模块自身的性能,并且控制查询输入的消耗。比如,增加CPU并行度、使用更先进的硬件、对召回结果进行激进截断、采用部分而非全量索引查询等。第二类主要是事后兜底类。该类方法尽量避免长尾的发生。第三类是负载均衡类。
[0024] 对于负载均衡类方法,又可以进一步细分为循环算法、随机负载均衡算法、基于后端延迟统计的权重调度算法和静态权重调度算法。然而对于循环算法、随机负载均衡算法,虽然使流量打散了,但是仍然存在将计算量大的查询输入调度到性能差的服务器上,导致长尾。不具备极致优化特性。对于基于后端延迟统计的权重调度算法,只适合在吞吐大的链路使用,一个特定的客户端和一个特定的服务器两次相邻的查询输入交互间隔需要很短。对于客户端和服务器副本数都非常多的链路是不适用的。不具备通用特性。对于静态权重调度算法,在云原生架构下,服务器实例会发生迁移,静态的权重存在失真。不具备服务器迁移容忍特性。
[0025] 为了至少解决上述问题,根据本公开的实施例,提出一种用于处理查询输入的改进方案。在该方案中,计算设备确定用于指示当前查询输入的计算量的第一指示,并且获取用于指示可用于处理查询输入的多个服务器的性能的第二指示和用于指示多个服务器是否已被分配了查询输入的第三指示。然后计算设备基于第一指示、第二指示和第三指示,从多个服务器中选择未被分配查询输入的目标服务器来处理当前查询输入。通过该方法,可以减少查询输入的延迟,提高了用户体验,相对于搜索引擎具备通用性,并且还改进了服务器迁移容忍性。
[0026] 图1示出了本公开的多个实施例能够在其中实现的环境100的示意图。该示例环境100包括计算设备104。示例环境100中还包括多个服务器110‑1、110‑2、……、110‑N,其中N为正整数,为了便于描述,也称为服务器110。
[0027] 计算设备104用于接收当前查询输入102并且确定将当前查询输入102发送到哪个服务器110。计算设备104包括但不限于个人计算机、服务器计算机、手持或膝上型设备、移动设备(诸如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费电子产品、小型计算机、大型计算机、包括上述系统或设备中的任意一个的分布式计算环境等。
[0028] 计算设备104利用计算量预测模型来预测当前查询输入的计算量。计算设备104还会获取到可用于处理查询输入的多个服务器的性能指示106,为了便于描述,也称为第二指示。在一些实施例中,服务器110的性能指示是通过收集服务器所在的机器的CPU型号来确定的。在一些实施例中,服务器110的性能指示是通过收集服务器所在的机器的CPU中的核的数目来确定的。上述示例仅是用于描述本公开,而非对本公开的具体限定。本领域技术人员可以依据需要设置任意合适的方式来确定服务器的性能。
[0029] 计算设备104还会获取服务器110是否被分配了查询输入的状态指示108,为了便于描述,也成为第三指示。备选地或附加地,该状态指示信息为一个周期内的服务器的状态指示信息。本公开中的“一个周期”是指为可用于处理查询输入的所有服务器中的每个服务器分配一个查询输入所对应的时间。在一个周期中一个服务器只被分配一个查询输入。在一些实施例中,设置用于指示服务器110的状态指示信息,其中每个位对应于一个服务器,当该位标记位0时,表明该服务器未分配查询输入。当该位标记位1时,表明该服务器被分配了查询输入。在一些实施例中,也可以设置其他的信息来区分服务器是否被分配了查询输入。上述示例仅是用于描述本公开,而非对本公开的具体限定。
[0030] 计算设备104根据获取的查询输入的计算量、服务器的性能以及服务器是否已分配查询任务,来从服务器110中选择一个为未配查询输入的服务器来处理查询输入102。
[0031] 服务器110可以为物理的服务器设备,也可以是部署在物理计算设备上的虚拟服务器。服务器110用于处理从计算设备104接收的查询输入。然后将处理结果返回给发起查询输入的用户。
[0032] 通过该方法,可以减少查询输入的延迟,提高了用户体验,相对于搜索引擎具备通用性,并且还改进了服务器迁移容忍性。
[0033] 上面结合图1描述了本公开的多个实施例的能够在其中实现的环境100。下面结合图2描述根据本公开的一些实施例的用于处理查询输入的方法200的流程图。图2中的方法200可以由图1中的计算设备104或任意合适的计算设备执行。
[0034] 在框202处,确定用于指示当前查询输入的计算量的第一指示。例如,图1中的计算设备104确定指示当前查询输入102的计算量的第一指示。
[0035] 在一些实施例中,计算设备104接收当前查询输入。然后计算设备将当前查询输入应用于计算量预测模型来获得第一指示。计算量预测模型是基于历史查询输入和对应的延时得到的。通过该方式,可以快速的确定当前查询输入的计算量。
[0036] 在一些实施例中,计算量预测模型是利用查询语义模型结合查询输入及对应的延迟时长来训练的。查询语义模型可以为百度的RENIE模型。
[0037] 在一些实施例中,可以获取历史查询输入和对应的时间延迟,然后根据时间延迟确定计算量的大小。例如,延迟的时长用于指示计算量或者选取最大的延迟时长作为基准,然后将其他时长与该基准时长的比值作为计算量的指示值。在接收到当前查询输入时,查找与当前查询输入对应的历史查询查询输入的时间延迟或计算量指示值,或利用相似的历史查询来确定当前查询输入的时间延迟或计算量指示值。上述示例仅是用于描述本公开,而非对本公开的具体限定。
[0038] 在框204处,获取用于指示可用于处理查询输入的多个服务器的性能的第二指示和用于指示多个服务器是否已被分配了查询输入的第三指示。例如,图1中的计算设备获取用于指示可用于处理查询输入的多个服务器的性能的第二指示和用于指示多个服务器是否已被分配了查询输入的第三指示。
[0039] 在一些实施例中,计算设备104获取多个服务器中的每个服务器的资源配置信息。然后计算设备基于资源配置信息来确定针对多个服务器的性能的第二指示。通过该方式,可以快速的确定出服务器的性能。
[0040] 在一些实施例中,计算设备104收集服务器的中央处理器CPU的信息,然后基于CPU的型号来确定服务器的性能。例如通过对服务器所在的机器CPU型号打分,每个型号具有不同的分值。其分值是通过对同一个基准查询输入在不同的服务器所在的机器上测试的时延来定义。这个过程可以周期性地进行。
[0041] 在一些实施例中,计算设备104收集服务器的中央处理器CPU的信息,然后基于CPU的中核的数目来确定服务器的性能。核数越多,性能越高。上述示例仅是用于描述本公开,而非对本共开的具体限定。
[0042] 在一些实施例中,计算设备104还手机服务器的状态信息。对于用于处理查询输入的多个服务器,每个服务器都有一个对应的指示值用于指示其是否被分配了查询输入。在一个示例中,如果分配了查询输入,该指示值设置为1,未分配查询输入,该指示值设置为0。在另一个示例中,以其他的标识信息来表示服务器是否被分配了查询输入。上述示例仅是用于描述本公开,而非对本公开的具体限定。
[0043] 在框206处,基于所述第一指示、所述第二指示和所述第三指示,从所述多个服务器中确定用于处理所述当前查询输入的目标服务器,所述目标服务器未被分配所述先前查询输入。
[0044] 在一些实施例中,计算设备104将第一指示确定为针对当前查询输入的计算量指示值。然后计算设备104利用第三指示,从多个服务器确定出未被分配查询输入的一组服务器。接下来,计算设备104根据第二指示,确定出该一组服务器中的每个服务器的性能指示值。最后基于计算量指示值和性能指示值,从一组服务器中确定目标服务器。通过该方式,可以快速的确定出处理查询输入的服务器。
[0045] 在一些实施例中,计算设备104确定计算量指示值和性能指示值两者与预定值的接近程度。例如确定计算量指示值和性能指示值的和与预定值的接近程度。然后基于接近程度来从一组服务器中确定出目标服务器。通过该方式,可以选出适于处理查询输入的服务器。
[0046] 在一些实施例中,计算设备104从第二指示中确定出针对多个服务器中的每个服务器的性能指示值。然后,计算设备104将性能指示值与第一阈值进行比较以将多个服务器划分为第一服务器子组和第二服务器子组,第一服务器子组中的服务器的性能优于第二服务器子组中的服务器的性能。计算设备104还确定针对当前查询输入的计算量指示值。接着将计算量指示值与第二阈值进行比较。最后基于比较的结果,从第一服务器子组或第二服务器子组中选择未被分配查询任务的服务器作为目标服务器。通过该方式,可以快速的确定出目标服务器。
[0047] 在一些实施例中,如果确定计算量指示值小于等于第二阈值,则从第二服务器子组中选择未被分配查询任务的服务器作为目标服务器;以及如果确定计算量指示值大于第二阈值,则从第一服务器子组中选择未被分配查询任务的服务器作为目标服务器。通过该方式,可以找到适合处理查询输入的服务器。备选地或附加地,如果从分配的第一服务器子组或第二服务器子组未找到未分配查询输入的服务器,则到另一组中查找可用的服务器作为目标服务器。
[0048] 在一些实施例中,在为目标服务器被分配了当前查询输入后,调整第三指示中的与目标服务器相对应的指示值,以将该目标服务器标记为已分配查询输入。通过该方式,可以准确的标记服务器是否分配了查询输入。
[0049] 在一些实施例中,计算设备104确定第三指示是否指示多个服务器中的每个服务器均已被分配查询任务。如果确定多个服务器中的每个服务器均已被分配查询任务,表明所有的服务器已被分配过了查询输入。然后将第三指示调整为指示多个服务器未被分配查询任务,以使得所有的服务器从新开始接受下一周期的查询输入分配。通过该方式,可以均衡处理以后的查询输入。
[0050] 通过该方法,可以减少查询输入的延迟,提高了用户体验,相对于搜索引擎具备通用性,并且还改进了服务器迁移容忍性。
[0051] 上面结和图2描述了根据本公开的一些实施例的用于处理查询输入的方法200的流程图。下面结合图3A和图3B来描述分配查询输入的原理。其中,图3A示出了根据本公开的一些实施例的查询延迟与查询计算量的示例300A的示意图;图3B示出了根据本公开的一些实施例的查询延迟与查询计算量的示例300B的示意图。
[0052] 图3A中的左图显示了从查询计算量的大与小、服务器所在机器的好与差两个维度对全部的查询输入时延进行的分类:如果查询输入的计算量小,并且处理它的服务器所在的机器性能好,那么延迟就短。如果查询输入的计算量大,并且处理它的服务器所在的机器性能差,那么延迟就长。如果查询输入的计算量小,并且处理它的服务器所在的机器性能差,那么延迟就属于中等。或者查询输入的计算量大,并且处理它的服务器所在的机器性能好,那么延迟就属于中等。
[0053] 在查询输入打散调度的条件下,4种组合的查询输入占比是一致的。图3A中的右图显示了在这种情况下,一段时间内全部查询输入的延迟的分布。
[0054] 对于长尾优化来说,热点实例导致的延迟长尾更严重,所以查询输入打散调度是必须要保证的一个前提条件。在不打破查询输入打散调度的条件下,如果将计算量大的查询输入尽量调度到性能好的服务器上,并且将计算量小的查询输入尽量调度到性能差的服务器上,那么就会使整体的时间分布变得更均匀,减少长尾。如图3B所示,经过左侧图中的调整之后,查询输入的延迟基本上都处于中等延迟状态。
[0055] 上面结和图3A和3B描述了查询输入在服务器上的分布。下面结合图4描述查询输入分配的过程400。如图4所示,有N个处理查询输入的服务器,N为正整数。当来了前1‑N个查询输入时,将其分配到N个服务器上,每个服务器一个查询输入,此时,第一周期结束。开始第二周期,然后在为每个服务器分配一个查询输入后,第二周期结束。如果现在接受的查询输入为第m个,则可以确定其在m/N个周期中。进一步地,可以仅统计当前周期中每个服务器的是否分配了查询输入的状态指示。
[0056] 下面结合图5描述根据本公开的一些实施例的用于处理查询输入的示例系统500的示意图。如图5所示,首先在框502接收查询输入502。然后在框504进行计算量衡量,利用衡量函数s()来衡量。在框506,获得查询输入的得分。S的输入为查询输入,S的输出:该查询输入需要的计算量:得分=S(查询输入)=s。取值区间是:[0,1]。取值越大,代表计算量越多。对于函数S(),可以通过百度开源的查询语义模型ERNIE来代替。模型的训练样本,使用各查询输入在不同服务器上的实际延迟来训练。这个训练过程也周期性的例行进行。
[0057] 服务器实例508‑1、…508‑i、…、508‑N在框510通过性能衡量P()函数来确定具有对应的服务器实例性能的服务器实例512‑1、…512‑i、…、512‑N。决策模块518除了获取包括性能指示的服务器实例和查询输入计算量外,还获得服务器示例的状态指示514‑1、…514‑i、…、514‑N,d=0表明未分配查询输入,d=1表明分配了查询输入。然后确定出将查询输入分配给服务器实例i。然受获得分配查询输入后的服务器实例516‑1、…516‑i、…、516‑N,服务器实例516‑i的d调整为1。
[0058] 通过该方法,可以减少查询输入的延迟,提高了用户体验,相对于搜索引擎具备通用性,并且还改进了服务器迁移容忍性
[0059] 图6示出了根据本公开的一些实施例的用于处理查询输入的示例系统600的示意图。如图6所示,系统600具有实例打分服务604、日志存储服务618、模型训练服务616、模型服务612和流量调度框架608。
[0060] 实例打分服务604用于小时级或天级收集各服务器实例602‑1、602‑2、……、602‑N所在的机器的CPU型号,进行性能打分,每种型号打多少分可以由预定规则指定。将打分结果作为词典606推送到流量调度框架中。该服务相当于性能衡量函数P()。
[0061] 在日志存储服务618中,服务器实例602‑1、602‑2、……、602‑N实例会按小时为周期将日志推动到日志存储服务618。日志中记录了每个查询的处理时延。这里的时延记录的是服务器实例自身的处理耗时,不包含各种网络等待时间。所以,可以反映出查询输入在此服务器上的计算量。这些日志中的(查询输入,时延)集合,就是模型的训练集620。
[0062] 模型训练服务616可以采用百度的ERNIE模型,天级或周级从日志存储服务上取全部的(查询输入,时延)集合,进行模型训练。训练出的模型推送到模型服务中。
[0063] 模型服务612用于接入客户端实例610,例如计算设备104,发来的查询输入,使用ERNIE模型614进行计算量预估,将预估的得分返回给客户端实例610。该服务相当于计算量衡量函数S()。
[0064] 流量调度框架608从客户端实例610获知当前查询的得分,并统计各服务器实例在当前周期的分配状态,根据函数决策函数F(),将查询输入下发到目标服务器实例。
[0065] 通过该方法,可以减少查询输入的延迟,提高了用户体验,相对于搜索引擎具备通用性,并且还改进了服务器迁移容忍性。
[0066] 图7示出了根据本公开实施例的用于处理查询输入的装置700的示意性框图。如图7所示,装置700包括第一指示确定模块702,被配置为确定用于指示当前查询输入的计算量的第一指示;指示获取模块704,被配置为获取用于指示可用于处理查询输入的多个服务器的性能的第二指示和用于指示多个服务器是否已被分配了查询输入的第三指示;以及查询输入处理模块706,被配置为基于第一指示、第二指示和第三指示,从多个服务器中确定用于处理当前查询输入的目标服务器,目标服务器未被分配先前查询输入。
[0067] 在一些实施例中,其中第一指示确定模块702包括:接收模块,被配置为接收当前查询输入;以及应用模块,被配置为将当前查询输入应用于计算量预测模型来获得第一指示,计算量预测模型是基于历史查询输入和对应的延时得到的。
[0068] 在一些实施例中,其中指示获取模块704包括:资源配置信息获取模块,被配置为获取多个服务器中的每个服务器的资源配置信息;以及第二指示确定模块,被配置为基于资源配置信息来确定针对多个服务器的性能的第二指示。
[0069] 在一些实施例中,其中查询输入处理模块包括:第一计算量指示值确定模块,被配置为将第一指示确定为针对当前查询输入的计算量指示值;一组服务器确定模块,被配置为基于第三指示,从多个服务器确定出未被分配查询输入的一组服务器;第一性能指示值确定模块,被配置为基于第二指示,确定针对一组服务器中的每个服务器的性能指示值;以及目标服务器确定模块,被配置为基于计算量指示值和性能指示值,从一组服务器中确定目标服务器。
[0070] 在一些实施例中,其中目标服务器确定模块包括:接近程度确定模块,被配置为确定计算量指示值和性能指示值两者与预定值的接近程度;以及基于接近程度的服务器确定模块,被配置为基于接近程度来从一组服务器中确定出目标服务器。
[0071] 在一些实施例中,其中查询输入处理模块706包括:第二性能指示值确定模块,被配置为基于第二指示确定针对多个服务器中的每个服务器的性能指示值;第一比较模块,被配置为将性能指示值与第一阈值进行比较以将多个服务器划分为第一服务器子组和第二服务器子组,第一服务器子组中的服务器的性能优于第二服务器子组中的服务器的性能;第二计算量指示值确定模块,被配置为将第一指示确定为针对当前查询输入的计算量指示值;第一比较模块,被配置为将计算量指示值与第二阈值进行比较;以及结果处理模块,被配置为基于比较的结果,从第一服务器子组或第二服务器子组中选择未被分配查询任务的服务器作为目标服务器。
[0072] 在一些实施例中,其中结果处理模块包括:第一选择模块,被配置为如果确定计算量指示值小于等于第二阈值,则从第二服务器子组中选择未被分配查询任务的服务器作为目标服务器;以及第二选择模块,被配置为如果确定计算量指示值大于第二阈值,则从第一服务器子组中选择未被分配查询任务的服务器作为目标服务器。
[0073] 在一些实施例中,装置700还包括:第一调整模块,被配置为如果确定目标服务器被分配了当前查询输入,调整第三指示中的与目标服务器相对应的指示值。
[0074] 在一些实施例中,装置700还包括:已被分配查询任务确定模块,被配置为确定第三指示是否指示多个服务器中的每个服务器均已被分配查询任务;以及第二调整模块,被配置为如果确定多个服务器中的每个服务器均已被分配查询任务,将第三指示调整为指示多个服务器未被分配查询任务。
[0075] 本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
[0076] 根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0077] 图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。该示例电子设备800可用于实现图1中的计算设备104。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0078] 如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
[0079] 设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0080] 计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如方法200。例如,在一些实施例中,方法200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的方法200的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法200。
[0081] 本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0082] 用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0083] 在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD‑ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0084] 为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0085] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
[0086] 计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0087] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0088] 上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。