《一种搜索引擎的扩容方法及搜索服务系统.pdf》由会员分享,可在线阅读,更多相关《一种搜索引擎的扩容方法及搜索服务系统.pdf(24页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104156367A43申请公布日20141119CN104156367A21申请号201310178009722申请日20130514G06F17/3020060171申请人阿里巴巴集团控股有限公司地址英属开曼群岛大开曼资本大厦一座四层847号邮箱72发明人柳明74专利代理机构北京安信方达知识产权代理有限公司11262代理人解婷婷栗若木54发明名称一种搜索引擎的扩容方法及搜索服务系统57摘要本申请公开了一种搜索引擎的扩容方法及搜索服务系统;方法包括为用于扩容的检索节点创建扩容任务;用于扩容的检索节点领取到扩容任务后,在分布式文件系统上复制最新时间点的全量索引,然后消费所述分。
2、布式文件系统中从所述最新时间点开始、到当前时间点为止的所有增量数据;所述全量索引是对全量数据所做的索引;所述全量数据是以全量周期为间隔导入到所述分布式文件系统上的源数据;所述增量数据是以固定时间间隔定时导入到所述分布式文件系统中、以时间快照方式存储的源数据。本申请能够平滑地、对业务方透明地对搜索服务在线扩容。51INTCL权利要求书3页说明书15页附图5页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书15页附图5页10申请公布号CN104156367ACN104156367A1/3页21一种搜索引擎的扩容方法,包括为用于扩容的检索节点创建扩容任务;用于扩容的检索节点领取到。
3、扩容任务后,在分布式文件系统上复制最新时间点的全量索引,然后消费所述分布式文件系统中从所述最新时间点开始、到当前时间点为止的所有增量数据;所述全量索引是对全量数据所做的索引;所述全量数据是以全量周期为间隔导入到所述分布式文件系统上的源数据;所述增量数据是以固定时间间隔定时导入到所述分布式文件系统中、以时间快照方式存储的源数据。2如权利要求1所述的方法,其特征在于,所述为用于扩容的检索节点创建扩容任务的步骤包括当请求量增加,导致当前检索节点无法承载时,创建增加各列索引的副本的扩容任务;所述用于扩容的检索节点为用于承载新增副本的检索节点,个数为列索引的个数与所增加的副本个数的乘积;当索引规模变大,。
4、导致单次请求平均响应变慢时,创建增加列索引的个数的扩容任务;所述用于扩容的检索节点为用于承载新增列索引的检索节点,个数为增加的列索引个数与各列索引副本个数的乘积。3如权利要求1所述的方法,其特征在于,还包括对于全量索引中的各索引行,分别将各索引行的唯一键对于虚拟组的总个数取模,得到各索引行的取模结果;分别将各索引行分入组号等于该索引行的取模结果的虚拟组中;分别将每个虚拟组的组号对于列索引的总个数取模,得到各虚拟组的取模结果;分别将各虚拟组对应于分片号等于该虚拟组取模结果的列索引;所述检索节点在分布式文件系统上复制最新时间点的全量索引的步骤包括检索节点在分布式文件系统上复制本检索节点所承载的列索。
5、引对应的虚拟组中最新时间点的各索引行。4如权利要求1所述的方法,其特征在于,还包括客户端节点周期性从分布式文件系统导入全量数据;每次导入后,承载列索引的各检索节点中具有控制角色的检索节点消费导入的全量数据,生成全量索引并将该全量索引回流到分布式文件系统;将回流到分布式文件系统上的全量索引复制到本地作为新的全量索引,将索引路径指向所述新的全量索引。5如权利要求4所述的方法,其特征在于,所述方法还包括客户端节点启动后连接分布式服务框架系统,判断是否已生成本身所承载的搜索服务的路径;如果该路径没生成,则客户端节点生成该路径并将自身IP以该路径的数据注册;如果该路径已生成,则判断该路径下的数据是否和自。
6、身IP一致,如果一致则该客户端节点获得执行增量、全量数据导入分布式文件系统的权限;如果不一致则监视该路径;如果获得执行增量、全量数据导入分布式文件系统的权限的客户端节点在预定时间长度内没有任何心跳检查,则所述分布式服务框架系统删除所述路径;所有监视了该路径的客户端节点将触发一次监视者事件;所述监视者事件是指重新生成所述路径并将自身IP以该路径的数据注册。6如权利要求1到5中任一项所述的方法,其特征在于,所述消费分布式文件系统中从权利要求书CN104156367A2/3页3所述最新时间点开始、到当前时间点为止的所有增量数据的步骤后还包括用于扩容的检索节点对外发布搜索服务;中心节点在用于扩容的检索。
7、节点发布搜索服务后,保存该搜索服务分布的索引存储结构的视图关系;在所有用于扩容的检索节点发布搜索服务成功后,中心节点将所述视图关系同步到分布式服务框架系统中;所述分布式服务框架系统将该视图关系推送到属于该搜索服务的客户端节点。7一种搜索服务系统,包括检索节点、客户端节点、分布式文件系统;其特征在于,还包括中心节点,用于为用于扩容的检索节点创建扩容任务;用于扩容的检索节点用于当领取到扩容任务后在分布式文件系统上复制最新时间点的全量索引,然后消费所述分布式文件系统中从所述最新时间点开始、到当前时间点为止的所有增量数据;所述全量索引是对全量数据所做的索引;所述全量数据是所述客户端节点以全量周期为间隔。
8、导入到所述分布式文件系统上的源数据;所述增量数据是所述客户端节点以固定时间间隔定时导入到所述分布式文件系统中并以时间快照方式存储的源数据。8如权利要求7所述的系统,其特征在于,所述中心节点为用于扩容的检索节点创建扩容任务是指所述中心节点当请求量增加,导致当前检索节点无法承载时,创建增加各列索引的副本的扩容任务,所述用于扩容的检索节点为用于承载新增副本的检索节点,个数为列索引的个数与所增加的副本个数的乘积;当索引规模变大,导致单次请求平均响应变慢时,创建增加列索引的个数的扩容任务,所述用于扩容的检索节点为用于承载新增列索引的检索节点,个数为增加的列索引个数与各列索引副本个数的乘积。9如权利要求7。
9、所述的系统,其特征在于所述分布式文件系统用于在检索节点复制最新时间点的全量索引前,对于全量索引中的各索引行,分别将各索引行的唯一键对于虚拟组的总个数取模,得到各索引行的取模结果;分别将各索引行分入组号等于该索引行的取模结果的虚拟组中;分别将每个虚拟组的组号对于列索引的总个数取模,得到各虚拟组的取模结果;分别将各虚拟组对应于分片号等于该虚拟组的取模结果的列索引;所述检索节点在分布式文件系统上复制最新时间点的全量索引是指检索节点在分布式文件系统上复制本检索节点所承载的列索引对应的虚拟组中最新时间点的各索引行。10如权利要求7所述的系统,其特征在于所述客户端节点用于周期性从分布式文件系统导入全量数据。
10、;承载列索引的各检索节点中具有控制角色的检索节点还用于在每次客户端节点导入全量数据后,消费导入的全量数据,生成全量索引并将该全量索引回流到分布式文件系统;将回流到分布式文件系统上的全量索引复制到本地,作为新的全量索引,将索引路径指向所述新的全量索引。11如权利要求7到10中任一项所述的系统,其特征在于,还包括分布式服务框架系统;权利要求书CN104156367A3/3页4所述客户端节点还用于在启动后连接分布式服务框架系统,判断是否已生成本身所承载的搜索服务的路径;如果该路径没生成,则生成该路径并将自身IP以该路径的数据注册;如果该路径已生成,则判断该路径下的数据是否和自身IP一致,如果一致则获。
11、得执行增量、全量数据导入分布式文件系统的权限,开始周期性从分布式文件系统导入全量数据;如果不一致则监视该路径,当该路径被删除时触发一次监视者事件;所述监视者事件是指重新生成所述路径并将自身IP以该路径的数据注册;所述分布式服务框架系统用于当获得执行增量、全量数据导入分布式文件系统的权限的客户端节点在预定时间长度内没有任何心跳检查时删除所述路径。12如权利要求11所述的系统,其特征在于所述检索节点还用于在消费所述分布式文件系统中从所述最新时间点开始、到当前时间点为止的所有增量数据后,对外发布搜索服务;所述中心节点还用于在用于扩容的检索节点发布搜索服务后,保存该搜索服务分布的索引存储结构的视图关系。
12、;在所有用于扩容的检索节点发布搜索服务成功后,将所述视图关系同步到所述分布式服务框架系统中;所述分布式服务框架系统还用于将该视图关系推送到属于该搜索服务的客户端节点。权利要求书CN104156367A1/15页5一种搜索引擎的扩容方法及搜索服务系统技术领域0001本发明涉及搜索领域,尤其涉及一种搜索引擎的扩容方法及搜索服务系统。背景技术0002对于搜索引擎而言,在线上已运行的搜索服务可能因为规模变化,导致以下2个问题00031承载某SHARD搜索服务索引中的列索引的若干台机器已经不再适用当前的查询请求量;00042单索引规模变大导致搜索性能下降,需要将单索引进一步切分。0005要解决上述2个问。
13、题就需要提供一种扩容的方案来解决,而这种扩容的实现方案不能影响正常的线上应用,也即是说整个扩容期间对业务方使用搜索服务来说是透明的。0006对于数据库,现有技术提供了一种基于一致性HASH的扩容方案。基于一致性HASH的扩容方案在确实能解决数据库数据热点和扩容方面的问题,遇到热点数据,只需要单独给这些数据更多的计算和存储资源。遇到扩容问题,只需要将老节点的数据移动到新节点即可。在数据库应用中采用一致性HASH的扩容较成熟,能有效解决热点问题、解决扩容问题。0007但是该扩容方案需要迁移数据为代价,而对于将搜索引擎的数据进行迁移几乎是不可能的,因为搜索引擎的数据都是以倒排表的存储结构,并没有任何。
14、功能接口可以将索引中的数据部分倒腾出来然后迁移到一个新的机器节点上,并以新的索引结构存储下来;换句话说是索引并没有通过某种规则变化从而可以进行切分迁移的功能。所以基于一致性HASH的扩容方案在对于搜索引擎的扩容方面并不适合。0008申请内容0009本申请要解决的技术问题是如何平滑地、对业务方透明地对搜索服务在线扩容。0010为了解决上述问题,本申请提供了一种搜索引擎的扩容方法,包括0011为用于扩容的检索节点创建扩容任务;0012用于扩容的检索节点领取到扩容任务后,在分布式文件系统上复制最新时间点的全量索引,然后消费所述分布式文件系统中从所述最新时间点开始、到当前时间点为止的所有增量数据;所述。
15、全量索引是对全量数据所做的索引;所述全量数据是以全量周期为间隔导入到所述分布式文件系统上的源数据;所述增量数据是以固定时间间隔定时导入到所述分布式文件系统中、以时间快照方式存储的源数据。0013进一步地,所述为用于扩容的检索节点创建扩容任务的步骤包括0014当请求量增加,导致当前检索节点无法承载时,创建增加各列索引的副本的扩容任务;所述用于扩容的检索节点为用于承载新增副本的检索节点,个数为列索引的个数与所增加的副本个数的乘积;0015当索引规模变大,导致单次请求平均响应变慢时,创建增加列索引的个数的扩容任务;所述用于扩容的检索节点为用于承载新增列索引的检索节点,个数为增加的列索引说明书CN10。
16、4156367A2/15页6个数与各列索引副本个数的乘积。0016进一步地,所述的方法还包括0017对于全量索引中的各索引行,分别将各索引行的唯一键对于虚拟组的总个数取模,得到各索引行的取模结果;分别将各索引行分入组号等于该索引行的取模结果的虚拟组中;0018分别将每个虚拟组的组号对于列索引的总个数取模,得到各虚拟组的取模结果;分别将各虚拟组对应于分片号等于该虚拟组取模结果的列索引;0019所述检索节点在分布式文件系统上复制最新时间点的全量索引的步骤包括0020检索节点在分布式文件系统上复制本检索节点所承载的列索引对应的虚拟组中最新时间点的各索引行。0021进一步地,所述的方法还包括0022客。
17、户端节点周期性从分布式文件系统导入全量数据;0023每次导入后,承载列索引的各检索节点中具有控制角色的检索节点消费导入的全量数据,生成全量索引并将该全量索引回流到分布式文件系统;将回流到分布式文件系统上的全量索引复制到本地作为新的全量索引,将索引路径指向所述新的全量索引。0024进一步地,所述的方法还包括0025客户端节点启动后连接分布式服务框架系统,判断是否已生成本身所承载的搜索服务的路径;0026如果该路径没生成,则客户端节点生成该路径并将自身IP以该路径的数据注册;如果该路径已生成,则判断该路径下的数据是否和自身IP一致,如果一致则该客户端节点获得执行增量、全量数据导入分布式文件系统的权。
18、限;如果不一致则监视该路径;0027如果获得执行增量、全量数据导入分布式文件系统的权限的客户端节点在预定时间长度内没有任何心跳检查,则所述分布式服务框架系统删除所述路径;所有监视了该路径的客户端节点将触发一次监视者事件;所述监视者事件是指重新生成所述路径并将自身IP以该路径的数据注册。0028进一步地,所述消费分布式文件系统中从所述最新时间点开始、到当前时间点为止的所有增量数据的步骤后还包括0029用于扩容的检索节点对外发布搜索服务;0030中心节点在用于扩容的检索节点发布搜索服务后,保存该搜索服务分布的索引存储结构的视图关系;0031在所有用于扩容的检索节点发布搜索服务成功后,中心节点将所述。
19、视图关系同步到分布式服务框架系统中;0032所述分布式服务框架系统将该视图关系推送到属于该搜索服务的客户端节点。0033本申请还提供了一种搜索服务系统,包括检索节点、客户端节点、分布式文件系统;0034中心节点,用于为用于扩容的检索节点创建扩容任务;0035用于扩容的检索节点用于当领取到扩容任务后在分布式文件系统上复制最新时间点的全量索引,然后消费所述分布式文件系统中从所述最新时间点开始、到当前时间点为止的所有增量数据;所述全量索引是对全量数据所做的索引;所述全量数据是所述客户说明书CN104156367A3/15页7端节点以全量周期为间隔导入到所述分布式文件系统上的源数据;所述增量数据是所述。
20、客户端节点以固定时间间隔定时导入到所述分布式文件系统中并以时间快照方式存储的源数据。0036进一步地,所述中心节点为用于扩容的检索节点创建扩容任务是指0037所述中心节点当请求量增加,导致当前检索节点无法承载时,创建增加各列索引的副本的扩容任务,所述用于扩容的检索节点为用于承载新增副本的检索节点,个数为列索引的个数与所增加的副本个数的乘积;当索引规模变大,导致单次请求平均响应变慢时,创建增加列索引的个数的扩容任务,所述用于扩容的检索节点为用于承载新增列索引的检索节点,个数为增加的列索引个数与各列索引副本个数的乘积。0038进一步地,所述分布式文件系统用于在检索节点复制最新时间点的全量索引前,对。
21、于全量索引中的各索引行,分别将各索引行的唯一键对于虚拟组的总个数取模,得到各索引行的取模结果;分别将各索引行分入组号等于该索引行的取模结果的虚拟组中;分别将每个虚拟组的组号对于列索引的总个数取模,得到各虚拟组的取模结果;分别将各虚拟组对应于分片号等于该虚拟组的取模结果的列索引;0039所述检索节点在分布式文件系统上复制最新时间点的全量索引是指0040检索节点在分布式文件系统上复制本检索节点所承载的列索引对应的虚拟组中最新时间点的各索引行。0041进一步地,所述客户端节点用于周期性从分布式文件系统导入全量数据;0042承载列索引的各检索节点中具有控制角色的检索节点还用于在每次客户端节点导入全量数。
22、据后,消费导入的全量数据,生成全量索引并将该全量索引回流到分布式文件系统;将回流到分布式文件系统上的全量索引复制到本地,作为新的全量索引,将索引路径指向所述新的全量索引。0043进一步地,所述的系统还包括0044分布式服务框架系统;0045所述客户端节点还用于在启动后连接分布式服务框架系统,判断是否已生成本身所承载的搜索服务的路径;如果该路径没生成,则生成该路径并将自身IP以该路径的数据注册;如果该路径已生成,则判断该路径下的数据是否和自身IP一致,如果一致则获得执行增量、全量数据导入分布式文件系统的权限,开始周期性从分布式文件系统导入全量数据;如果不一致则监视该路径,当该路径被删除时触发一次。
23、监视者事件;所述监视者事件是指重新生成所述路径并将自身IP以该路径的数据注册;0046所述分布式服务框架系统用于当获得执行增量、全量数据导入分布式文件系统的权限的客户端节点在预定时间长度内没有任何心跳检查时删除所述路径。0047进一步地,所述检索节点还用于在消费所述分布式文件系统中从所述最新时间点开始、到当前时间点为止的所有增量数据后,对外发布搜索服务;0048所述中心节点还用于在用于扩容的检索节点发布搜索服务后,保存该搜索服务分布的索引存储结构的视图关系;在所有用于扩容的检索节点发布搜索服务成功后,将所述视图关系同步到所述分布式服务框架系统中;0049所述分布式服务框架系统还用于将该视图关系。
24、推送到属于该搜索服务的客户端节点。说明书CN104156367A4/15页80050本申请的至少一种备选方案针对一致性HASH不适合搜索引擎扩容的短板,实现了基于分布式框架及分布式文件系统为底层技术的搜索引擎的在线扩容方案,可以随时根据业务情况及时地对业务的搜索引擎进行扩容,同时整个扩容过程将不会对线上造成任何影响,对于用户是透明的。本申请的一个优选方案通过采用虚拟组,简化了水平扩容的操作,并且可以提高稳定性及索引的查询性能。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。附图说明0051图1A是导入任务的示意图;0052图1B是全量数据导入和增量数据导入的示意图;0053图。
25、2是索引管理模型的示意图;0054图3A是全量索引生成及回流的示意图;0055图3B是全量索引的切换示意图;0056图4是例子中搜索服务最初的视图关系示意图;0057图5是图4中的搜索服务垂直扩容后的视图关系示意图;0058图6是图5中的搜索服务水平扩容后的视图关系示意图;0059图7是垂直扩容的示意图;0060图8是垂直扩容的流程示意图;0061图9是水平扩容的示意图;0062图10是水平扩容的原理示意图。具体实施方式0063下面将结合附图及实施例对本申请的技术方案进行更详细的说明。0064需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另。
26、外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。0065实施例一、一种搜索引擎的扩容方法,包括0066为用于扩容的检索节点创建扩容任务;0067用于扩容的CORENODE检索节点领取到扩容任务后在分布式文件系统上复制最新时间点的全量索引,然后消费所述分布式文件系统中从所述最新时间点开始、到当前时间点为止的所有增量数据;所述全量索引是对全量数据所做的索引;所述全量数据是以全量周期为间隔导入到所述分布式文件系统上的源数据;所述增量数据是以固定时间间隔定时导入到所述分布式文件系统中、以时间快照方式存储的源数据。0068本实施例中,所述分布式文件系统可。
27、以但不限于为HDFSHADOOPDISTRIBUTEDFILESYSTEM,分布式系统基础架构HADOOP的分布式文件系统,这是一个具有高容错性、高吞吐量、可存储超大数据集的分布式文件系统。0069本实施例中,所有搜索服务的数据基于两种类型导入到分布式文件系统以特殊的路径存储起来;一种是增量数据,另一种是全量数据。0070增量数据是基于时间快照的,以固定时间间隔定时触发一次导入任务将源数据导说明书CN104156367A5/15页9入到分布式文件系统中进行存储,每次导入任务都是以当前时间为结束时间、上次导入任务的结束时间即上次导入任务的时间区间的离当前较近的一个端点为开始时间来确定本次导入任务。
28、的时间区间,整个系统最早的导入任务的起始时间为搜索服务开始的时刻。如图1A所示,比如一天当中第一次导入任务的起始时间为当天的0000,结束时间为0010;第二次导入任务的起始时间为第一次导入任务的结束时间,即0010,结束时间为0020;第三次导入任务的起始时间为第二次导入任务的结束时间,即0020,结束时间为0030;以此类推。0071这样每个时间区间内的源数据将会依次以导入任务的方式定时的导入到分布式文件系统中;同时为了标识具体搜索服务具体时间区间的增量数据,可以按照特定的分区路径格式进行存储,例如,两个单SHARD的搜索服务在2013年1月15日000000和001000的增量数据的路径。
29、如下0072搜索服务A的增量数据0073/SEARCH4A/INCR/0/20130115000000/SEARCH4A0074/SEARCH4A/INCR/0/20130115001000/SEARCH4A0075搜索服务B的增量数据0076/SEARCH4B/INCR/0/20130115000000/SEARCH4B0077/SEARCH4B/INCR/0/20130115001000/SEARCH4B0078如果是两个各有两个SHARD的搜索服务,则增量数据的路径如下。0079搜索服务A的增量数据0080/SEARCH4A/INCR/0/20130115000000/SEARCH4A0。
30、081/SEARCH4A/INCR/0/20130115001000/SEARCH4A0082/SEARCH4A/INCR/1/20130115000000/SEARCH4A0083/SEARCH4A/INCR/1/20130115001000/SEARCH4A0084搜索服务B的增量数据0085/SEARCH4B/INCR/0/20130115000000/SEARCH4B0086/SEARCH4B/INCR/0/20130115001000/SEARCH4B0087/SEARCH4B/INCR/1/20130115000000/SEARCH4B0088/SEARCH4B/INCR/1/20。
31、130115001000/SEARCH4B0089这样在分布式文件系统上就能定位到任何搜索服务、任何SHARD、任何时间区间的源数据文件了。当然,实际应用时也可以采用路径之外的其它方式标识具体搜索服务、具体时间区间的增量数据。0090全量数据的含义是一份业务方完整的待做索引的源数据。之所以需要全量数据主要有两个原因0091首先,索引会因为不断有增量的变更,而频繁的变更会引起索引结构的变化,最终导致索引性能下降,所有需要一份结束于某个时间点的全量数据来重建索引从而让索引恢复最佳性能。0092其次,索引增量的变更可能因为某种原因导致丢失数据,例如导入失败、消费异常等,所以利用一份全量源数据来重建索。
32、引也能将异常情况丢失的数据重新补偿回来。0093所以在分布式文件系统中将会保存基于全量周期为间隔的源数据,即全量数据;说明书CN104156367A6/15页10例如,全量周期为24小时,单SHARD的搜索服务A在2013年1月14日和2013年1月15日以000000为结束时间点的全量数据在分布式文件系统的存储路径为0094/SEARCH4A/ALL/0/20130114000000/SEARCH4A0095/SEARCH4A/ALL/0/20130115000000/SEARCH4A0096两份文件分别表示结束于20130114000000和20130115000000时间点的SHARD为。
33、0的全量数据。0097如果是2个SHARD的情况,搜索服务A在2013年1月14日和2013年1月15日以000000为结束时间点的全量数据在分布式文件系统上的存储路径为0098/SEARCH4A/ALL/0/20130114000000/SEARCH4A0099/SEARCH4A/ALL/0/20130115000000/SEARCH4A0100/SEARCH4A/ALL/1/20130114000000/SEARCH4A0101/SEARCH4A/ALL/1/20130115000000/SEARCH4A0102上述文件分别表示结束于20130114000000和2013011500000。
34、0时间点的SHARD为0和1的全量数据。0103基于上述存储路径,在分布式文件系统上就能定位到任何搜索服务、任何SHARD、任何时间点的全量数据了。当然,实际应用时也可以采用路径之外的其它方式标识全量数据。0104在全量数据导入和对全量数据构建索引即消费全量数据的这段时间内,搜索服务的增量更新并没有暂停,那么就面临一个问题,如图1B所示,全量数据是000000之前的全部数据,全量数据的导入加消费将在010000完成,而这一个小时内其实每隔10分钟都进行了一次增量数据的导入和消费,那么也就意味着其实在010000这个时间点做完的全量索引只是包含000000这个时间点之前的数据。如果将该全量索引切。
35、换替换老索引后,这个正在运行的索引只能搜索到000000之前的全部数据。面临这个问题,只能在新老索引切换完毕后马上补偿消费000000后,010000之前所有的增量数据,这样才能最终让索引中的数据完整,而这个过程就是全量后的增量补偿。0105整个全量过程的增量数据在分布式文件系统上都以时间快照的方式存在,并不需要业务方重新导入,对应检索节点需要做的事情就是消费以下六个增量文件即可0106/SEARCH4XX/MCR/0/20130115000500/SEARCH4XX;0107/SEARCH4XX/INCR/0/20130115001500/SEARCH4XX;0108/SEARCH4XX/I。
36、NCR/0/20130115002500/SEARCH4XX;0109/SEARCH4XX/INCR/0/20130115003500/SEARCH4XX;0110/SEARCH4XX/INCR/0/20130115004500/SEARCH4XX;0111/SEARCH4XX/INCR/0/20130115005500/SEARCH4XX。0112本实施例的一种备选方案中,所述为用于扩容的检索节点创建扩容任务的步骤具体可以包括0113当请求量增加,导致当前检索节点无法承载时,创建增加各列索引的副本的扩容任务后文称为垂直扩容;所述用于扩容的检索节点为用于承载新增副本的检索节点,个数为列索引的个。
37、数与所增加的副本个数的乘积;比如扩容前有三个SHARD,新增加两个副本,则用于扩容的CORENODE的个数为326;说明书CN104156367A107/15页110114当索引规模变大,导致单次请求平均响应变慢时,创建增加列索引的个数的扩容任务后文称为水平扩容;所述用于扩容的检索节点为用于承载新增列索引的检索节点,个数为增加的列索引个数与各列索引副本个数的乘积;比如扩容前SHARD有三个副本;新增加两个SHARD,则用于扩容的CORENODE的个数为236。0115该备选方案的一种实施方式中,所述方法还可以包括0116S201、对于全量索引中的各索引行,分别将各索引行的唯一键对于虚拟组的总个。
38、数取模,得到各索引行的取模结果;0117S202、分别将各索引行分入组号等于该索引行的取模结果的虚拟组中;0118S203、分别将每个虚拟组的组号对于SHARD的总个数取模,得到各虚拟组的取模结果;0119S204、分别将各虚拟组对应于分片号等于该虚拟组取模结果的SHARD。0120当SHARD个数发生变化时比如扩容任务是增加SHARD的个数,根据最新的SHARD个数再次进行步骤S203和S204。0121所述CORENODE在分布式文件系统上复制最新时间点的全量索引的步骤具体可以包括0122CORENODE在分布式文件系统上复制本CORENODE所承载的SHARD对应的虚拟组中最新时间点的各。
39、索引行。0123虚拟组的总个数可预先设置,通常设置为2的幂次方。可以将一个虚拟组中所有的索引行作为一个子索引;整个索引管理模型如图2所示,分别承载两个SHARD的CORENODE中的SOLRCORE引擎抽象分别为SOLRCORE0、SOLRCORE1;如果是原生SOLR技术架构下,SOLRCORE0、SOLRCORE1分别管理一份索引即INDEX0和INDEX1。采取上述虚拟组后,INDEX0和INDEX1比如虚拟组个数为4,索引行的唯一键为116重新划分为子索引SUBINDEX0包含索引行4、8、12、16、SUBINDEX1包含索引行1、5、9、13、SUBINDEX2包含索引行2、6、1。
40、0、14,SUBINDEX3包含索引行3、7、11、15;SOLRCORE0管理SUBINDEX0、SUBINDEX2,SOLRCORE1管理SUBINDEX1、SUBINDEX3。0124这样可以在单个SOLRCORE下面管理按照规则切分的若干子索引,通过这种预分配虚拟组之后带来的好处有01251全量切换存在新老索引并存情况,导致系统资源消耗达到峰值,从而导致FULLGC全量垃圾回收频繁,影响正常查询服务,有了虚拟组后,索引切换将变成子索引一个个的切换,从而让资源消耗不在存在峰值,避免FULLGC导致的服务不稳定情况。01262有些带唯一建的查询通过虚拟组的二次路由直接定位到子索引上,这样会。
41、比查一整块大索引性能更好。0127采用了虚拟组的索引管理后,为搜索引擎的扩容提供了技术基础,即让搜索服务实例在增加SHARD的情况下可避免重做索引的环节,将整个扩容过程简化为直接从分布式文件系统复制属于对应虚拟组的索引即可。另外在全量过程中能以小索引为粒度构建索引,这将会极大提高构建索引的速度。0128本实施例的一种备选方案中,所述方法还可以包括0129客户端节点周期性从分布式文件系统导入全量数据;0130每次导入后,承载列索引的各检索节点中具有控制角色的检索节点消费导入的全说明书CN104156367A118/15页12量数据,生成全量索引并将该全量索引回流到分布式文件系统;检索节点将回流到。
42、分布式文件系统上的全量索引复制到本地作为新的全量索引,将索引路径指向所述新的全量索引。0131以上步骤是全量索引的构建过程,基于搜索服务的全量索引构建包括全量索引生成、回流、切换,是整个扩容过程中的技术支撑基础。0132一个具体的例子中,全量索引生成及回流的过程如图3A所示,包括步骤S301S305。0133步骤S301、每个搜索服务的CLIENTNODE客户端节点通过TRIGGERSERVER触发服务设定的全量任务时间周期性的从分布式文件系统本例子中为HDFS导入全量数据。0134步骤S302、CLIENTNODE通知每个SHARD中具有MASTER控制角色的CORENODE进行全量任务提交。
43、。0135步骤S303、具有MASTER角色的CORENODE通过SOLRCORE引擎抽象A将全量任务提交给JOBNODE工作节点;SOLRCORE的索引路径指向索引A。0136步骤S304、JOBNODE将CORENODE提交的任务上下文以TASK任务形式分配给最空闲的TASKNODE任务节点。0137步骤S305、TASKNODE根据此次任务上下文知道该构建索引任务的SCHEMA模式在HDFS上的位置,将其复制到本地并加载;根据该SCHEMA定义的索引结构,一行一行消费HDFS某个时间点的全量数据,如0138/SEARCH4XXX/ALL/0/20130114000000/SEARCH4X。
44、XX的源数据。0139当该源数据全部消费完毕后,TASKNODE将本地生成完毕的索引以存储路径为/SEARCH4XXX/ALL/0/OUTPUT/20130114000000/INDEX回流到HDFS上。0140回流后进入全量索引切换的过程,如图3B所示,包括步骤S306S308。0141步骤S306、TASKNODE将任务执行成功标识返回给JOBNODE,JOBNODE将成功标识返回给CORENODE。0142步骤S307、CORENODE知道全量任务已经成功结束,接下来就将HDFS上/SEARCH4XXX/ALL/0/OUTPUT/20130114000000/INDEX的全量索引复制到本。
45、地。0143步骤S308、CLIENTNODE请求进入新的SOLRCORE引擎抽象;CORENODE创建新的SOLRCORE对象图3B中的SOLRCOREB,同时索引路径指向新的全量索引的地址,最后用对应新索引图3B中的索引B的SOLRCORE对象替换正在运行中的SOLRCORE对象,至此完成一次全量索引的构建。0144本备选方案中,业务方的搜索服务部署在一个包含若干台CLIENTNODE的集群中,如果每台CLIENTNODE都进行增量、全量数据导入分布式文件系统的工作,那么分布式文件系统中会存在多份重复数据,如果部署只有一台CLIENTNODE进行导入,那么该CLIENTNODE出现宕机后,。
46、导入任务将会终止。为了保证执行导入的CLIENTNODE只有一台、并且在该CLIENTNODE出现宕机后将有其他CLIENTNODE顶替继续执行增、全量导入分布式文件系统的任务,本实施例采用分布式锁来解决。0145本备选方案的一种实施方式中,所述方法还可以包括0146CLIENTNODE启动后连接分布式服务框架系统,判断是否已生成本身所承载的搜索说明书CN104156367A129/15页13服务的路径,如/SEARCH4XXX/DUMP/;0147如果该路径没生成,则生成该路径并将自身IP以该路径的DATA数据注册;如果该路径已生成,则判断该路径下的DATA是否和自身IP一致,如果一致则获得。
47、执行增量、全量数据导入分布式文件系统的权限,开始周期性从分布式文件系统导入全量数据;如果不一致则监视该路径;0148如果获得执行增量、全量数据导入分布式文件系统的权限的CLIENTNODE在预定时间长度内没有任何心跳检查,则所述分布式服务框架系统删除所述路径;所有WATCH监视了该路径的CLIENTNODE将触发一次WATCHER监视者事件;所述WATCHER事件是指重新生成所述路径并将自身IP以该路径的DATA注册。0149整个生成和注册过程是一个原子过程,多个客户端的连接并不能同时对同一个路径进行生成和注册。这样经过启动过程中类似抢锁的过程就能唯一确定一台CLIENTNODE具有执行增量、。
48、全量数据导入分布式文件系统的任务的权限。0150该协调过程可利用分布式服务框架系统中分布式锁的特性来实现。在分布式服务框架系统比如但不限于ZOOKEEPER上生成的/SEARCH4XXX/DUMP/路径并不是一个持久化的路径,如果生成该路径的这台CLIENTNODE在预定时间长度可以但不限于为一个分布式服务框架系统SESSION会话周期内没有任何心跳检查过来,分布式服务框架系统将认为该CLIENTNODE已经宕机,并将/SEARCH4XXX/DUMP/路径的/DUMP/删除。删除动作一旦发生,所有WATCH了/SEARCH4XXX/DUMP/的CLIENTNODE将触发一次WATCHER事件,。
49、该事件的主要动作变是重新开始生成/SEARCH4XXX/DUMP/,并将IP注册上去。这样通过一番重新的“抢锁”动作,就会有新的CLIENTNODE重新获得执行增量、全量的导入权限。0151在每个搜索服务的MN索引分布模型中,用于承载每个SHARD的副本的多个CORENODE中,有一个CORENODE具有MASTER角色,具有MASTER角色的CORENODE将负责该SHARD的全量索引任务的提交和通知其他SLAVE从属节点到分布式文件系统上复制指定路径的全量索引。而MASTER角色的协调和上文中“执行增量、全量数据导入分布式文件系统的权限”的协调过程基本类似,也是利用了分布式锁的特性来实现,在这里不再详述其实现细节。0152本实施例的一种备选方案中,所述消费分布式文件系统中从所述最新时间点开始、到当前时间点为止的所有增量数据的步骤后,还可以包括0153用于扩容的CORENODE对外发布搜索服务;0154更新客户端的视图关系。0155该备选方案的一种实施方式中,所述更新客户端的视图关系的步骤具体包括0156中心节点在用于扩容的CORENODE发布搜索服务后,保存该搜索服务分布的索引存储结构的视图关系;0157在所有用于扩容的CORENODE发布搜索服务成功后,中心节点将所述视图关系同步到分布式服务框架系统中;0158分布式服务框架系统将该视图关系推送到属于该搜索服务的客户。