分布式搜索及索引更新方法、系统、服务器及计算机设备与流程

文档序号:11774832阅读:298来源:国知局
分布式搜索及索引更新方法、系统、服务器及计算机设备与流程

本发明涉及搜索技术,具体涉及一种分布式搜索及索引更新方法、系统、服务器及计算机设备。



背景技术:

近年来,随着移动互联网的发展,人们可以方便的通过移动设备访问网络,获取网络服务,由此而兴起了一批线上到线下(o2o,online-to-offline)本地生活化服务,极大的方便了人们的生活。但随着业务的爆发性增长,搜索引擎需要查询的数据量也越来越大,单机内存已存储不下这些数据,并且对于大请求,查询请求的延时也越来越大,系统稳定性也越来越低,用户体验也越来越差。

传统的搜索系统将搜索、索引和索引维护程序放在一台服务器上,或者将索引拆分到多台机器上,但依然是由引擎这块负责管理索引,当搜索并发量大的情况下,无法进行实时扩展,并且业务量越来越多,需要的索引数也越来越多,运维成本也越来越大,给线上稳定性带来很多问题。

现有的分布式搜索系统主要是一主(master)从(slave)结构,缺点是主服务器需要选举,而当主服务器出现异常无法工作时,需要重新选举主服务器,重新选举的时间为秒级别,这就导致在重新选取的时间内搜索服务不可用,影响了线上稳定性。



技术实现要素:

为解决现有存在的技术问题,本发明实施例提供一种分布式搜索及索引更新方法、系统、服务器及计算机设备。

为达到上述目的,本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种分布式搜索方法,所述方法包括:

多个代理服务器中的至少一个代理服务器接收到查询服务器的查询请求数据,获得所述查询请求数据对应的属性信息;

所述至少一个代理服务器基于所述属性信息查询配置管理服务器,获得所述属性信息对应的机器信息,向所述机器信息对应的至少两个引擎服务器发送所述查询请求数据;

所述至少一个代理服务器获得所述至少两个引擎服务器返回的第一查询结果,将至少两个第一查询结果按照预设规则合并为第二查询结果,并将所述第二查询结果发送至所述查询服务器。

上述方案中,所述获得所述至少两个引擎服务器返回的第一查询结果,包括:

基于预先配置的截断参数,所述至少一个代理服务器获得满足所述截断参数的第一查询结果。

本发明实施例还提供了一种索引更新方法,其特征在于,所述方法包括:

主控服务器从配置管理服务器获得拆分规则,发送所述拆分规则至索引创建服务器,以使索引创建服务器将待创建的索引数据进行拆分;

所述主控服务器获得表征拆分结果的索引配置信息;

所述主控服务器基于所述索引配置信息获取索引数据,将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中。

上述方案中,所述主控服务器包括主控模块和通知模块;

所述主控服务器从配置管理服务器获得拆分规则,发送所述拆分规则至索引创建服务器,包括:

所述主控模块从配置管理服务器获得拆分规则,发送所述拆分规则至所述通知模块,所述通知模块发送所述拆分规则至索引创建服务器。

上述方案中,所述主控服务器包括主控模块和通知模块;

所述主控服务器获得表征拆分结果的索引配置信息,包括:

所述通知模块获得表征拆分结果的索引配置信息,发送所述索引配置信息至所述主控模块。

上述方案中,所述主控服务器包括主控模块和多个客户端模块;所述多个客户端模块与所述多个引擎服务器一一对应;

所述主控服务器基于所述索引配置信息获取索引数据,将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中,包括:

所述主控模块基于所述索引配置信息指示第一客户端模块获取索引数据;所述第一客户端模块为所述索引配置信息中包括的拆分结果对应的至少两个客户端模块中的任一客户端模块;

所述第一客户端模块将获取的所述索引数据存储至多个引擎服务器中与所述第一客户端模块相对应的引擎服务器中。

本发明实施例还提供了一种代理服务器,所述代理服务器包括通讯单元和处理单元;其中,

所述通讯单元用于:接收来自查询服务器的查询请求数据,将所述查询请求数据发送至所述处理单元;向所述处理单元确定的至少两个引擎服务器发送所述查询请求数据;获得所述至少两个引擎服务器返回的第一查询结果;以及将所述处理单元合并得到的第二查询结果发送至所述查询服务器;

所述处理单元用于:获得所述查询请求数据对应的属性信息;基于所述处理单元获得的属性信息查询配置管理服务器,获得所述属性信息对应的机器信息,确定所述机器信息对应的所述至少两个引擎服务器;将至少两个由所述通讯单元获得的第一查询结果按照预设规则合并得到第二查询结果。

本发明实施例还提供了一种主控服务器,其特征在于,所述主控服务器包括主控模块和通知模块;其中,

所述主控模块用于:从配置管理服务器获得拆分规则,发送所述拆分规则至所述通知模块;以及基于所述通知模块发送的索引配置信息指示获取索引数据,并将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中;

所述通知模块用于:发送所述拆分规则至索引创建服务器,以使所述索引创建服务器将待创建的索引数据进行拆分;以及获得表征拆分结果的索引配置信息,并发送所述索引配置信息至所述主控模块。

上述方案中,所述主控服务器还包括多个客户端模块;所述多个客户端模块与多个引擎服务器一一对应;其中,

所述主控模块基于所述通知模块发送的索引配置信息指示第一客户端模块获取第一索引数据;所述第一客户端模块为所述索引配置信息中包括的第一拆分结果对应的客户端模块;

所述第一客户端模块,用于基于所述主控模块的指示获取索引数据,将所述索引数据存储至对应的引擎服务器中。

本发明实施例还提供了一种分布式搜索系统,其特征在于,所述系统包括:配置管理服务器、查询服务器、本发明实施例所述的多个代理服务器和多个引擎服务器;其中,

所述配置管理服务器用于管理配置信息和机器信息,所述配置信息包括拆分规则,所述机器信息表征所述多个引擎服务器的信息;

所述查询服务器用于获得终端设备的查询请求数据,将所述查询请求数据发送至所述代理服务器,并在收到所述第二查询结果时将所述第二查询结果发送至所述终端设备;

所述多个引擎服务器中的每个引擎服务器用于存储满足所述拆分规则的索引数据,并在收到所述查询请求数据时回复所述第一查询结果。

上述方案中,所述系统还包括本发明实施例所述的主控服务器和索引创建服务器;其中,

所述索引创建服务器用于基于所述主控服务器发送的拆分规则将待创建的索引数据进行拆分,将表征拆分结果的索引配置信息发送至所述主控服务器。

本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明实施例所述分布式搜索方法的步骤。

本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明实施例所述索引更新方法的步骤。

采用本发明实施例的技术方案,通过多个代理服务器联结查询服务器和引擎服务器以代替现有技术中的主服务器联结的架构,查询服务器的查询请求数据发送至至少一个代理服务器,由至少一个代理服务器从相应的至少两个引擎服务器中获得查询结果;多个代理服务器相互之间具有并行关系的,一个代理服务器无法工作还可通过其他代理服务器工作,避免了现有技术中主设备无法工作时需要重新选择主设备导致短时间内搜索服务不可用的问题。另外,相较于现有技术中的主设备不仅需要提供查询功能,还需要承担索引的更新维护,本发明实施例的代理服务器无需承担索引的更新维护,大大降低了代理服务器的负担。

附图说明

图1为本发明实施例一的索引更新方法的流程示意图;

图2为本发明实施例一中的分布式搜索方法的应用架构以及数据交互示意图;

图3为本发明实施例二的分布式搜索方法的流程示意图;

图4为本发明实施例二中的分布式搜索方法的应用架构以及数据交互示意图;

图5为本发明实施例的代理服务器的组成结构示意图;

图6为本发明实施例的主控服务器的组成结构示意图;

图7为本发明实施例的计算机设备的组成结构示意图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步详细的说明。

实施例一

本发明实施例提供了一种索引更新方法。图1为本发明实施例一的索引更新方法的流程示意图;如图1所示,所述方法包括:

步骤101:主控服务器从配置管理服务器获得拆分规则,发送所述拆分规则至索引创建服务器,以使索引创建服务器将待创建的索引数据进行拆分。

步骤102:所述主控服务器获得表征拆分结果的索引配置信息。

步骤103:所述主控服务器基于所述索引配置信息获取索引数据,将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中,以更新所述至少两个第一引擎服务器中存储的索引数据。

本实施例的索引更新方法应用于主控服务器中,所述主控服务器具体可以是服务器或服务器集群。在一实施例中,所述主控服务器包括主控模块、通知模块和多个客户端模块,具体可参照图2所示;所述主控模块主要负责统一调度;所述通知模块主要负责通知索引创建服务器;所述通知模块的数量可以是至少一个,至少一个通知模块可基于业务类型的不同进行区分,例如每个通知模块用于通知属于相应业务类型的索引创建的相关信息;所述客户端模块的数量与引擎服务器的数量相同,且每个客户端模块对应一个引擎服务器,所述客户端模块用于根据主控模块的指示拉取索引数据,将拉取的索引数据存储至对应的引擎服务器中。所述主控模块、每个通知模块可通过独立的服务器实现;所述客户端模块可位于对应的引擎服务器中、通过对应的引擎服务器实现相应功能。在实际应用中,所述主控模块可配置备用主控模块;每个通知模块也可配置对应的备用通知模块,每个客户端模块也可配置对应的备用客户端模块,以防止主模块出现异常无法工作时,可通过相应的备用模块继续执行相应的功能。

本实施例中,所述配置管理服务器用于管理配置信息和机器信息;所述机器信息表征所述多个引擎服务器的信息;其中,引擎服务器的信息可包括引擎服务器的ip地址和端口等信息;作为一种示例,所述机器信息可通过包含有上述引擎服务器的信息的机器列表表示。所述配置信息至少包括业务标识、机器配置信息以及配置的规则信息等等;其中,所述机器配置信息具体包括机器列表,也即包括引擎服务器的ip地址和端口等信息;所述规则信息包括在搜索过程中所需要的任何操作规则,至少包括索引创建时所需要的拆分规则、索引创建规则、通知模块执行哪一种或几种业务类型的索引创建的通知信息的配置规则、客户端模块执行拉取哪一种或几种业务类型对应的索引数据的配置规则等等,当然不限于上述几种规则。

基于此,本实施例中,主控服务器从配置管理服务器中获得配置信息中的拆分规则,将所述拆分规则发送至索引创建服务器;具体包括:主控模块从配置管理服务器获得拆分规则,当然也包括索引创建规则,发送所述拆分规则和所述索引创建规则至所述通知模块,所述通知模块发送所述拆分规则和所述索引创建规则至索引创建服务器。其中,所述通知模块的数量可依据业务类型的不同配置有多个,则所述主控模块可依据待创建的索引数据的业务类型从所述配置管理服务器中获得与所述业务类型相匹配的拆分规则和索引创建规则,将所述拆分规则和所述索引创建规则发送至与所述业务类型相匹配的通知模块;所述通知模块再将所述拆分规则和所述索引创建规则发送至所述索引创建服务器。另一方面,所述索引创建服务器依据所述索引创建规则创建索引,进一步依据所述拆分规则将创建的索引数据进行拆分;其中,所述拆分规则中包括拆分参数,所述拆分参数具体可包括拆分数量,所述拆分数量用于表征索引数据的拆分数量,例如所述拆分数量为n时,表征将索引数据拆分为n份索引子数据;n为大于等于2的正整数,以表示创建的索引数据会分布存储在至少两个引擎服务器中。例如,search_online_dis_1和search_online_dis_2是一份完整的索引数据,可依据拆分规则将其水平拆分为两个索引数据;所述两个索引数据可分别存储在一引擎服务器中。进一步地,所述索引创建服务器基于创建完成、且拆分后的索引数据生成索引配置信息,所述索引配置信息可包括多个,或者所述索引配置信息可包括多个索引配置子信息;多个所述索引配置信息或所述多个索引配置子信息表征索引数据的拆分结果,以及包括拆分后的每个索引子数据对应的引擎服务器,所述多个所述索引配置信息中的每个索引配置信息或者所述多个索引配置子信息中的每个索引配置子信息用于表示相应的引擎服务器对应获取并存储哪些索引数据。则所述通知模块获得索引配置信息,将所述索引配置信息发送至所述主控模块,由所述主控模块进一步指示相应的客户端模块进行索引数据的拉取。

本实施例中,所述主控服务器基于所述索引配置信息获取索引数据,将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中,具体包括:所述主控模块基于所述索引配置信息指示第一客户端模块获取索引数据;所述第一客户端模块为所述索引配置信息中包括的拆分结果对应的至少两个客户端模块中的任一客户端模块;所述第一客户端模块将获取的所述索引数据存储至多个引擎服务器中、与所述第一客户端模块对应的引擎服务器中。具体的,所述主控模块依据多个索引配置信息中的任一索引配置信息或者索引配置信息中包括的多个索引配置子信息中的任一索引配置子信息所包括的索引数据对应的引擎服务器指示所述引擎服务器对应的第一客户端模块,所述第一客户端模块基于所述主控模块的指示拉取相应的索引数据并将拉取的索引数据存储至所述第一客户端模块对应的引擎服务器中。

可以理解为,本实施例的分布式搜索方法为索引数据的拉取更新过程,其具体可以作为离线的数据处理过程。参照图2所示,结合各服务器和各模块的数据处理过程可如下:

步骤21:主控模块从配置管理服务器获得拆分规则和索引创建规则。作为一种实施方式,所述主控模块可根据待创建的索引数据的业务类型获得与所述业务类型相匹配的拆分规则和索引创建规则。

步骤22和步骤23:所述主控模块将所述拆分规则和索引创建规则发送至通知模块;所述通知模块再将所述拆分规则和索引创建规则发送至索引创建服务器。所述索引创建服务器依据索引创建规则创建索引数据,以及依据拆分规则将索引数据拆分为n个索引子数据,基于创建完成、且拆分后的索引数据生成索引配置信息,所述索引配置信息可包括多个,或者所述索引配置信息可包括多个索引配置子信息;多个所述索引配置信息或所述多个索引配置子信息表征索引数据的拆分结果,以及包括拆分后的每个索引子数据对应的引擎服务器,所述多个所述索引配置信息中的每个索引配置信息或者所述多个索引配置子信息中的每个索引配置子信息用于表示相应的引擎服务器对应获取并存储哪些索引数据。

步骤24和步骤25:索引创建服务器将索引配置信息发送至所述通知模块,所述通知模块将所述索引配置信息发送至所述主控模块。其中,所述通知模块的数量可以为多个;多个通知模块可依据业务类型进行功能配置,即不同的通知模块执行相应业务类型的通知功能,也即主控模块依据业务类型获得拆分规则和索引创建规则,将获得的拆分规则和索引创建规则发送至与业务类型相匹配的通知模块;相应的,所述索引创建服务器将索引配置信息发送至与业务类型相匹配的通知模块。可以理解为,具有相应业务类型的多个通知模块可并行工作。

步骤26:主控模块依据索引配置信息指示客户端模块。作为一种实施方式,所述主控模块可依据多个索引配置信息中的任一索引配置信息或者索引配置信息中包括的多个索引配置子信息中的任一索引配置子信息所包括的索引数据对应的引擎服务器指示所述引擎服务器对应的客户端模块,所述客户端模块基于所述主控模块的指示拉取相应的索引数据并将拉取的索引数据存储至所述客户端模块对应的引擎服务器中。

采用本发明实施例的技术方案,引擎服务器只需要加载对应的索引数据即可,索引数据的更新功能通过主控服务器(具体可以是主控服务器中的客户端模块)实现,相较于现有技术中具有查询功能和索引更新维护功能的主服务器来说,大大降低了服务器的负担。索引数据分布存储在多个引擎服务器中,在搜索过程中大大降低了引擎服务器的内存使用,解决了现有技术中由于查询的数据量较大使得内存容量不足的问题,且大大提升了搜索的效率,减少了搜索的响应时间,提升了用户的操作体验。

实施例二

本发明实施例还提供了一种分布搜索方法。图3为本发明实施例二的分布式搜索方法的流程示意图;如图3所示,所述方法包括:

步骤301:多个代理服务器中的至少一个代理服务器接收到查询服务器的查询请求数据,获得所述查询请求数据对应的属性信息。

步骤302:所述至少一个代理服务器基于所述属性信息查询配置管理服务器,获得所述属性信息对应的机器信息,向所述机器信息对应的至少两个引擎服务器发送所述查询请求数据。

步骤303:所述至少一个代理服务器获得所述至少两个引擎服务器返回的第一查询结果,将至少两个第一查询结果按照预设规则合并为第二查询结果,并将所述第二查询结果发送至所述查询服务器。

本实施例的分布式搜索方法应用于代理服务器中;所述多个代理服务器中的每个代理服务器均具有相同的功能。图4为本发明实施例二中的分布式搜索方法的应用架构以及数据交互示意图;如图4所示,在本实施例中以代理服务器的数量为两个为例进行说明。

本实施例中,多个代理服务器中的至少一个代理服务器接收到查询服务器的查询请求数据;也即查询服务器接收到终端设备的查询请求数据后,按照预设规则将所述查询请求数据发送至至少一个代理服务器;其中,所述预设规则可以是轮询规则或者随机规则等等。在实际应用中,可预先对多个代理服务器进行编号,所述轮询规则具体可以是基于所述多个代理服务器的编号顺序依次发送查询请求数据;例如,以将查询请求数据发送至一个代理服务器为例,查询服务器接收到查询请求数据1时,发送所述查询请求数据1至代理服务器1;查询服务器接收到查询请求数据2时,可发送所述查询请求数据2至代理服务器2,以此类推;所述查询请求数据1和所述查询请求数据2具体可根据数据接收时间确定。而所述随机规则具体可以是将接收到的查询请求数据按照预设随机算法发送至相对应的至少一个代理服务器。

本实施例中,所述至少一个代理服务器获得所述查询请求数据对应的属性信息,所述属性信息具体可以为所述查询请求数据对应的业务类型,基于所述业务类型向配置管理服务器请求机器信息。实际应用中,所述配置管理服务器用于管理配置信息和机器信息;所述机器信息表征所述多个引擎服务器的信息;其中,引擎服务器的信息可包括引擎服务器的ip地址和端口等信息;所述配置信息至少包括业务标识、机器配置信息以及配置的规则信息等等,可以理解为,不同的业务标识可对应不同引擎服务器,也即不同类型的索引数据存储在不同的引擎服务器中。但本发明实施例中,基于实施例一的描述可知,在对引擎服务器中的索引数据进行更新存储时,基于拆分规则对索引数据进行了拆分,因此,属于同一业务类型的索引数据存储在至少两个引擎服务器中。

基于此,本实施例中,所述至少一个代理服务器查询配置管理服务器,获得所述属性信息对应的机器信息,所述机器信息中包括至少两个引擎服务器的标识,所述至少两个引擎服务器的标识表明所述查询请求数据中对应的索引数据存储在所述至少两个引擎服务器的标识对应的至少两个引擎服务器中。在具体实现过程中,所述机器信息可通过一机器列表实现。因此,所述至少一个代理服务器根据所述机器信息向对应的至少两个引擎服务器发送所述查询请求数据,以获得所述查询请求数据中包括的关键字或关键词、关联关键字或关联关键词对应的索引数据。

作为一种实施方式,所述获得所述至少两个引擎服务器返回的第一查询结果,包括:基于预先配置的截断参数,所述至少一个代理服务器获得满足所述截断参数的第一查询结果。

具体的,所述截断参数表示任一引擎服务器返回的查询结果中的索引数据的数量。例如,若一引擎服务器获得的查询结果包括1000个索引数据,而所述截断参数为600,则该引擎服务器返回所述1000个索引数据中的前600个索引数据。这样可大大降低搜索时延以及提升每秒查询率(qps,querypersecond)。其中,所述截断参数可由配置管理服务器进行配置,由主控服务器中的主控模块获得该截断参数,并发送至各引擎服务器中进行配置。

本实施例中,所述至少一个代理服务器获得至少两个引擎服务器返回的第一查询结果,将获得的至少两个第一查询结果按照预设规则进行合并以及排序,合并且排序处理后生成第二查询结果,将所述第二查询结果发送至所述查询服务器,由所述查询服务器发送至终端设备以输出显示给用户。

可以理解为,本实施例的分布式搜索方法为搜索查询过程,其具体可以作为在线的数据处理过程。参照图4所示,结合各服务器的数据处理过程如下:

步骤41和步骤42:查询服务器获得终端设备的查询请求数据,将查询请求数据发送至代理服务器,所述代理服务器可以是多个代理服务器中的至少一个代理服务器;或者,所述代理服务器也可以是与查询请求数据的业务类型对应的代理服务器;或者,所述代理服务器可以是多个代理服务器中基于预设规则(例如轮询规则或者随机规则等)确定的一代理服务器。

其中,所述查询服务器对接收到的所述查询请求数据进行分析,一方面,获得所述查询请求数据中的关键字或关键词,另一方面,获得所述关键字或关键词具有关联关系的关联关键字或关联关键词,也即对所述查询请求数据进行意图识别。例如,所述查询请求数据中包括的关键字或关键词为一餐厅名字,则对所述关键词或关键词进行意图识别可获得关联关键字或关联关键词为订餐或外卖等等。再例如,所述查询请求数据中包括的关键字或关键词为字符串,则通过意图识别确定该字符串为一中文词语的拼音,则对应的关联关键字或关联关键词可以为该中文词语等等。进一步基于意图识别后获得的至少一个关键词生成至少一个查询请求数据,将所述至少一个查询请求数据分别发送至对应的至少一个代理服务器。

步骤43:代理服务器基于所述查询请求数据的属性信息(例如业务类型)向配置管理服务器请求机器列表,从而获得所述查询请求数据对应的索引数据所在的引擎服务器的信息。

步骤44和步骤45:所述代理服务器基于获得的机器列表相对应的至少两个引擎服务器发送查询请求数据,所述至少两个引擎服务器基于所述查询请求数据中的内容加载索引数据,向所述代理服务器返回查询结果。其中,所述索引服务器可基于预先配置的截断参数控制查询结果中的索引数据的数量,从而减少查询延时以及提升qps。

步骤46和步骤47:所述代理服务器将获得的至少两个查询结果按照预设规则进行合并以及排序生成查询结果,将所述查询结果发送至所述查询服务器,所述查询服务器将所述查询结果发送至终端设备,以供终端设备输出显示给用户。

采用本发明实施例的技术方案,通过多个代理服务器联结查询服务器和引擎服务器以代替现有技术中的主服务器联结的架构,查询服务器的查询请求数据发送至至少一个代理服务器,由至少一个代理服务器从相应的至少两个引擎服务器中获得查询结果;多个代理服务器具有相同的功能,多个代理服务器相互之间具有并行关系,一个代理服务器无法工作还可通过其他代理服务器工作,避免了现有技术中主设备无法工作时需要重新选择主设备导致短时间内搜索服务不可用的问题。相较于现有技术中的主设备不仅需要提供查询功能,还需要承担索引的更新维护,本发明实施例的代理服务器无需承担索引的更新维护,大大降低了代理服务器的负担。

实施例三

本发明实施例还提供了一种分布搜索系统,所述分布搜索系统具体可参照图4和图2所示,所述系统包括:配置管理服务器、查询服务器、多个代理服务器和多个引擎服务器;其中,

所述配置管理服务器用于管理配置信息和机器信息;所述配置信息包括拆分规则;所述机器信息表征所述多个引擎服务器的信息;

所述代理服务器,用于接收到所述查询服务器的查询请求数据,获得所述查询请求数据对应的属性信息;基于所述属性信息查询所述配置管理服务器,获得所述属性信息对应的机器信息,向所述机器信息对应的至少两个引擎服务器发送所述查询请求数据;获得所述至少两个引擎服务器返回的第一查询结果,将至少两个第一查询结果按照预设规则合并为第二查询结果,将所述第二查询结果发送至所述查询服务器;

所述查询服务器用于获得终端设备的查询请求数据,将所述查询请求数据发送至所述代理服务器,并在收到所述第二查询结果时将所述第二查询结果发送至所述终端设备;

所述多个引擎服务器中的每个引擎服务器用于存储满足所述拆分规则的索引数据,并在收到所述查询请求数据时回复所述第一查询结果。

本实施例中,所述系统还包括主控服务器和索引创建服务器;其中,

所述主控服务器用于从所述配置管理服务器获得拆分规则,发送所述拆分规则至索引创建服务器;以及获得所述索引创建服务器发送的表征拆分结果的索引配置信息;基于所述索引配置信息获取索引数据,将所述索引数据存储至多个引擎服务器中对应的至少两个第一引擎服务器中;

所述索引创建服务器用于基于所述拆分规则将待创建的索引数据进行拆分,将表征拆分结果的索引配置信息发送至所述主控服务器。

作为一种实施方式,所述代理服务器用于基于预先配置的截断参数,获得满足所述截断参数的查询结果。

本发明实施例的分布搜索系统,通过多个代理服务器联结查询服务器和引擎服务器以代替现有技术中的主服务器联结的架构,将现有技术中的主服务器的查询功能以及索引更新维护功能分别通过代理服务器以及主控服务器实现,通过这种分布搜索架构将搜索的各功能分布到各个执行实体上,例如多个代理服务器,多个引擎服务器、主控服务器(主控服务器中包括主控模块、多个客户端模块和多个通知模块)等等,大大提升了分布式搜索系统的可扩展性以及系统的稳定性。在实际应用中,通过线上以单个索引统计,前50%时间查询延时减少50%,前90%时间查询延时减少54.5%,前99%时间查询延时减少46%,提高了用户体验。

实施例四

本发明实施例还提供了一种代理服务器。如图5为本发明实施例的代理服务器的组成结构示意图,如图5所示,所述代理服务器包括通讯单元51和处理单元52;其中,

所述通讯单元51用于:接收来自查询服务器的查询请求数据,将所述查询请求数据发送至所述处理单元52;向所述处理单元52确定的至少两个引擎服务器发送所述查询请求数据;获得所述至少两个引擎服务器返回的第一查询结果;以及将所述处理单元52合并的第二查询结果发送至所述查询服务器;

所述处理单元52用于:获得所述查询请求数据对应的属性信息;基于获得的属性信息查询配置管理服务器,获得所述属性信息对应的机器信息,确定所述机器信息对应的所述至少两个引擎服务器;将至少两个由所述通讯单元51获得的所述第一查询结果按照预设规则合并得到第二查询结果。

作为一种实施方式,所述通讯单元51,用于基于预先配置的截断参数,获得满足所述截断参数的查询结果。

本发明实施例中,所述代理服务器中的处理单元52,在实际应用中可由所述代理服务器中的中央处理器(cpu,centralprocessingunit)、数字信号处理器(dsp,digitalsignalprocessor)、微控制单元(mcu,microcontrollerunit)或可编程门阵列(fpga,field-programmablegatearray)实现;所述代理服务器中的通讯单元51,在实际应用中可通过通信模组(包含:基础通信套件、操作系统、通信模块、标准化接口和协议等)及收发天线实现。

实施例五

本发明实施例还提供了一种主控服务器。图6为本发明实施例的主控服务器的组成结构示意图,如图6所示,所述主控服务器包括主控模块61和通知模块62;其中,

所述主控模块61用于:从配置管理服务器获得拆分规则,发送所述拆分规则至所述通知模块62;以及基于所述通知模块62发送的索引配置信息指示获取索引数据,并将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中;

所述通知模块62用于:发送所述拆分规则至索引创建服务器,以使所述索引创建服务器将待创建的索引数据进行拆分;以及获得表征拆分结果的索引配置信息,并发送所述索引配置信息至所述主控模块61。

本实施例中,所述主控服务器还包括多个客户端模块63;所述多个客户端模块63与多个引擎服务器一一对应;其中,

所述主控模块61用于从配置管理服务器获得拆分规则,发送所述拆分规则至所述通知模块62;以及基于所述通知模块62发送的索引配置信息指示第一客户端模块获取第一索引数据;所述第一客户端模块为所述索引配置信息中包括的第一拆分结果对应的客户端模块;

所述通知模块62用于:发送所述拆分规则至索引创建服务器;以及获得表征拆分结果的索引配置信息,发送所述索引配置信息至所述主控模块61;

所述第一客户端模块基于所述主控模块61的指示获取索引数据,将所述索引数据存储至对应的引擎服务器中。

本实施例中,所述主控服务器具体可以是服务器集群。所述主控模块61主要负责统一调度;所述通知模块62主要负责通知索引创建服务器;所述通知模块62的数量可以是至少一个,至少一个通知模块62可基于业务类型的不同进行区分,例如每个通知模块62用于通知属于相应业务类型的索引创建的相关信息;所述客户端模块63的数量与引擎服务器的数量相同,且每个客户端模块63对应一个引擎服务器,所述客户端模块63用于根据主控模块61的指示拉取索引数据,将拉取的索引数据存储至对应的引擎服务器中。所述主控模块61、每个通知模块62可通过独立的服务器实现;所述客户端模块63可位于对应的引擎服务器中、通过对应的引擎服务器实现相应功能。在实际应用中,所述主控模块61可配置备用主控模块61;每个通知模块62也可配置对应的备用通知模块62,每个客户端模块63也可配置对应的备用客户端模块63,以防止主模块出现异常无法工作时,可通过相应的备用模块继续执行相应的功能。

实施例六

本发明实施例还提供了一种计算机设备,图7为本发明实施例的计算机设备的组成结构示意图,如图7所示。所述计算机设备包括处理器71、存储器72以及至少一个外部通信接口73;所述处理器71、存储器72以及外部通信接口73均通过总线74连接;所述存储器72中存储有可在处理器71上运行的计算机程序;其中,在所述计算机设备作为代理服务器时,所述处理器71执行所述程序时实现以下步骤:

接收来自查询服务器的查询请求数据,获得所述查询请求数据对应的属性信息;

基于所述属性信息查询配置管理服务器,获得所述属性信息对应的机器信息,向所述机器信息对应的至少两个引擎服务器发送所述查询请求数据;

获得所述至少两个引擎服务器返回的第一查询结果,将至少两个第一查询结果按照预设规则合并为第二查询结果,并将所述第二查询结果发送至所述查询服务器。

作为一种实施方式,所述处理器71执行所述程序时实现以下步骤:基于预先配置的截断参数,所述代理服务器获得满足所述截断参数的查询结果。

在计算机设备作为主控服务器时,所述处理器71执行所述程序时实现以下步骤:从配置管理服务器获得拆分规则,发送所述拆分规则至索引创建服务器,以使索引创建服务器将待创建的索引数据进行拆分;获得表征拆分结果的索引配置信息;基于所述索引配置信息获取索引数据,并将所述索引数据存储至多个引擎服务器中相对应的至少两个引擎服务器中。

这里需要指出的是:以上涉及计算机设备的描述,与上述方法描述是类似的,同方法的有益效果描述,不做赘述。对于本发明计算机设备实施例中未披露的技术细节,请参照本发明方法实施例的描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。例如前面所述的各种服务器,可以是物理上的一台硬件机器,也可以是运行于服务器集群中的一个软件模块。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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