一种基于索引分片均衡的大数据云搜索系统及其方法转让专利

申请号 : CN201610937723.3

文献号 : CN106528683B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蔡叙明

申请人 : 深圳市盛凯信息科技有限公司

摘要 :

本发明提出一种基于索引分片均衡的大数据云搜索系统及其方法。本发明旨在解决基于Apache Lucene引擎的大数据云搜索系统当中,索引分片难于在集群的节点之间合理高效进行分配的问题。本发明的大数据云搜索系统及方法基于负载均衡原则进行索引分片的分配,并且根据被分配的索引分片的内容相关度,将内容相关度高的索引分片分配在不同的节点上承担。本发明能够实现索引分片被查询调用所带来的计算负荷在各个节点之间的均衡化分布,避免集群中部分节点过载造成的延迟过大等问题,也抑制部分节点过闲的现象存在。

权利要求 :

1.一种基于索引分片均衡的大数据云搜索系统,其特征在于,包括:

Apache Lucene引擎单元,基于Apache Lucene的搜索引擎架构,包括分析器、索引编写器以及查询引擎模块;分析器获得由各种类型的数据源文件转化的源文本数据,通过分析处理将源文本数据转换为标记;索引编写器用于生成和管理索引,将由分析器转换而成的标记保存在索引的数据结构之中,所生成的索引的文件形式为索引分片,临时缓存索引分片并将所述索引分片提供给节点集群进行存储;所述索引分片包括主索引分片和至少一个副本索引分片;每个索引分片具有自身的索引分片ID;查询引擎模块进一步包括查询解析器和索引搜索器;查询解析器用于将用户输入的关键词、词组、短句等查询条件通过调用分析器转换为查询条件项,索引搜索器基于转换而来的查询条件项,向节点集群发起查询请求;索引搜索器获得节点集群的反馈结果,并根据该反馈结果确定索引分片与查询条件项的匹配程度,产生分数,并按照分数的排序返回搜索结果;

节点集群,包括若干节点,所述节点用于存储由Apache Lucene引擎单元提供的索引分片,并承担索引分片被查询调用的负荷;节点集群接收所述查询请求,根据该查询请求所指向的索引分片,将查询请求分配给存储相应的索引分片的节点,由该节点响应该查询请求而在查询请求所指向的索引分片中完成查询相关的计算,生成反馈结果;

索引分片分析单元,用于为索引分片生成内容标识符;

索引分片分配管理单元,包括索引分片分配记录模块、节点能力状态管理模块和分配方案确定模块;其中

索引分片分配记录模块,用于为节点集群中的每一个节点生成并存储一个索引分片分配记录表,索引分片分配记录表记录了在本节点上承担的每个索引分片的相关信息,所述相关信息中包括索引分片的索引分片ID、内容标识符、热度等级以及主副标识;

节点能力状态管理模块,用于实时从集群的各节点获得节点处理能力参数,并通过节点能力状态列表对各节点实时的节点处理能力参数进行保存;

分配方案确定模块,获取当前待分配的索引分片的索引分片ID;根据所获取的当前待分配的索引分片的索引分片ID,统计当前分布在各热度等级上的待分配索引分片的数量;

确定集群中的可用节点及其节点号;通过查询所述节点能力状态列表当中各个可用节点的节点处理能力参数,决定各可用节点在各热度等级上分别承担的待分配索引分片的承担数量;按照该承担数量将各热度等级上的待分配索引分片分派给可用节点,形成分配方案;分配方案包括可用节点的节点号和每个可用节点被分配的索引分片的索引分片ID;将分配方案传输给Apache Lucene引擎单元和索引分片分配记录模块;

并且,索引分片分配记录模块则根据分配方案,更新每个节点的索引分片分配记录表;

Apache Lucene引擎单元根据所述分配方案,将分配方案中的索引分片ID对应的索引分片传输给相应节点号的可用节点进行存储和承担,或,将涉及分配方案中的索引分片的查询请求重定位到指向分配方案中与该索引分片对应的节点。

2.根据权利要求1所述的大数据云搜索系统,其特征在于,分配方案确定模块在按照所述承担数量将各热度等级上的待分配索引分片分派给可用节点时,还进一步获得待分配的索引分片的内容标识符;根据待分配的索引分片的内容标识符,确定待分配的索引分片之间的内容相关度,从而使被分配在同一可用节点的待分配的索引分片之间的内容相关度最小化而生成所述分配方案。

3.根据权利要求2所述的大数据云搜索系统,其特征在于,所述索引分片分析单元所生成的内容标识符包括数据源文件标识符与关键词标识符;其中,由同一个数据源文件或同一系列的数据源文件所生成的各索引分片具有相同的数据源文件标识符;所述索引分片分析单元分析每个索引分片存储的标记信息,从中提取关键词作为关键词标识符。

4.根据权利要求3所述的大数据云搜索系统,其特征在于,分配方案确定模块确定每两个待分配的索引分片之间的内容相关度,可按下述公式进行确定:R=a1·S+a2·K

其中R是表示两个待分配的索引分片之间的内容相关度的量化参数;S是根据两个待分配索引分片的数据源文件标识符评估的相关度量化参数;K表示根据两个待分配索引分片的关键词标识符的重合度所评估的相关度量化参数,a1与a2是加权求和系数。

5.根据权利要求4所述的大数据云搜索系统,其特征在于,在初次分配的情况下,索引分片分配记录模块则根据分配方案,更新每个节点的索引分片分配记录表,在该表中为本节点新承担下来的初次分配的每个索引分片建立条目,保存索引分片的索引分片ID、内容标识符、热度等级以及主副标识;在重新分配的情况下,索引分片分配记录模块根据分配方案中的节点号,查询到相应节点的索引分片分配记录表,进而根据分配方案当中的索引分片ID,查询到该索引分片的条目,将该条目的主副标识更新为主索引分片。

6.一种可应用于大数据云搜索系统的索引分片均衡方法,其特征在于,包括以下步骤:

基于Apache Lucene的搜索引擎架构,获得由各种类型的数据源文件转化的源文本数据,通过分析处理将源文本数据转换为标记;生成索引,将由所述标记保存在索引的数据结构之中;所生成的索引的文件形式为索引分片,临时缓存索引分片并将所述索引分片提供给节点集群进行存储;所述索引分片包括主索引分片和至少一个副本索引分片;每个索引分片具有自身的索引分片ID;

利用节点集群中的节点存储其被分配的索引分片,并承担索引分片被查询调用的负荷;

其中,按照如下步骤确定节点集群中各节点被分配的索引分片:

为索引分片生成内容标识符;

为节点集群中的每一个节点生成并存储一个索引分片分配记录表,索引分片分配记录表记录了在本节点上承担的每个索引分片的相关信息,所述相关信息中包括索引分片的索引分片ID、内容标识符、热度等级以及主副标识;

实时从集群的各节点获得节点处理能力参数,并通过节点能力状态列表对各节点实时的节点处理能力参数进行保存;

获取当前待分配的索引分片的索引分片ID;根据所获取的当前待分配的索引分片的索引分片ID,统计当前分布在各热度等级上的待分配索引分片的数量;确定集群中的可用节点及其节点号;通过查询所述节点能力状态列表当中各个可用节点的节点处理能力参数,决定各可用节点在各热度等级上分别承担的待分配索引分片的承担数量;按照该承担数量将各热度等级上的待分配索引分片分派给可用节点,形成分配方案;分配方案包括可用节点的节点号和每个可用节点被分配的索引分片的索引分片ID;

根据分配方案,更新每个节点的索引分片分配记录表;

根据所述分配方案,将分配方案中的索引分片ID对应的索引分片传输给相应节点号的可用节点进行存储和承担,或,将涉及分配方案中的索引分片的查询请求重定位到指向分配方案中与该索引分片对应的节点。

7.根据权利要求6所述的索引分片均衡方法,其特征在于,在按照所述承担数量将各热度等级上的待分配索引分片分派给可用节点时,还进一步获得待分配的索引分片的内容标识符;根据待分配的索引分片的内容标识符,确定待分配的索引分片之间的内容相关度,从而使被分配在同一可用节点的待分配的索引分片之间的内容相关度最小化而生成所述分配方案。

8.根据权利要求7所述的索引分片均衡方法,其特征在于,为索引分片所生成的内容标识符包括数据源文件标识符与关键词标识符;其中,由同一个数据源文件或同一系列的数据源文件所生成的各索引分片具有相同的数据源文件标识符;以及,分析每个索引分片存储的标记信息,从中提取关键词作为关键词标识符。

9.根据权利要求8所述的索引分片均衡方法,其特征在于,确定每两个待分配的索引分片之间的内容相关度,可按下述公式进行确定:R=a1·S+a2·K

其中R是表示两个待分配的索引分片之间的内容相关度的量化参数;S是根据两个待分配索引分片的数据源文件标识符评估的相关度量化参数;K表示根据两个待分配索引分片的关键词标识符的重合度所评估的相关度量化参数,a1与a2是加权求和系数。

10.根据权利要求9所述的索引分片均衡方法,其特征在于,在初次分配的情况下,根据分配方案,更新每个节点的索引分片分配记录表,在该表中为本节点新承担下来的初次分配的每个索引分片建立条目,保存索引分片的索引分片ID、内容标识符、热度等级以及主副标识;在重新分配的情况下,根据分配方案中的节点号,查询到相应节点的索引分片分配记录表,进而根据分配方案当中的索引分片ID,查询到该索引分片的条目,将该条目的主副标识更新为主索引分片。

说明书 :

一种基于索引分片均衡的大数据云搜索系统及其方法

技术领域

[0001] 本发明涉及一种应用云计算平台实现的大数据信息搜索技术,尤其涉及一种基于索引分片均衡的大数据云搜索系统及其方法。

背景技术

[0002] 在网络信息爆炸的大数据时代,构建高效、易用、精确的搜索功能及其平台是普遍的需求。不仅是谷歌、百度等专业级搜索网站需要不断优化和升级,即便是在普通的门户、论坛、社交或商务网站的服务中,也希望嵌入功能强大又节约资源和容易实现的网内和全网搜索工具,为目标客户提供便利。
[0003] Apache Lucene是一种开源、高度可扩展的搜索引擎架构,专注于网络信息的索引和搜索,可以为各类网站和应用构建搜索功能。Wikipedia、Linkedln等知名网站都应用了Apache Lucene的搜索引擎架构。
[0004] 图1示出了Apache Lucene搜索引擎的总体架构。Apache Lucene的搜索引擎架构总体上看包括分析器、索引编写器和查询引擎。Apache Lucene搜索引擎支持从网页、Word文档、PDF文档等各种各样的数据源当中提取文本数据并提供给分析器。分析器负责处理文本数据,将其转换为标记,后续将作为索引中的″项″(Term)而被添加到索引当中;分析器在生成标记的过程中对文本数据执行提取单词、移除通用单词、忽略标点、转换词根、大小写统一等各种转换,这样有利于搜索的准确,并可以减小后续所生成的索引的大小。索引编写器负责生成和管理索引,包括创建新的索引、更改现有索引、删除索引等操作,所生成的索引以索引文件的方式被保存在本地或者非本地的索引文件库当中;索引编写器的主要作用是将由分析器基于原始的文本数据转换而成的标记保存在索引的数据结构之中,索引是基本的搜索对象,其数据结构有利于利用关键词快速对索引进行查询。查询引擎进一步包括查询解析器和索引搜索器;查询解析器用于将用户输入的关键词、词组、短句等通过调用分析器转换为查询条件项;索引搜索器基于转换而来的查询条件项,在索引文件集的索引当中进行查询,根据索引与查询条件项的匹配程度计算分数,并按照分数的排序返回文档的集合,作为搜索结果反馈给用户。
[0005] 索引在Apache Lucene搜索引擎中居于核心位置,因而该引擎对于索引进行了多种优化,包括使索引文件在各种系统和平台上具有兼容性;在逆序索引的基础上又引入了索引分片技术,从而能够为文本数据生成若干小的索引分片,能够提升在索引当中搜索查询的速度。Apache Lucene搜索引擎为索引赋予的以上新特性,使之特别适合于实现云搜索系统。
[0006] 事实上,在面向大数据实现搜索服务的情况下,如果局限于在单一网络节点上建立索引文件库,则该节点所承担的查询负荷过重,超出了其处理能力,有可能造成搜索结果的生成延迟过大。因而,可以布署大量的用于存储索引分片的节点,组成一个分布式高可用的集群。对于由用户输入的关键词等所生成的查询请求,通过匹配分析将该查询请求指向特定的索引分片,则由存储该索引分片的节点来承担该索引分片被查询请求调用所产生的负荷。
[0007] 为了保证可靠性,还建立了副本机制,为主索引分片创立一个或多个副本索引分片,副本索引分片存储在主索引分片所在节点以外的其它节点上;如果主索引分片不可用,可以从副本索引分片中重新选出一个作为主索引分片,替代原来的主索引分片继续接受查询调用。
[0008] 由此可见,在基于Apache Lucene引擎所实现的云搜索系统当中,可以采用节点的集群来存储和承担索引分片,将搜索带来的负荷由集群中的各个节点分担,并且具有主备机制,可靠性有了很大的提高。
[0009] 不过,在上述方案中,又产生了新的问题,即大量的索引分片应该如何在各个节点之间进行分配。对于这个问题,目前Apache Lucene引擎没有给出可用的解决方案。现有技术中多采用固定的映射规则来进行分配,例如对于由数据源服务器A提供的文本数据所生成的索引分片,固定分配给节点Nodel进行存储和承担查询调用负荷,而数据源服务器B提供的数据源所生成的索引分片固定分配给节点Node2;或者,网页数据所生成的索引分片固定分配给节点Nodel,文档数据所生成的索引分片固定分配给节点Node2。还有的解决方案将各节点作为同一化处理,索引分片完全随机分配。以上分配方案很容易造成的缺陷是节点之间不均衡,部分节点所存储的索引分片数量过多以及由于索引分片被查询调用所带来的计算负荷过大,情况严重时又会造成部分节点过载。

发明内容

[0010] 鉴于上述现有技术中存在的以上问题,本发明提出一种基于索引分片均衡的大数据云搜索系统及其方法。本发明旨在解决基于Apache Lucene引擎的大数据云搜索系统当中,索引分片难于在集群的节点之间合理高效进行分配的问题。本发明能够实现索引分片被查询调用所带来的计算负荷在各个节点之间的均衡化分布,避免集群中部分节点过载造成的延迟过大等问题,也抑制部分节点过闲的现象存在。
[0011] 作为本发明的方案之一,集群会将由新数据源生成的大量的索引分片按照均衡原则分配到各个网络节点之上进行存储并提供查询;在副本机制下,当集群中的一个节点离线或不可用时,可以基于均衡原则,将该节点所承担的索引分片均衡地分配给其它节点,即均衡地将其它节点上的副本索引分片设为主索引分片,以替代该离线或不可用的节点上承担的原主索引分片来接受查询调用。
[0012] 本发明按照上述均衡原则进行索引分片的分配。在对索引分片在可用节点之间进行均衡分配的时候,需要考虑这些节点上已承担的索引分片的数量、索引分片的被查询调用的热度(即被查询调用的频繁程度)、节点自身处理能力等因素;例如,在节点处理能力相当的情况下,会使各节点承担的索引分片总数量和其中不同热度的索引分片所占比例趋于相近;在节点处理能力不等的情况下,使每个节点承担的索引分片总数量和其中不同热度的索引分片所占比例与节点自身处理能力趋于正比;总之,是基于节点的负荷和能力的因素进行均衡的分配。
[0013] 不过,在实践中发明人逐渐发现,单纯基于均衡原则进行并不完善,部分节点过载或过闲的现象仍然会时有发生。原因在于,在大数据平台之下,被大量查询调用的高热度索引分片其实是动态变化的,而均衡原则只能基于各索引分片被分配之时的热度,在各节点之间进行负荷的均衡,而不能适应一段时间之后索引分片热度的变化。举例来说,节点Node1承担着高热度的索引分片H1和H2、中热度索引分片M1和M2、低热度索引分片L1和L2;因该Node1离线,需要进行上述索引分片的重新分配,基于均衡原则,将H1、M1和L1分配给节点Node2承担,H2、M2和L2分配给节点Node3承担,在分配之时确实保证了Node2与Node3之间的负载均衡;但是,经过一段时间的变化,Node2承担的索引分片M1的热度变为了高热度,而Node3承担的索引分片H2变成了中热度,这样Node2的负荷就明显大于Node3了,产生了不均衡。实践当中,由于这一现象,造成集群节点之间的负荷均衡的维持时间一般较短,发生节点过闲或过载的机率相对较高。
[0014] 本发明人经进一步研究认为,索引分片的热度,是与其内容有密切关系的。例如,在世界杯期间,与″足球″有关的查询请求明显增加(当然查询请求包含的关键词不局限为″足球″,还包括球队名称、球星姓名甚至足球彩票等关键词);某条爆炸性新闻的出现,导致该新闻有关的查询请求量暴涨;这就导致内容与这些查询请求匹配的索引分片被查询调用的频率短时间明显增大,成为高热度的索引分片。相应地,如果在索引分片的分配过程中,在均衡原则的基础上,进一步将索引分片内容之间的相关度纳入考虑,将内容相关度高的索引分片分配在不同的节点上承担,那么由于某类内容被公众″热搜″所造成的一部分索引分片热度变化也就能够相对均衡地发生在各个节点之上,而不会因少数节点承担的索引分片被更多地转换为高热度索引分片而造成这些节点过载。
[0015] 因而,本发明的最优解决方案是,在对由新数据源产生的索引分片进行分配时,或者由于某个节点离线或不可用而需要对该节点承担的索引分片在可用节点之间进行重新分配时,考虑均衡原则的同时,进一步根据被分配的索引分片的内容相关度,将内容相关度高的索引分片分配在不同的节点上承担。
[0016] 根据本发明的上述方案,提供了一种基于索引分片均衡的大数据云搜索系统,其特征在于,包括:
[0017] Apache Lucene引擎单元,基于Apache Lucene的搜索引擎架构,包括分析器、索引编写器以及查询引擎模块;分析器获得由各种类型的数据源文件转化的源文本数据,通过分析处理将源文本数据转换为标记;索引编写器用于生成和管理索引,将由分析器转换而成的标记保存在索引的数据结构之中,所生成的索引的文件形式为索引分片,临时缓存索引分片并将所述索引分片提供给节点集群进行存储;所述索引分片包括主索引分片和至少一个副本索引分片;每个索引分片具有自身的索引分片ID;查询引擎模块进一步包括查询解析器和索引搜索器;查询解析器用于将用户输入的关键词、词组、短句等查询条件通过调用分析器转换为查询条件项,索引搜索器基于转换而来的查询条件项,向节点集群发起查询请求;索引搜索器获得节点集群的反馈结果,并根据该反馈结果确定索引分片与查询条件项的匹配程度,产生分数,并按照分数的排序返回搜索结果;
[0018] 节点集群,包括若干节点,所述节点用于存储由Apache Lucene引擎单元提供的索引分片,并承担索引分片被查询调用的负荷;节点集群接收所述查询请求,根据该查询请求所指向的索引分片,将查询请求分配给存储相应的索引分片的节点,由该节点响应该查询请求而在查询请求所指向的索引分片中完成查询相关的计算,生成反馈结果;
[0019] 索引分片分析单元,用于为索引分片生成内容标识符;
[0020] 索引分片分配管理单元,包括索引分片分配记录模块、节点能力状态管理模块和分配方案确定模块;其中
[0021] 索引分片分配记录模块,用于为节点集群中的每一个节点生成并存储一个索引分片分配记录表,索引分片分配记录表记录了在本节点上承担的每个索引分片的相关信息,所述相关信息中包括索引分片的索引分片ID、内容标识符、热度等级以及主副标识;
[0022] 节点能力状态管理模块,用于实时从集群的各节点获得节点处理能力参数,并通过节点能力状态列表对各节点实时的节点处理能力参数进行保存;
[0023] 分配方案确定模块,获取当前待分配的索引分片的索引分片ID;根据所获取的当前待分配的索引分片的索引分片ID,统计当前分布在各热度等级上的待分配索引分片的数量;确定集群中的可用节点及其节点号;通过查询所述节点能力状态列表当中各个可用节点的节点处理能力参数,决定各可用节点在各热度等级上分别承担的待分配索引分片的承担数量;按照该承担数量将各热度等级上的待分配索引分片分派给可用节点,形成分配方案;分配方案包括可用节点的节点号和每个可用节点被分配的索引分片的索引分片ID;将分配方案传输给Apache Lucene引擎单元和索引分片分配记录模块;
[0024] 并且,索引分片分配记录模块则根据分配方案,更新每个节点的索引分片分配记录表;
[0025] Apache Lucene引擎单元根据所述分配方案,将分配方案中的索引分片ID对应的索引分片传输给相应节点号的可用节点进行存储和承担,或,将涉及分配方案中的索引分片的查询请求重定位到指向分配方案中与该索引分片对应的节点。
[0026] 优选的是,分配方案确定模块在按照所述承担数量将各热度等级上的待分配索引分片分派给可用节点时,还进一步获得待分配的索引分片的内容标识符;根据待分配的索引分片的内容标识符,确定待分配的索引分片之间的内容相关度,从而使被分配在同一可用节点的待分配的索引分片之间的内容相关度最小化而生成所述分配方案。
[0027] 进一步优选的是,所述索引分片分析单元所生成的内容标识符包括数据源文件标识符与关键词标识符;其中,由同一个数据源文件或同一系列的数据源文件所生成的各索引分片具有相同的数据源文件标识符;所述索引分片分析单元分析每个索引分片存储的标记信息,从中提取关键词作为关键词标识符。
[0028] 进一步优选的是,分配方案确定模块确定每两个待分配的索引分片之间的内容相关度,可按下述公式进行确定:
[0029] R=a1·S+a2·K
[0030] 其中R是表示两个待分配的索引分片之间的内容相关度的量化参数;S是根据两个待分配索引分片的数据源文件标识符评估的相关度量化参数;K表示根据两个待分配索引分片的关键词标识符的重合度所评估的相关度量化参数,a1与a2是加权求和系数。
[0031] 进一步优选的是,在初次分配的情况下,索引分片分配记录模块则根据分配方案,更新每个节点的索引分片分配记录表,在该表中为本节点新承担下来的初次分配的每个索引分片建立条目,保存索引分片的索引分片ID、内容标识符、热度等级以及主副标识;在重新分配的情况下,索引分片分配记录模块根据分配方案中的节点号,查询到相应节点的索引分片分配记录表,进而根据分配方案当中的索引分片ID,查询到该索引分片的条目,将该条目的主副标识更新为主索引分片。
[0032] 本发明还提供了一种可应用于大数据云搜索系统的索引分片均衡方法,其特征在于,包括以下步骤:
[0033] 基于Apache Lucene的搜索引擎架构,获得由各种类型的数据源文件转化的源文本数据,通过分析处理将源文本数据转换为标记;生成索引,将由所述标记保存在索引的数据结构之中;所生成的索引的文件形式为索引分片,临时缓存索引分片并将所述索引分片提供给节点集群进行存储;所述索引分片包括主索引分片和至少一个副本索引分片;每个索引分片具有自身的索引分片ID;
[0034] 利用节点集群中的节点存储其被分配的索引分片,并承担索引分片被查询调用的负荷;
[0035] 其中,按照如下步骤确定节点集群中各节点被分配的索引分片:
[0036] 为索引分片生成内容标识符;
[0037] 为节点集群中的每一个节点生成并存储一个索引分片分配记录表,索引分片分配记录表记录了在本节点上承担的每个索引分片的相关信息,所述相关信息中包括索引分片的索引分片ID、内容标识符、热度等级以及主副标识;
[0038] 实时从集群的各节点获得节点处理能力参数,并通过节点能力状态列表对各节点实时的节点处理能力参数进行保存;
[0039] 获取当前待分配的索引分片的索引分片ID;根据所获取的当前待分配的索引分片的索引分片ID,统计当前分布在各热度等级上的待分配索引分片的数量;确定集群中的可用节点及其节点号;通过查询所述节点能力状态列表当中各个可用节点的节点处理能力参数,决定各可用节点在各热度等级上分别承担的待分配索引分片的承担数量;按照该承担数量将各热度等级上的待分配索引分片分派给可用节点,形成分配方案;分配方案包括可用节点的节点号和每个可用节点被分配的索引分片的索引分片ID;
[0040] 根据分配方案,更新每个节点的索引分片分配记录表;
[0041] 根据所述分配方案,将分配方案中的索引分片ID对应的索引分片传输给相应节点号的可用节点进行存储和承担,或,将涉及分配方案中的索引分片的查询请求重定位到指向分配方案中与该索引分片对应的节点。
[0042] 优选的是,在按照所述承担数量将各热度等级上的待分配索引分片分派给可用节点时,还进一步获得待分配的索引分片的内容标识符;根据待分配的索引分片的内容标识符,确定待分配的索引分片之间的内容相关度,从而使被分配在同一可用节点的待分配的索引分片之间的内容相关度最小化而生成所述分配方案。
[0043] 进一步优选的是,为索引分片所生成的内容标识符包括数据源文件标识符与关键词标识符;其中,由同一个数据源文件或同一系列的数据源文件所生成的各索引分片具有相同的数据源文件标识符;以及,分析每个索引分片存储的标记信息,从中提取关键词作为关键词标识符。
[0044] 进一步优选的是,确定每两个待分配的索引分片之间的内容相关度,可按下述公式进行确定:
[0045] R=a1·S+a2·K
[0046] 其中R是表示两个待分配的索引分片之间的内容相关度的量化参数;S是根据两个待分配索引分片的数据源文件标识符评估的相关度量化参数;K表示根据两个待分配索引分片的关键词标识符的重合度所评估的相关度量化参数,a1与a2是加权求和系数。
[0047] 进一步优选的是,在初次分配的情况下,根据分配方案,更新每个节点的索引分片分配记录表,在该表中为本节点新承担下来的初次分配的每个索引分片建立条目,保存索引分片的索引分片ID、内容标识符、热度等级以及主副标识;在重新分配的情况下,根据分配方案中的节点号,查询到相应节点的索引分片分配记录表,进而根据分配方案当中的索引分片ID,查询到该索引分片的条目,将该条目的主副标识更新为主索引分片。
[0048] 从而,在本发明提出的基于索引分片均衡的大数据云搜索系统及其方法当中,对索引分片在集群中的可用节点之间的分配,不仅考虑了节点之间负荷的均衡,还考虑了被分配的索引分片在自身内容上的相关性,将相关性高的索引分片分配给不同的节点进行承担,从而合理高效地解决了分配问题。本发明能够实现索引分片被查询调用所带来的计算负荷在各个节点之间的均衡化分布,特别是能够使由于某类内容被公众″热搜″所造成的一部分索引分片热度提升相对均衡地发生在各个节点之上,避免集群中部分节点过载造成的延迟过大等问题,也抑制部分节点过闲的现象存在。
[0049] 说明书附图
[0050] 图1是现有Apache Lucene搜索引擎的总体架构示意图;
[0051] 图2是本发明所述基于索引分片均衡的大数据云搜索系统架构示意图。

具体实施方式

[0052] 下面通过实施例,对本发明的技术方案做进一步具体的说明。
[0053] 图2是本发明所述的基于索引分片均衡的大数据云搜索系统架构示意图。该索引分片均衡的大数据云搜索系统包括:
[0054] Apache Lucene引擎单元1,该单元基于Apache Lucene的搜索引擎架构,包括分析器、索引编写器以及查询引擎模块。Apache Lucene引擎单元将网页、Word文档、PDF文档等各种类型的数据源文件转化为源文本数据,提供给分析器。分析器将源文本数据转换为标记,所述标记后续将作为索引中的″项″(Term)而被添加到索引当中。索引编写器负责生成和管理索引,将由分析器转换而成的标记保存在索引的数据结构之中;索引编写器可以执行创建新的索引、更改现有索引、删除索引等操作。索引编写器所生成的索引的文件形式为索引分片,通过将初始的数据源文件转换为大量小的索引分片,可以提高搜索过程中对索引的查询效率。在本发明的云搜素平台当中,索引分片由Apache Lucene引擎单元提供给节点集群2,由节点集群2中的各个节点2-1至2-N长期存储索引分片并且承担索引分片被查询调用所产生的计算和网络传输等负荷,索引编写器仅临时缓存索引分片。对索引分片采用副本机制,为主索引分片创立一个或多个副本索引分片,副本索引分片存储在主索引分片所在节点以外的其它节点上;如果主索引分片不可用,可以从副本索引分片中重新选出一个作为主索引分片。查询引擎模块进一步包括查询解析器和索引搜索器;查询解析器用于将用户输入的关键词、词组、短句等通过调用分析器转换为查询条件项;索引搜索器基于转换而来的查询条件项,向节点集群2发起查询请求。节点集群2根据该查询请求所指向的索引分片,将查询请求分配给存储相应的索引分片的节点;由该节点响应该查询请求而在查询请求所指向的索引分片中完成查询相关的计算,反馈结果给查询引擎模块;索引搜索器根据该结果确定索引分片与查询条件项的匹配程度,产生分数,并按照分数的排序返回搜索结果。
[0055] 为了实现本发明提出的索引分片均衡的节点间分配方案,在节点集群2中设置索引分片分配管理单元3。索引分片分配管理单元3进一步包括索引分片分配记录模块,该模块为集群中的每一个节点2-1至2-N生成并存储一个索引分片分配记录表。该索引分片分配记录表记录了在本节点上承担的每个索引分片的相关信息。
[0056] 所述索引分片的相关信息包括以下信息项:(1)每个索引分片的索引分片ID,索引分片ID是每个索引分片具有的编号或名称;(2)每个索引分片的内容标识符,内容标识符由索引分片分析单元4生成,其具体生成过程将在下文介绍;(3)每个索引分片的热度等级,如前文所述,热度是索引分片的被查询调用的频繁程度,可以用一预定统计时间段内索引分片被查询调度的频率来表示该索引分片的热度;并且根据阈值区间将索引分片的热度归入热度等级;例如频率足够大则该索引分片的热度等级是高热度,频率低于一定阈值则热度等级是低热度,居中则是中热度;集群中的节点实时或定期统计其承担的索引分片的热度,并传输给索引分片分配管理单元3,由索引分片分配管理单元3对该节点对应的索引分片分配记录表当中的热度等级进行更新;(4)每个索引分片的主副标识,表明索引分片当前是主索引分片还是副本索引分片。
[0057] 索引分片分析单元4用于为索引分片生成所述内容标识符。每当Apache Lucene引擎单元1为新的数据源文件生成了索引分片之后,在该索引分片被初次分配至集群中的节点之前,先由Apache Lucene引擎单元1缓存在一缓存存储器当中;进而,Apache Lucene引擎单元1向索引分片分析单元4发送分析请求;响应分析请求,索引分片分析单元4从该缓存存储器当中读取各个索引分片,并通过分析索引分片生成索引分片的内容标识符,索引分片分析单元4将内容标识符与被分析索引分片的索引分片ID相关联,然后内容标识符和索引分片ID一起被索引分片分析单元4传输给索引分片分配管理单元3。索引分片分配管理单元3将内容标识符应用于对待分配的索引分片进行初次分配,下文将予以介绍。分配之后,内容标识符将作为索引分片的相关信息而被存储在索引分片分配记录表当中。
[0058] 索引分片分析单元4为索引分片所生成的内容标识符包括数据源文件标识符与关键词标识符。对于由同一个数据源文件或同一系列的数据源文件(例如一个很长的文档被分为上、中、下等一系列分文档,同一个题目下的一系列连载网页)所生成的各索引分片,索引分片分析单元4为这些索引分片生成相同的数据源文件标识符;具有相同的数据源文件标识符的索引分片因来自同一个或同一系列数据源文件,因而可以认为内容相关度较高。索引分片分析单元4还获取每个索引分片存储在其项当中的标记信息,对标记信息进行分析,从中提取关键词(例如,统计标记信息中的词频,词频最高的若干个词被作为关键词),作为所述关键词标识符。显然,索引分片的关键词标识符的重合度越高,则其内容相关度越高。
[0059] 根据均衡原则以及索引分片的内容相关度,本发明可由索引分片分配管理单元3对待分配的索引分片在集群的各节点之间进行分配,下面具体介绍。
[0060] 索引分片分配管理单元3获取当前待分配的索引分片的索引分片ID。当前待分配的索引分片来自两种情况:一是有新的数据源文件由Apache Lucene引擎单元1生成了索引分片,需要初次分配给节点集群2中各个节点进行存储和承担;二是节点集群2中的一个节点离线或不可用,因而需要将其它可用节点上的副本索引分片设为主索引分片,以替代该离线或不可用的节点上承担的原主索引分片,相当于将不可用的节点上的主索引分片重新分配到其它节点。前一种情况下,待分配索引分片的索引分片ID由Apache Lucene引擎单元1提供给索引分片分配管理单元3;后一种情况下,节点集群2将不可用节点的节点号传输给索引分片分配管理单元3,索引分片分配管理单元3通过该节点号查询该不可用节点对应的索引分片分配记录表,根据该表中记录的每个索引分片的主副标识,将其中的主索引分片作为待分配索引分片,进而获得待分配索引分片的索引分片ID。
[0061] 索引分片分配管理单元3具有节点能力状态管理模块,该模块实时从集群的各节点获得节点处理能力参数,并通过节点能力状态列表对各节点实时的节点处理能力参数进行保存。节点处理能力参数是根据每个节点的可用计算能力、可用内存空间、可用传输带宽等因素计算的一个比例系数;例如,根据节点2-1与节点2-N各自的可用计算能力、可用内存空间、可用传输带宽,确定节点2-1对索引分片被查询调用所产生的负荷的可用处理能力是节点2-N的5倍,若将节点2-N的可用处理能力定义为基准值,则为节点2-1确定的比例系数为5,而节点2-N的比例系数为1。
[0062] 索引分片分配管理单元3具有分配方案确定模块,分配方案确定模块根据所获取的当前待分配的索引分片的索引分片ID,统计当前分布在各热度等级上的待分配索引分片的数量。对于初次分配的索引分片,因其热度尚未得到确定,则可以默认其为中热度的索引分片;对于重新分配的索引分片,分配方案确定模块可以通过查询索引分片分配记录表而取得待分配索引分片的热度等级。例如,可以确定当前待分配的全部索引分片当中,高热度等级的索引分片数量为6,中热度等级的索引分片数量为18,低热度等级的索引分片数量为24。
[0063] 分配方案确定模块确定集群中的可用节点及其节点号。在初次分配的情况下,集群中的全部具有剩余处理能力的节点均可以作为可用节点。但是,在重新分配的情况下,只有保存了待分配的主索引分片的副本索引分片的节点才能够作为可用节点。但是,在重新分配的情况下,也可以将全部具有剩余处理能力的节点均可以作为可用节点,然后利用下文中介绍的副本传输机制实现副本在节点之间的交换共享。
[0064] 分配方案确定模块基于均衡原则,通过查询所述节点能力状态列表当中作为节点处理能力参数的比例系数,按比例系数决定各可用节点在各热度等级上分别承担的待分配索引分片的数量。例如,前述节点2-1确定的比例系数为5,而节点2-N的比例系数为1,则节点2-1承担高热度等级的待分配索引分片的数量为5,节点2-N承担高热度等级的待分配索引分片的数量为1,即使所承担的数量与比例系数成正比;相应的,节点2-1承担中热度等级的待分配索引分片的数量为15,节点2-N承担中热度等级的待分配索引分片的数量为3;节点2-1承担低热度等级的待分配索引分片的数量为20,节点2-N承担低热度等级的待分配索引分片的数量为4。
[0065] 分配方案确定模块按照均衡原则确定了各可用节点在各热度等级上分别承担的待分配索引分片的数量。可以按照该数量将各热度等级上的待分配索引分片随机分派给可用节点2-1至2-N。但如果根据本发明的优选方案进行分派,还要进一步考虑索引分片的内容相关度。
[0066] 因此,索引分片分配管理单元3的分配方案确定模块获得待分配的索引分片的内容标识符。如果是初次分配,分配方案确定模块可以根据待分配索引分片的索引分片ID,从索引分片分析单元4直接取得内容标识符;对于重新分配,可以根据待分配索引分片的索引分片ID通过查询索引分片分配记录表而取得待分配索引分片的内容标识符。
[0067] 分配方案确定模块根据待分配的索引分片的内容标识符,确定每两个待分配索引分片之间的内容相关度。确定内容相关度时,要考虑数据源文件标识符和关键词标识符两个方面。可按下述公式进行确定:
[0068] R=a1·S+a2·K
[0069] 其中R是表示两个待分配索引分片之间的内容相关度的量化参数;S是根据两个待分配索引分片的数据源文件标识符评估的相关度量化参数;如果这两个待分配索引分片的数据源文件标识符一致,表明二者来自同一个或同一系列数据源文件,则S取一个预定值(大于0);如果两个待分配索引分片的数据源文件标识符不一致,则S取值为0。K表示根据两个待分配索引分片的关键词标识符的重合度所评估的相关度量化参数,重合度可按二者的关键词标识符中相同的关键词所占总关键词数的占比来确定,并将将不同的占比区间映射为不同的预定K值;显然,重合度越高,二者内容相关度越高,则K值越大。将S和K加权求和,作为R,a1与a2是加权系数。如果搜索服务面向指定的有限的数据源,则可以降低S的加权比例,主要依靠K来计算内容相关度;如果面向的是不特定的海量的数据源,则可以加大S的加权比例。
[0070] 进而,索引分片分配管理单元3的分配方案确定模块根据内容相关度,将同一热度等级下的待分配索引分片分为若干个子集,每个子集对应一个可用节点,子集中的待分配索引分片的数量与该节点在本热度等级中承担的待分配索引分片的数量相同。例如,高热度等级的待分配索引分片分为两个子集,第一子集内的待分配索引分片数量为5,供节点2-1承担,第二子集内待分配索引分片数量为1,供节点2-N承担。中热度等级的待分配索引分片也分为两个子集,第一子集内的待分配索引分片数量为15,供节点2-1承担,第二子集内待分配索引分片数量为3,供节点2-N承担。低热度等级的待分配索引分片同样分为两个子集,第一子集内的待分配索引分片数量为20,供节点2-1承担,第二子集内待分配索引分片数量为4,供节点2-N承担。并且,以使各子集的索引分片两两之间的内容相关度值的总累加和最小的方式,决定分入每个子集中的待分配索引分片。即,设中热度等级的索引分片记为P1-P18,取其中15个如P1-P15,计算它们两两之间的内容相关度值的累加和;对于P16-P18,也计算它们每两个彼此之间的内容相关度值的累加和;再将两个累加和相加作为第一总累加和。再取其中15个如P2-P16,计算它们两两之间的内容相关度值的累加和;然后对于P1、P17、P18,也计算它们两两之间的内容相关度值的累加和;再将两个累加和相加作为第二总累加和。依次类推,完成所有的排列组合方式,将所得总累加和最小的一种组合方式下的15个索引分片和3个索引分片分别分入第一子集和第二子集。从而,保证了总内容相关度的最小化。分配方案确定模块根据各热度等级的待分配索引分片的各个子集,生成分配方案。所述分配方案包括各个子集对应的节点号,子集内的索引分片的索引分片ID。
[0071] 在此之后,索引分片分配管理单元3的分配方案确定模块按照所述分配方案来控制对索引分片在各节点之间的分配。
[0072] 在初次分配的情况下,索引分片分配管理单元3将分配方案传输给Apache Lucene引擎单元1和索引分片分配记录模块;Apache Lucene引擎单元1按照分配方案中各个子集的节点号及索引分片ID,将索引分片ID对应的索引分片传输给相应节点号的节点进行存储和承担;索引分片分配记录模块则根据分配方案,更新每个节点的索引分片分配记录表,在该表中为本节点新承担下来的初次分配的每个索引分片建立条目,保存索引分片的索引分片ID、内容标识符、热度等级以及主副标识。
[0073] 在重新分配的情况下,索引分片分配管理单元3将分配方案传输给Apache Lucene引擎单元1和索引分片分配记录模块,索引分片分配记录模块则根据分配方案,更新每个节点的索引分片分配记录表;根据分配方案中的各个子集的节点号,查询到相应节点的索引分片分配记录表,进而根据该子集的索引分片ID,查询到该索引分片的条目,将该条目的主副标识更新为主索引分片。Apache Lucene引擎单元1根据该分配方案,将涉及到其中的索引分片的查询请求重定位到指向重新分配后新的节点。本发明还可以进一步实现副本传输机制,如果新的节点上没有被分配的索引分片的副本或者副本已不可用,则可以向索引分片分配管理单元3反馈无索引分片副本,索引分片分配管理单元3会指令集群中具有该副本的节点向提出反馈的节点传输索引分片副本;提出反馈的节点收到索引分片的副本之后则按照分配方案承担相应的查询调用。
[0074] 从而,在本发明提出的基于索引分片均衡的大数据云搜索系统及其方法当中,对索引分片在集群中的可用节点之间的分配,不仅考虑了节点之间负荷的均衡,还考虑了被分配的索引分片在自身内容上的相关性,将相关性高的索引分片分配给不同的节点进行承担,从而合理高效地解决了分配问题。本发明能够实现索引分片被查询调用所带来的计算负荷在各个节点之间的均衡化分布,特别是能够使由于某类内容被公众″热搜″所造成的一部分索引分片热度提升相对均衡地发生在各个节点之上,避免集群中部分节点过载造成的延迟过大等问题,也抑制部分节点过闲的现象存在。
[0075] 以上实施例仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。