首页 / 专利库 / 计算机网络 / 对等网络 / 分布式搜索系统、索引分发方法及存储介质

分布式搜索系统、索引分发方法及存储介质

阅读:450发布:2020-05-11

专利汇可以提供分布式搜索系统、索引分发方法及存储介质专利检索,专利查询,专利分析的服务。并且本 申请 实施例 公开了一种分布式搜索系统、索引分发方法及存储介质,该系统包括:分布式索引构建平台,用于构建索引并存储在索引存储集群,将资源描述信息写入到状态存储集群;索引存储集群;状态存储集群;主控集群,发送索引下载指令到状态存储集群;搜索集群,包括多个搜索 节点 ,多个搜索节点组成 对等网络 ,若搜索节点从状态存储集群中监听到索引下载指令,则确定自身服务状态,若为在线状态,则使用单线程下载索引分片并使用直接IO写入 硬盘 ;若为离线状态,则使用多线程下载索引分片并使用缓存IO写入硬盘。本申请实施例在服务在线时保证了服务的 稳定性 ,并在服务离线时提高了索引的下载速度。,下面是分布式搜索系统、索引分发方法及存储介质专利的具体信息内容。

1.一种分布式搜索系统,其特征在于,包括:
分布式索引构建平台,用于构建索引,将所述索引按照索引分片存储在索引存储集群,并将所述索引的资源描述信息写入到状态存储集群;
索引存储集群,用于按照索引分片存储所述索引;
状态存储集群,用于保存所述资源描述信息,对搜索节点的服务进行注册,并保存所述搜索节点的服务状态,接收主控集群发送的索引下载指令;
主控集群,用于监听所述状态存储集群,若监听到所述资源描述信息,则发送索引下载指令到状态存储集群;
搜索集群,包括多个搜索节点,所述多个搜索节点组成对等网络,若所述搜索节点从状态存储集群中监听到所述索引下载指令,则确定自身提供搜索服务的服务状态,若所述服务状态为在线状态,则使用单线程下载所述索引中的索引分片,并使用直接IO将所述索引分片写入硬盘;若所述服务状态为离线状态,则使用多线程下载所述索引分片,并使用缓存IO将所述索引分片写入硬盘。
2.根据权利要求1所述的系统,其特征在于,所述主控集群还用于:
将分批次发送给所述搜索节点的索引切换指令发送到状态存储集群。
3.根据权利要求1所述的系统,其特征在于,所述搜索节点还用于:
若所述服务状态为在线状态,在所述索引分片下载成功后,使用直接IO从所述硬盘读取所述索引分片,使用单线程对所述索引分片进行解压,并使用直接IO将解压后的索引分片写入所述硬盘。
4.根据权利要求3所述的系统,其特征在于,所述搜索节点还用于:
当从所述状态存储集群监听到索引切换指令时,判断所述索引分片是否解压完毕;
若所述索引分片未解压完毕,则将所述服务状态更改为离线状态,并使用缓存IO从所述硬盘读取所述索引分片,使用多线程对所述索引分片进行解压,使用缓存IO将解压后的索引分片写入所述硬盘,在解压完毕后将原有的旧索引分片切换为所述索引分片;
若所述索引分片已解压完毕,则将所述服务状态更改为离线状态,并将所述旧索引分片切换为所述索引分片。
5.根据权利要求1所述的系统,其特征在于,所述搜索节点还用于:
若所述服务状态为离线状态,在所述索引分片下载成功后,使用缓存IO从所述硬盘读取所述索引分片,使用多线程对所述索引分片进行解压,并使用缓存IO将解压后的索引分片写入所述硬盘。
6.根据权利要求5所述的系统,其特征在于,所述搜索节点还用于:
当从所述状态存储集群监听到索引切换指令时,在所述索引分片解压完毕后,将原有的旧索引分片切换为所述索引分片。
7.一种索引分发方法,其特征在于,包括:
分布式索引构建平台构建索引,将所述索引按照索引分片存储在索引存储集群,并将所述索引的资源描述信息写入到状态存储集群;
主控集群监听所述状态存储集群,若监听到所述资源描述信息,则发送索引下载指令到状态存储集群;
若搜索集群中的搜索节点从状态存储集群中监听到所述索引下载指令,则确定自身提供搜索服务的服务状态;
若所述服务状态为在线状态,则所述搜索节点使用单线程下载所述索引中的索引分片,并使用直接IO将所述索引分片写入硬盘;
若所述服务状态为离线状态,则所述搜索节点使用多线程下载所述索引分片,并使用缓存IO将所述索引分片写入硬盘。
8.根据权利要求7所述的方法,其特征在于,在所述若所述服务状态为在线状态,则所述搜索节点使用单线程下载所述索引分片,并使用直接IO将所述索引分片写入硬盘的步骤之后,还包括:
在所述索引分片下载成功后,所述搜索节点使用直接IO从所述硬盘读取所述索引分片,使用单线程对所述索引分片进行解压,并使用直接IO将解压后的索引分片写入所述硬盘。
9.根据权利要求8所述的方法,其特征在于,在所述搜索节点使用直接IO从所述硬盘读取所述相应索引分片,使用单线程对所述相应索引分片进行解压,并使用直接IO将解压后的相应索引分片写入所述硬盘的步骤之后,还包括:
当所述搜索节点从所述状态存储集群监听到索引切换指令时,判断所述索引分片是否解压完毕;
若所述索引分片未解压完毕,则所述搜索节点将所述服务状态更改为离线状态,并使用缓存IO从所述硬盘读取所述索引分片,使用多线程对所述索引分片进行解压,使用缓存IO将解压后的索引分片写入所述硬盘,在解压完毕后将原有的旧索引分片切换为所述索引分片;
若所述索引分片已解压完毕,则所述搜索节点将所述服务状态更改为离线状态,并将所述旧索引分片切换为所述索引分片。
10.根据权利要求7所述的方法,其特征在于,在若所述服务状态为离线状态,则所述搜索节点使用多线程下载所述索引分片,并使用缓存IO将所述索引分片写入硬盘的步骤之后,还包括:
在所述索引分片下载成功后,所述搜索节点使用缓存IO从所述硬盘读取所述索引分片,使用多线程对所述索引分片进行解压,并使用缓存IO将解压后的索引分片写入所述硬盘。
11.根据权利要求10所述的方法,其特征在于,在所述搜索节点使用缓存IO从所述硬盘读取所述索引分片,使用多线程对所述索引分片进行解压,并使用缓存IO将解压后的索引分片写入所述硬盘的步骤之后,还包括:
当所述搜索节点从所述状态存储集群监听到索引切换指令时,在所述索引分片解压完毕后,将原有的旧索引分片切换为所述索引分片。
12.根据权利要求7所述的方法,其特征在于,所述搜索节点使用单线程下载所述索引中的索引分片,包括:
若其他搜索节点中有所述索引分片,则所述搜索节点使用单线程从所述其他搜索节点下载所述索引分片;若其他搜索节点中没有所述索引分片,则所述搜索节点使用单线程从所述索引存储集群下载所述索引分片;
所述搜索节点使用多线程下载所述索引分片,包括:
若其他搜索节点中有所述索引分片,则所述搜索节点使用多线程从所述其他搜索节点下载所述索引分片;若其他搜索节点中没有所述索引分片,则所述搜索节点使用多线程从所述索引存储集群下载所述索引分片。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求7至12任意一项所述的索引分发方法的步骤。

说明书全文

分布式搜索系统、索引分发方法及存储介质

技术领域

[0001] 本申请涉及计算机技术领域,特别是涉及一种分布式搜索系统、索引分发方法及存储介质。

背景技术

[0002] 一个完整的搜索生态至少包括索引服务和搜索服务。索引服务创建索引文件,然后由索引分发系统将索引文件分发到搜索服务,搜索服务加载索引文件后对外提供服务。
[0003] 目前主流的搜索开源框架有Solr和Elasticsearch,它们采用的索引分发方案是从主(Master)节点同步到从(Slave)节点,多个从节点从同一个主节点下载索引文件。索引分发的速度严重依赖主节点的机器性能和网络带宽,无法随索引大小和搜索节点数量做扩展,同时主节点的压过大,影响搜索服务的稳定性发明内容
[0004] 本申请实施例提供一种分布式搜索系统、索引分发方法及存储介质,以提高搜索服务的稳定性。
[0005] 为了解决上述问题,第一方面,本申请实施例提供了一种分布式搜索系统,包括:
[0006] 分布式索引构建平台,用于构建索引,将所述索引按照索引分片存储在索引存储集群,并将所述索引的资源描述信息写入到状态存储集群;
[0007] 索引存储集群,用于按照索引分片存储所述索引;
[0008] 状态存储集群,用于保存所述资源描述信息,对搜索节点的服务进行注册,并保存所述搜索节点的服务状态,接收主控集群发送的索引下载指令;
[0009] 主控集群,用于监听所述状态存储集群,若监听到所述资源描述信息,则发送索引下载指令到状态存储集群;
[0010] 搜索集群,包括多个搜索节点,所述多个搜索节点组成对等网络,若所述搜索节点从状态存储集群中监听到所述索引下载指令,则确定自身提供搜索服务的服务状态,若所述服务状态为在线状态,则使用单线程下载所述索引中的索引分片,并使用直接IO将所述索引分片写入硬盘;若所述服务状态为离线状态,则使用多线程下载所述索引分片,并使用缓存IO将所述索引分片写入硬盘。
[0011] 第二方面,本申请实施例提供了一种索引分发方法,包括:
[0012] 分布式索引构建平台构建索引,将所述索引按照索引分片存储在索引存储集群,并将所述索引的资源描述信息写入到状态存储集群;
[0013] 主控集群监听所述状态存储集群,若监听到所述资源描述信息,则发送索引下载指令到状态存储集群;
[0014] 若搜索集群中的搜索节点从状态存储集群中监听到所述索引下载指令,则确定自身提供搜索服务的服务状态;
[0015] 若所述服务状态为在线状态,则所述搜索节点使用单线程下载所述索引中的索引分片,并使用直接IO将所述索引分片写入硬盘;
[0016] 若所述服务状态为离线状态,则所述搜索节点使用多线程下载所述索引分片,并使用缓存IO将所述索引分片写入硬盘。
[0017] 第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时本申请实施例公开的索引分发方法的步骤。
[0018] 本申请实施例公开的分布式搜索系统、索引分发方法及存储介质,通过分布式索引构建平台搜集索引,将所述索引按照索引分片存储在索引存储集群,将索引的资源描述信息写入到状态存储集群,主控集群从状态存储集群中监听到资源描述信息后,发送索引下载指令到状态存储集群,搜索集群中的多个搜索节点组成对等网络,在从状态存储集群中监听到索引下载指令时,根据自身提供搜索服务的服务状态,使用对于的资源下载索引分片,即在服务状态为在线状态时,使用单线程下载索引分片并使用直接IO将索引分片写入硬盘,从而保证了服务的稳定性,在服务状态为离线状态时,使用多线程下载索引分片并使用缓存IO将索引分片写入硬盘,从而提高了索引的下载速度。附图说明
[0019] 为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0020] 图1是本申请实施例一的分布式搜索系统的结构示意图;
[0021] 图2是本申请实施例二的索引分发方法的流程图
[0022] 图3是本申请实施例三的索引分发方法的流程图。

具体实施方式

[0023] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0024] 实施例一
[0025] 本实施例公开的一种分布式搜索系统,如图1所示,该分布式搜索系统包括:
[0026] 分布式索引构建平台110,用于构建索引,将所述索引按照索引分片存储在索引存储集群,并将所述索引的资源描述信息写入到状态存储集群;
[0027] 索引存储集群120,用于按照索引分片存储所述索引;
[0028] 状态存储集群130,用于保存所述资源描述信息,对搜索节点的服务进行注册,并保存所述搜索节点的服务状态,接收主控集群发送的索引下载指令;
[0029] 主控集群140,用于监听所述状态存储集群,若监听到所述资源描述信息,则发送索引下载指令到状态存储集群;
[0030] 搜索集群150,包括多个搜索节点151,多个搜索节点151组成对等网络,若所述搜索节点从状态存储集群中监听到所述索引下载指令,则确定自身提供搜索服务的服务状态,若所述服务状态为在线状态,则使用单线程下载所述索引中的索引分片,并使用直接IO将所述索引分片写入硬盘;若所述服务状态为离线状态,则使用多线程下载所述索引分片,并使用缓存IO将所述索引分片写入硬盘。
[0031] 其中,所述索引存储集群可以是HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)集群,HDFS有着高容错性的特点,并且可以部署在低廉的硬件上,而且提供高吞吐量来访问应用程序的数据,适合有着超大数据集的应用程序,而且HDFS可以实现流的形式访问文件系统中的数据。所述状态存储集群可以是ZooKeeper集群,ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件,可以为分布式应用提供一致性服务,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。直接IO(DirectIO)就是应用程序直接访问磁盘数据,而不经过内核缓冲区,这样做的目的是减少一次从内核缓冲区到用户程序缓存的数据复制,但是,如果访问的数据不在应用程序缓存中,那么每次数据都会直接从磁盘加载。缓存IO(BufferIO)又被称作标准IO,大多数文件系统的默认IO操作都是缓存IO,在Linux的缓存IO机制中,数据先从磁盘复制到内核空间的缓冲区,然后从内核空间缓冲区复制到应用程序的地址空间。缓存IO在一定程度上分离了内核空间和用户空间,保护系统本身的运行安全,而且可以减少读盘的次数,从而提高性能。
[0032] 分布式索引构建平台110构建好最新的全量索引,并将索引分为预设数量的索引分片,按照索引分片进行压缩,将压缩后的索引按照索引分片存储在索引存储集群120,并将索引的资源描述信息写入到状态存储集群130。索引存储集群120中的节点分布在多个地区多个机房中。其中,资源描述信息可以是各个索引分片的存储位置,如某个索引分片存储在索引存储集群中的某个地区的某个机房中。所述索引分片包括多个文件,从而便于搜索集群150中的搜索节点151对文件块进行P2P(Point to point,点对点)传送,分布式索引构建平台110将构建好的索引分为索引分片后,对索引分片进行压缩,再将每个索引分片分为多个文件块。
[0033] 状态存储集群130用于保存索引对应的资源描述信息,接收主控集群下发的索引下载指令以及索引切换指令等,还对搜索节点的服务进行注册,保存搜索节点的服务状态。所述服务状态包括在线状态、离线状态、索引未下载、索引下载中、索引下载完成、索引切换中或索引切换完成等。
[0034] 主控集群140控制搜索集群150中搜索节点对索引的下载以及切换,若在状态存储集群130监听到资源描述信息,确定有新的索引生成,则发送对所有搜索节点的索引下载指令到状态存储集群130,状态存储集群130用于保存索引下载指令,并提供接口供搜索集群150中的各个搜索节点151监听。
[0035] 搜索集群150包括多个搜索节点151,多个搜索节点151之间组成对等网络,多个搜索节点中至少两个搜索节点保存相同的索引分片,在下载索引时,所述至少两个搜索节点之间可以进行P2P传送。每个搜索节点保存的索引分片是固定的,如索引包括两个索引分片,搜索集群中包括四个搜索节点时,每两个搜索节点保存同一个索引分片。图1中以三个索引分片为例,即分片1、分片2和分片3,位于同一列的搜索节点151保存相同的索引分片。
[0036] 在进行P2P传送时,搜索节点之间按照文件块进行传送,即若搜索节点要下载某个文件块,而搜索集群中其他搜索节点有该文件块,则可直接从其他搜索节点下载该文件块。
[0037] 搜索集群150用于提供分布式搜索服务,搜索集群150中的搜索节点从状态存储集群130中监听到索引下载指令时,使用P2P的方式下载索引分片,先确定自身提供搜索服务的服务状态,若所述服务状态为在线状态,即在提供搜索服务时,则为了保证搜索服务的稳定性,使用较少的资源下载索引分片,即使用单线程下载所述索引中相应的索引分片,并使用直接IO将索引分片写入硬盘;若所述服务状态为离线状态,即当前没有提供搜索服务时,则使用较多的资源下载索引分片,即使用多线程下载所述索引中的相应索引分片,使用缓存IO将索引分片写入硬盘,从而提高下载速度。搜索节点将索引下载状态上报给状态存储集群,便于主控集群监听。
[0038] 在本申请的一个实施例中,主控集群140还用于:将分批次发送给所述搜索节点的索引切换指令发送到状态存储集群130。主控集群140从状态存储集群130中监听搜索集群150中搜索节点151的索引下载状态,若搜索节点下载索引完成,则在保证搜索集群服务能力的前提下,分批次给搜索节点发送切换索引指令,单台搜索机器切换索引期间处于离线状态。
[0039] 在本申请的一个实施例中,搜索节点151还用于:若所述服务状态为在线状态,在所述索引分片下载成功后,使用直接IO从所述硬盘读取所述索引分片,使用单线程对所述索引分片进行解压,并使用直接IO将解压后的索引分片写入所述硬盘。在服务状态为在线状态时,为了保证搜索服务的稳定性,在所述索引分片下载成功后,使用较少的资源对索引分片进行解压,即使用直接IO从硬盘读取所述索引分片,使用单线程对所述索引分片进行解压,并使用直接IO将解压后的索引分片写入硬盘。
[0040] 在一种实施方式中,搜索节点151还用于:当从所述状态存储集群监听到索引切换指令时,判断所述索引分片是否解压完毕;若所述索引分片未解压完毕,则将所述服务状态更改为离线状态,并使用缓存IO从所述硬盘读取所述索引分片,使用多线程对所述索引分片进行解压,使用缓存IO将解压后的索引分片写入所述硬盘,在解压完毕后将原有的旧索引分片切换为所述索引分片;若所述索引分片已解压完毕,则将所述服务状态更改为离线状态,并将所述旧索引分片切换为所述索引分片。服务状态为在线状态时,如果从状态存储集群监听到索引切换指令,则将服务状态更改为离线状态,并在索引分片未解压完毕时,加速进行解压,即使用缓存IO从硬盘读取所述索引分片,使用多线程进行解压,使用缓存IO将解压后的索引分片写入硬盘,并执行索引分片的切换;若监听到索引切换指令时,索引分片已解压完毕,则可以在将服务状态更改为离线状态后,直接执行索引分片的切换。
[0041] 在本申请的另一个实施例中,搜索节点151还用于:若所述服务状态为离线状态,在所述索引分片下载成功后,使用缓存IO从所述硬盘读取所述索引分片,使用多线程对所述索引分片进行解压,并使用缓存IO将解压后的索引分片写入所述硬盘。在服务状态为离线状态下,下载索引分片下载成功后,可以使用较多的资源对索引分片进行解压,从而提高索引分片的解压速度。
[0042] 在一种实施方式中,搜索节点151还用于:当从所述状态存储集群监听到索引切换指令时,在所述索引分片解压完毕后,将原有的旧索引分片切换为所述索引分片。索引状态为离线状态时,从状态存储集群监听到索引切换指令,则在索引分片解压完毕后,可以直接执行索引的切换。
[0043] 本申请实施例提供的分布式搜索系统,通过分布式索引构建平台搜集索引,将所述索引按照索引分片存储在索引存储集群,将索引的资源描述信息写入到状态存储集群,主控集群从状态存储集群中监听到资源描述信息后,发送索引下载指令到状态存储集群,搜索集群中的多个搜索节点组成对等网络,在从状态存储集群中监听到索引下载指令时,根据自身提供搜索服务的服务状态,使用对于的资源下载索引分片,即在服务状态为在线状态时,使用单线程下载索引分片并使用直接IO将索引分片写入硬盘,从而保证服务的稳定性,在服务状态为离线状态时,使用多线程下载索引分片并使用缓存IO将索引分片写入硬盘,从而提高了索引的下载速度。
[0044] 实施例二
[0045] 本实施例公开的一种索引分发方法,该索引分发方法由上述实施例所述的分布式搜索系统执行,如图2所示,该方法包括:步骤210至步骤250。
[0046] 步骤210,分布式索引构建平台构建索引,将所述索引按照索引分片存储在索引存储集群,并将所述索引的资源描述信息写入到状态存储集群。
[0047] 分布式索引构建平台110构建好最新的全量索引,并将索引分为预设数量的索引分片,按照索引分片进行压缩,将压缩后的索引按照索引分片存储在索引存储集群120,并将索引的资源描述信息写入到状态存储集群130。索引存储集群120中的节点分布在多个地区多个机房中。其中,资源描述信息可以是各个索引分片的存储位置,如某个索引分片存储在索引存储集群中的某个地区的某个机房中。所述索引分片包括多个文件块,从而便于搜索集群150中的搜索节点151对文件块进行P2P(Point to point,点对点)传送,分布式索引构建平台110将构建好的索引分为索引分片后,对索引分片进行压缩,再将每个索引分片分为多个文件块。其中,所述索引存储集群可以是HDFS集群。所述状态存储集群可以是ZooKeeper集群。
[0048] 步骤220,主控集群监听所述状态存储集群,若监听到所述资源描述信息,则发送索引下载指令到状态存储集群。
[0049] 主控集群对状态存储集群进行监听,若监听到新索引对应的资源描述信息时,确定有新索引构建完成,则将对搜索集群中所有搜索节点的索引下载指令发送到状态存储集群,由搜索节点对状态存储集群进行监听。
[0050] 步骤230,若搜索集群中的搜索节点从状态存储集群中监听到所述索引下载指令,则确定自身提供搜索服务的服务状态。
[0051] 搜索集群中的搜索节点从状态存储集群中监听到索引下载指令时,确定自身提供搜索服务的服务状态,便于后续根据服务状态使用对应的资源下载索引中的相应索引分片。
[0052] 步骤240,若所述服务状态为在线状态,则所述搜索节点使用单线程下载所述索引中的索引分片,并使用直接IO将所述索引分片写入硬盘。
[0053] 其中,直接IO(DirectIO)就是应用程序直接访问磁盘数据,而不经过内核缓冲区,这样做的目的是减少一次从内核缓冲区到用户程序缓存的数据复制,但是,如果访问的数据不在应用程序缓存中,那么每次数据都会直接从磁盘加载。
[0054] 每个搜索节点保存一个索引分片,根据自身保存的索引分片标识,确定要下载的新索引中的索引分片。若搜索节点自身提供搜索服务的服务状态为在线状态,则使用较少的资源下载索引中的索引分片,并使用直接IO将索引分片写入硬盘。
[0055] 在本申请的一个实施例中,所述搜索节点使用单线程下载所述索引中的索引分片,包括:若其他搜索节点中有所述索引分片,则所述搜索节点使用单线程从所述其他搜索节点下载所述索引分片;若其他搜索节点中没有所述索引分片,则所述搜索节点使用单线程从所述索引存储集群下载所述索引分片。
[0056] 若搜索节点从状态存储集群中监听到其他搜索节点有所述索引分片,则使用单线程从其他搜索节点下载所述索引分片;若搜索节点从状态存储集群中监听到其他搜索节点没有所述索引分片,则使用单线程从索引存储集群下载所述索引分片。具体下载时,可以以索引分片中的文件块为单位进行下载,即从状态存储集群中监听其他搜索节点是否有要下载的索引分片的文件块,如果有就从其他搜索节点下载该文件块,如果没有就从索引存储集群下载该文件块。
[0057] 步骤250,若所述服务状态为离线状态,则所述搜索节点使用多线程下载所述索引分片,并使用缓存IO将所述索引分片写入硬盘。
[0058] 其中,缓存IO(BufferIO)又被称作标准IO,大多数文件系统的默认IO操作都是缓存IO,在Linux的缓存IO机制中,数据先从磁盘复制到内核空间的缓冲区,然后从内核空间缓冲区复制到应用程序的地址空间。缓存IO在一定程度上分离了内核空间和用户空间,保护系统本身的运行安全,而且可以减少读盘的次数,从而提高性能。
[0059] 若搜索节点自身提供搜索服务的状态为离线状态,则可以使用较多的资源下载索引分片,即使用多线程下载索引分片,并使用缓存IO将索引分片写入硬盘。
[0060] 在本申请的一个实施例中,所述搜索节点使用多线程下载所述索引分片,包括:若其他搜索节点中有所述索引分片,则所述搜索节点使用多线程从所述其他搜索节点下载所述索引分片;若其他搜索节点中没有所述索引分片,则所述搜索节点使用多线程从所述索引存储集群下载所述索引分片。
[0061] 若搜索节点从状态存储集群中监听到其他搜索节点有所述索引分片,则使用多线程从其他搜索节点下载所述索引分片;若搜索节点从状态存储集群中监听到其他搜索节点没有所述索引分片,则使用多线程从索引存储集群下载所述索引分片。具体下载时,可以以索引分片中的文件块为单位进行下载,即从状态存储集群中监听其他搜索节点是否有要下载的索引分片的文件块,如果有就从其他搜索节点下载该文件块,如果没有就从索引存储集群下载该文件块。
[0062] 本申请实施例公开的索引分发方法,通过分布式索引构建平台搜集索引,将所述索引按照索引分片存储在索引存储集群,将索引的资源描述信息写入到状态存储集群,主控集群从状态存储集群中监听到资源描述信息后,发送索引下载指令到状态存储集群,搜索集群中的多个搜索节点组成对等网络,在从状态存储集群中监听到索引下载指令时,根据自身提供搜索服务的服务状态,使用对于的资源下载索引分片,即在服务状态为在线状态时,使用单线程下载索引分片并使用直接IO将索引分片写入硬盘,从而保证服务的稳定性,在服务状态为离线状态时,使用多线程下载索引分片并使用缓存IO将索引分片写入硬盘,从而提高了索引的下载速度。
[0063] 实施例三
[0064] 本实施例公开的一种索引分发方法,该索引分发方法由上述实施例所述的分布式搜索系统执行,如图3所示,该方法包括:步骤301至步骤311。
[0065] 步骤301,分布式索引构建平台构建索引,将所述索引按照索引分片存储在索引存储集群,并将所述索引的资源描述信息写入到状态存储集群。
[0066] 步骤302,主控集群监听所述状态存储集群,若监听到所述资源描述信息,则发送索引下载指令到状态存储集群。
[0067] 步骤303,若搜索集群中的搜索节点从状态存储集群中监听到所述索引下载指令,则判断自身提供搜索服务的服务状态是否为在线状态,若是,则执行步骤304,若否,则执行步骤309。
[0068] 步骤304,若所述服务状态为在线状态,则所述搜索节点使用单线程下载所述索引中的索引分片,并使用直接IO将所述索引分片写入硬盘。
[0069] 步骤305,在所述索引分片下载成功后,所述搜索节点使用直接IO从所述硬盘读取所述索引分片,使用单线程对所述索引分片进行解压,并使用直接IO将解压后的索引分片写入所述硬盘。
[0070] 在搜索节点的服务状态为在线状态时,索引分片下载成功后,使用较少的资源对索引分片进行解压,保证搜索服务的稳定性。
[0071] 步骤306,当所述搜索节点从所述状态存储集群监听到索引切换指令时,判断所述索引分片是否解压完毕,若是,则执行步骤307,若否,则执行步骤308。
[0072] 步骤307,所述搜索节点将所述服务状态更改为离线状态,并使用缓存IO从所述硬盘读取所述索引分片,使用多线程对所述索引分片进行解压,使用缓存IO将解压后的索引分片写入所述硬盘,在解压完毕后将原有的旧索引分片切换为所述索引分片。
[0073] 步骤308,所述搜索节点将所述服务状态更改为离线状态,并将所述旧索引分片切换为所述索引分片。
[0074] 步骤309,若所述服务状态为离线状态,则所述搜索节点使用多线程下载所述索引分片,并使用缓存IO将所述索引分片写入硬盘。
[0075] 步骤310,在所述索引分片下载成功后,所述搜索节点使用缓存IO从所述硬盘读取所述索引分片,使用多线程对所述索引分片进行解压,并使用缓存IO将解压后的索引分片写入所述硬盘。
[0076] 在搜索节点的服务状态为离线状态时,索引分片下载成功后,使用较多的资源对索引分片进行解压,提高解压速度。
[0077] 步骤311,当所述搜索节点从所述状态存储集群监听到索引切换指令时,在所述索引分片解压完毕后,将原有的旧索引分片切换为所述索引分片。
[0078] 搜索节点从状态存储集群中监听到索引切换指令,若索引分片未解压完毕,则继续解压,直到索引分片解压完毕,将原有的旧索引分片切换为新下载的索引分片。搜索节点从状态存储集群中监听到索引切换指令,若索引分片已解压完毕,则可以直接将原有的旧索引分片切换为新下载的索引分片。
[0079] 本申请实施例提供的索引分发方法,通过在搜索节点的服务状态为在线状态时,优先保证搜索服务的稳定性,使用较少的资源对索引分片进行下载、解压,在搜索节点的服务状态为离线状态时,使用较多的资源对索引分片进行下载、解压,从而提高索引分发速度。
[0080] 本申请实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所述的索引分发方法的步骤。
[0081] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0082] 以上对本申请实施例提供的一种分布式搜索系统、索引分发方法及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
[0083] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈