CN108681592A - 索引切换方法、装置、系统以及索引切换中控装置 - Google Patents
索引切换方法、装置、系统以及索引切换中控装置 Download PDFInfo
- Publication number
- CN108681592A CN108681592A CN201810463893.1A CN201810463893A CN108681592A CN 108681592 A CN108681592 A CN 108681592A CN 201810463893 A CN201810463893 A CN 201810463893A CN 108681592 A CN108681592 A CN 108681592A
- Authority
- CN
- China
- Prior art keywords
- index
- node
- fragment
- switching
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了索引切换方法、装置、系统和索引切换中控装置。所述索引切换方法包括由索引切换中控装置执行的如下步骤:判断出现新索引;向各节点发送下载新索引的相应索引分片的指令;按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令,直到各节点均完成索引切换。本发明的这种由索引切换中控装置来控制索引切换过程,而搜索服务不需要自己控制索引切换过程的技术方案,由于索引切换控制过程不再占用搜索服务的资源,因此保证了搜索服务的可用性和稳定性。
Description
技术领域
本发明涉及搜索服务技术领域,具体涉及索引切换方法、索引切换中控装置、索引切换装置、分布式搜索系统、计算机可读存储介质和电子设备。
背景技术
在信息呈爆炸式增长的互联网中,分布式搜索系统能够提供精确、快速的搜索服务。
在分布式搜索系统中,由多个节点(Node)组成集群,一个节点即为一个搜索服务实例。一个物理机上可以部署一个节点,也可以部署多个节点,但每个节点都运行在一个隔离的容器或虚拟机中。索引(Index)里的单条记录称为文档(Document),大量的文档组成了一个索引。在分布式搜索系统中,一个索引被分解成多个部分,每个部分称为一个索引分片(Shard),各索引分片分布在不同的节点上,即一个节点上存储一个索引分片。当节点数量大于索引分片数量时,同一个索引分片可以在多个节点中同时存储。
在分布式搜索系统中,当进行数据的完全刷新重建时,或者搜索字段属性发生变化时,需要对索引进行切换,即需要用重新创建的新索引替换旧索引,用新索引提供搜索服务。然而,在进行索引切换时如何保证搜索服务的可用性一直是一个问题。
目前的分布式搜索系统中,切换索引的动作与搜索服务强耦合,即在不停止搜索服务的情况下由搜索服务本身来完成创建和加载新索引并控制旧索引到新索引的切换过程。因此,索引的切换过程会消耗搜索服务的资源,降低了搜索服务的可用性和稳定性。
发明内容
有鉴于此,本发明提供了索引切换方法、索引切换中控装置、索引切换装置、索引切换系统、计算机可读存储介质和电子设备,以解决现有的索引切换过程由于消耗搜索服务的资源,进而降低了搜索服务的可用性和稳定性的技术问题。
根据本发明的第一个方面,提供了一种索引切换方法,适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点,索引被分成多个索引分片,每个节点上保存一个索引分片,该方法包括由索引切换中控装置执行的如下步骤:
判断出现新索引;
向各节点发送下载新索引的相应索引分片的指令;
按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令,直到各节点均完成索引切换。
根据本发明的第二个方面,还提供了一种索引切换方法,适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点,索引被分成多个索引分片,每个节点上保存一个索引分片,该方法包括由所述节点执行的如下步骤:
当接收到下载新索引的相应索引分片的指令时,下载新索引的相应索引分片;
当接收到索引切换指令时,从原有的旧索引分片切换到所述新索引的相应索引分片。
根据本发明的第三个方面,提供了一种索引切换中控装置,适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点,索引被分成多个索引分片,每个节点上保存一个索引分片,该索引切换中控装置包括:
新索引判断单元,用于在判断出现新索引时通知索引处理单元;
索引切换处理单元,用于在收到新索引判断单元的通知时,向各节点发送下载新索引的相应索引分片的指令;以及用于按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令,直到各节点均完成索引切换。
根据本发明的第四个方面,提供了一种索引切换装置,适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点,索引被分成多个索引分片,每个节点上保存一个索引分片,该索引切换装置位于所述的节点中,该索引切换装置包括:
索引下载单元,用于当接收到下载新索引的相应索引分片的指令时,下载新索引的相应索引分片;
索引切换单元,用于当接收到索引切换指令时,从原有的旧索引分片切换到所述新索引的相应索引分片。
根据本发明的第五个方面,还提供了一种索引切换系统,适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点,索引被分成多个索引分片,每个节点上保存一个索引分片,该索引切换系统包括:第一数据库、第二数据库、如前所述的索引切换中控装置以及如前所述的索引切换装置;第一数据库用于保存新创建的索引,第二数据库用于保存各节点的注册信息和状态信息;所述的索引切换中控装置通过查询第一数据库判断有新索引,以及通过查询第二数据库获取各节点的状态。
根据本发明的第六个方面,提供了一种电子设备,所述电子设备包括:处理器,以及存储有可在处理器上运行的计算机程序的存储器;其中,所述处理器,用于在执行所述存储器中的计算机程序时执行前述任一项所述的方法。
根据本发明的七个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述任一项所述的方法。
在本发明的方案中,由索引切换中控装置执行索引切换的步骤,具体包括:判断出现新索引;向各节点发送下载新索引的相应索引分片的指令;按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令,直到各节点均完成索引切换。如此,这种由索引切换中控装置来控制索引切换过程,而搜索服务不需要自己控制索引切换过程的技术方案,由于索引切换控制过程不再占用搜索服务的资源,因此保证了搜索服务的可用性和稳定性。
附图说明
图1是本发明实施例中的一种索引切换方法的流程图;
图2是本发明实施例中的分布式搜索系统的组成示意图;
图3是本发明实施例中的一种索引切换中控装置的结构示意图;
图4是本发明又一个实施例中的一种索引切换方法的流程图;
图5是本发明又一个实施例中的一种索引切换装置的结构示意图;
图6是本发明实施例中的电子设备的结构示意图;
图7是本发明实施例中的一种计算机可读存储介质的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例中的一种索引切换方法的流程图。该方法适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点并且该分布式搜索系统的索引被分成多个索引分片,每个节点上保存一个索引分片,并且当节点数量大于索引分片数量时,同一个索引分片可以在多个节点中同时存储。如图1所示,该方法包括由索引切换中控装置执行的如下步骤:
步骤S110,判断出现新索引。
步骤S120,向各节点发送下载新索引的相应索引分片的指令。
步骤S130,按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令,直到各节点均完成索引切换。
图1所示方法中的这种由索引切换中控装置来控制索引切换过程,而搜索服务不需要自己控制索引切换过程的技术方案,由于索引切换控制过程不再占用搜索服务的资源,因此保证了搜索服务的可用性和稳定性。
在本发明的一个实施例中,图1所示方法中所述判断出现新索引包括:通过查询第一数据库判断有新索引;其中,重新创建的新索引被保存在所述第一数据库中。
在本发明的一个实施例中,图1所示方法还包括:查询第二数据库获取各节点的状态,节点的状态包括:索引开始下载、索引下载完成、索引切换中和正常提供搜索服务。其中,每个节点将自身与所保存的索引分片的对应关系注册到所述第二数据库中,并随时将本节点的状态更新到所述第二数据库中。
下面结合图2所示的分布式搜索系统的组成示意图对本发明的方法进行说明。
图2是本发明实施例中的分布式搜索系统的组成示意图。如图2所示,该分布式搜索系统包括:索引切换中控装置210、第一数据库220、第二数据库230和构成集群的N个节点。第一数据库220用于保存新创建的索引,第二数据库230用于保存各节点的注册信息和状态信息。索引被分成多个索引分片,每个节点上保存一个索引分片;每个节点将自身与所保存的索引分片的对应关系注册到所述第二数据库中,并随时将本节点的状态更新到所述第二数据库230中。索引切换中控装置210通过查询第一数据库220判断有新索引,以及通过查询第二数据230库获取各节点的状态。
需要说明的是:在图2所示的实施例中第一数据库220和第二数据库230分别独立于索引切换中控装置210而存在;但在本发明的其他实施例中,第一数据库220可以是索引切换中控装置210的一部分,第二数据库230也可以是索引切换中控装置210的一部分。
在图2所示的分布式搜索系统中,索引被分成M个索引分片,每个节点上保存一个索引分片,当节点数量比索引分片数量多时,一个索引分片可以保存在多个节点上。例如,本申请文件中的第一个具体例子为:索引被分成5个索引分片,依次用0-4进行编号,N=42,即有42个节点,依次用0-41进行编号,则第i个节点加载的索引分片的编号为i%5,这里“%”表示取模。这样,索引分片0和索引分片1分别对应9个节点,而索引分片2、3、4分别对应8个节点,具体如表1所示。
表1
在图2所示的分布式搜索系统中,第一数据库220用于保存重新创建的新索引。在实际应用中由索引服务来重新创建索引并保存到第一数据库220中。第二数据库230用于保存各节点的注册信息和状态信息。每个节点将自身与所保存的索引分片的对应关系注册到所述第二数据库220中,并随时将本节点的状态更新到第二数据库220中。节点的状态包括:索引开始下载、索引下载完成、索引切换中和正常提供搜索服务。
以前述第一个具体例子中的节点8为例:节点8上保存的是索引分片3,则节点8将自身的身份标识与索引分片的3的绑定关系注册到第二数据库230中,注册信息中还包括当前索引的版本信息,此时节点8的状态为“正常提供搜索服务”。这里,节点8的身份标识由其所在物理机的标识(如IP地址)和节点8自身的标识(如节点编号)组成。节点8在接收到下载索引分片的指令时开始下载相应的索引分片,并向第二数据库230上报“索引开始下载”的状态,当索引分片下载完成时,将第二数据库230中的状态更新为“索引下载完成”。节点8在接收到索引切换指令时,开始进行索引切换,并将第二数据库230中的状态更新为“索引切换中”。节点8完成索引切换后,将第二数据库230中的状态更新为“正常提供搜索服务”并注明新索引的版本信息。
在图2所示的分布式搜索系统中,索引切换中控装置210执行图1所示方法中描述的各步骤,具体来说:索引切换中控装置210通过监听第一数据库220来获知是否有新索引,以及通过监听第二数据库230来获知各节点的状态。当监听到有新索引时,索引切换中控装置210向所有正常工作的节点发送新索引的相应索引分片的指令。各节点收到指令后开始下载与自身对应的索引分片。索引切换中控装置210继续监听各节点的状态,当有节点下载完(其状态变成“索引下载完成”)时,按照一定规则向下载完的各节点发送索引切换指令,收到指令的节点开始进行索引切换。如此,直到各节点均完成索引切换。
在本发明的实施例中,收到索引切换指令的节点进行索引切换具体为:先卸载旧的索引分片,然后再加载新的索引分片。这里需要说明的是,节点下载完新索引分片时该新索引分片是保存在节点所在物理机的存储介质中,此时节点还没有加载该新索引分片。节点根据所加载的索引分片处理搜索请求。
现有的分布式搜索系统中,切换索引的动作与搜索服务强耦合,即在不停止搜索服务的情况下由搜索服务本身(即各个节点)来完成创建和加载新索引并控制旧索引到新索引的切换过程,并且这种方案需要同时加载两份索引,等新的索引加载完成时将搜索请求切换到新索引,然后下载旧索引。因此本发明实施例中的这种先卸载旧索引分片后加载新索引分片的方案,相对于现有技术中的同时加载两份索引的方案,大大降低了节点的负载,并能够快速完成索引切换。
在本发明的实施例中,前述按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令包括:在满足预设的最小服务行数的前提下,向下载完新索引的相应索引分片的各节点发送索引切换指令。其中,服务行数是指正常提供搜索服务的节点上的索引分片所组成的完整索引个数。例如,本申请文件中的第二个具体例子为:索引被分为2个分片,分别是索引分片0和索引分片1;有4个节点,分别是节点A、B、C、D;节点A和C上均存储索引分片0,节点B和D上均存储索引分片1。在四个节点均正常提供搜索服务时,有两套完整的索引,因此服务行数为2。如果节点A不能提供搜索服务,则服务行数为1。如果节点A和B不能提供搜索服务,则服务行数为1。如果节点A、B和C都不能提供搜索服务,则服务行数为0。
在本发明的一个实施例中,图1所示的方法进一步包括:获取新索引的各索引分片与各节点的对应关系,并在向各节点发送的所述下载新索引的相应索引分片的指令中携带相应索引分片的标识,以告知各节点其需要下载的是哪个索引分片。具体地,索引切换中控装置可以通过与创建索引的索引服务进行协商确定新索引的分片数以及与各节点的对应关系。在一种情况下,索引服务可以将新索引的分片数以及与各节点的对应关系也写入第一数据库中供索引切换中控装置查询。可以看出,通过索引切换中控装置对索引切换过程进行控制,可以较容易地修改集群中各节点对应的索引分片,从而实现动态调整索引分片的分布。
以下对在满足预设的最小服务行数的前提下,如何向下载完新索引的相应索引分片的各节点发送索引切换指令进行说明,具体包括两种情况。
第一种情况:新索引和旧索引的分片数量相同
在本发明的一个实施例中,当新索引被分成的索引分片数量与旧索引被分成的索引分片数量相同时,前述在满足预设的最小服务行数的前提下,向下载完新索引的相应索引分片的各节点发送索引切换指令包括:轮询下载完新索引的相应索引分片的各节点;对于当前轮询到的一个节点,如果该节点因进行索引切换而不能提供正常服务时,未切换的服务行数和切换完成的服务行数总和(即旧索引的服务行数和新索引的服务行数的总和)大于或等于所述预设的最小服务行数,则向该节点发送索引切换指令。
当新索引被分成的索引分片数量与旧索引被分成的索引分片数量相同时,每个节点对应的索引分片编号不变。以前述第一个具体例子中的节点8为例进行说明:旧索引被分成5个索引分片,节点8保存的是索引分片3,新索引仍被分成5个索引分片,节点8保存的是新索引的索引分片3。此时,在保证最小服务行数的情况下,向完成下载的各节点发送索引切换指令即可。
以前述第二个具体例子为例,且新索引也被分成2个索引分片、最小服务行数为1时,索引切换中控装置执行如下步骤:
1.在发现有新索引时,向节点A、B、C、D发送下载新索引的相应索引分片的指令。A开始下载新索引的索引分片0、B开始下载新索引的索引分片1、C开始下载新索引的索引分片0、D开始下载新索引的索引分片1。
2.假设A先下载完:索引切换中控装置判断如果A开始进行索引切换,则此时能够提供完整服务的服务行数为1,满足最小服务行数要求,因此向A发送索引切换指令。
3.假设A在切换索引时,C下载完成:索引切换中控装置判断如果C开始进行索引切换,A和C都不能提供搜索服务,此时的剩余服务行数为0,不满足最小服务行数要求,因此不向C发送索引切换指令。
4.假设A在切换索引时,D下载完成:索引切换中控装置判断如果D开始进行索引切换,A和D都不能提供搜索服务,此时的剩余服务行数为1,满足最小服务行数要求,因此不向D发送索引切换指令。
5.在A完成索引切换后,索引切换中控装置向C发送索引切换指令。同理,在D完成索引切换后,索引切换中控装置才可以向B发送索引切换指令。
6.切换完毕,通知用户。
第二种情况:新索引和旧索引的分片数量不同
当新索引被分成的索引分片数量与旧索引被分成的索引分片数量不同时,前述在满足预设的最小服务行数的前提下,向下载完新索引的相应索引分片的各节点发送索引切换指令包括:确定未被切换的旧索引的索引分片中当前拥有最多节点的一个或多个索引分片,旧索引的该一个或多个索引分片当前分别拥有的各节点组成第一集合;确定已完成切换的新索引的索引分片中当前拥有最少节点的一个或多个索引分片,新索引的该一个或多个索引分片当前分别拥有的各节点组成第二集合;新索引的该一个或多个索引分片对应的所有节点组成第三集合,第二集合在第三集合中的补集为第四集合;如果该交集不为空,则选取该交集中的处于索引下载完成状态的一个节点,向该节点发送索引切换指令;如果该交集为空,则从第一集合中选取处于索引下载完成状态的一个节点,向该节点发送索引切换指令。
当新索引被分成的索引分片数量与旧索引被分成的索引分片数量不同时,各节点对应的索引分片编号会改变。仍以前述第一个具体例子中的节点8为例:旧索引被分成5个索引分片,如果新索引仍被分成4个索引分片,则旧索引的各索引分片与节点的对应关系如表1,新索引的索引分片与节点的对应关系如表2所示。
表2
可以看出,当新索引被分成的索引分片数量与旧索引被分成的索引分片数量不同时,每个节点对应的索引分片编号会改变,例如,切换前节点8保存的是旧索引的分片3,切换后节点8保存的是新索引的索引分片0。此时,仍可以在保证最小服务行数的情况下,向完成下载的各节点发送索引切换指令。但是,本申请的发明人提出了一种更优的切换控制方式,能在切换过程中保持尽可能多的服务行数,以进一步提高索引切换过程中搜索服务的可用性和稳定性。下面以前述的第一个具体例子为例进行说明:
1.确定未被切换的旧索引的索引分片中当前拥有最多节点的一个或多个索引分片,旧索引的该一个或多个索引分片当前分别拥有的各节点组成第一集合:假设在某一特定时刻,旧索引的索引分片0、1、2、3和4所分别依次拥有的节点数为4、4、3、3、3,即这些节点上的索引还未切换;可以看出旧索引的索引分片0和1同时拥有最多的节点(4个节点),这些节点组成第一集合set1;假设set1=[节点0,节点5、节点20、节点40、节点1、节点6、节点31、节点36]。这里旧索引的索引分片0和1拥有最多的节点,表明保存有旧索引的索引分片0和1的节点均有冗余,可以优先切换冗余的节点而不会影响服务行数。
2.确定已完成切换的新索引的索引分片中当前拥有最少节点的一个或多个索引分片,新索引的该一个或多个索引分片当前分别拥有的各节点组成第二集合;设新索引的该一个或多个索引分片对应的所有节点组成的集合为第三集合,则第二集合在第三集合中的补集为第四集合:假设在该特定时刻,新索引的索引分片0、1、2和3所分别依次拥有的节点数为3、4、5、5,即这些节点上的索引已切换完成;可以看出新索引的索引分片0拥有最少的节点(3个节点),这些节点组成第二集合set2。这也表明目前新索引的服务行数为3,而且为了增加新索引的服务行数,最急需是保存新索引的索引分片0的节点,只要保存新索引的索引分片0的节点再增加一个,新索引的服务行数就能达到4。假设set2=[节点4、节点8、节点16],保存新索引的索引分片0的所有节点组成的集合set3=[节点0、节点4、节点8、节点12、节点16、节点20、节点24、节点28、节点32、节点36、节点40],则set2在set3中的补集set4=[节点0、节点12、节点20、节点24、节点28、节点32、节点36、节点40]。
3.取第一集合与第四集合的交集:set1和set4的交集为[节点0、节点20、节点36、节点40]。
4.如果该交集不为空,则选取该交集中的处于索引下载完成状态的节点,向该节点发送索引切换指令:在前述的举例中该交集不为空,是[节点0、节点20、节点36、节点40],因此从该交集中选择处于索引下载完成状态的一个节点,向该节点发送索引切换指令。
5.如果该交集为空,则从第一集合中选取处于索引下载完成状态的节点,向该节点发送索引切换指令。如果该交集为空,则向set1中的已下载完成新索引分片的一个节点发送索引切换指令。
在前述的4或5中选择一个节点并向该节点发送索引切换指令后,重新执行1-5来选择下一个节点。
上述方法在保证最小服务行数的基础上,尽可能保持更多的服务行数,从而进一步提高了索引切换过程中搜索服务的可用性和稳定性。
在本发明的上述实施例中,如果发生未切换的服务行数和切换完成的服务行数总和小于预设的最小服务行数要求的情况,则停止切换。
上述实施例中的这种在新索引和旧索引的分片数量不同时的切换控制方案,能在切换的过程中保持最多的服务行数,从而进一步提高了切换过程中的搜索服务的可用性和稳定性。
图3是本发明实施例中的一种索引切换中控装置的结构示意图。如图3所示,该索引切换中控装置210包括:
新索引判断单元301,用于在判断出现新索引时通知索引处理单元;
索引切换处理单元302,用于在收到新索引判断单元的通知时,向各节点发送下载新索引的相应索引分片的指令;以及用于按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令,直到各节点均完成索引切换。
由图3所示的索引切换中控装置来控制索引切换过程,而搜索服务不需要自己控制索引切换过程的这种技术方案,由于索引切换控制过程不占用搜索服务的资源,因此保证了搜索服务的可用性和稳定性。
在本发明的一个实施例中,图3中的所述新索引判断单元301,用于通过查询第一数据库判断有新索引;其中,由索引服务创建新索引并保存到所述第一数据库中;所述第一数据库是所述索引切换中控装置210的一部分,或者,所述第一数据库独立于所述索引切换中控装置210存在。
在本发明的一个实施例中,图3中的索引切换中控装置210还包括:节点状态获取单元303,用于查询第二数据库获取各节点的状态,节点的状态包括:索引开始下载、索引下载完成、索引切换中和正常提供搜索服务;
其中,每个节点将自身与所保存的索引分片的对应关系注册到所述第二数据库中,并随时将本节点的状态更新到所述第二数据库中;所述第二数据库是所述索引切换中控装置210的一部分,或者,所述第二数据库独立于所述索引切换中控装置210存在。
在本发明的一个实施例中,图3所示方案中,索引切换处理单元302,用于在满足预设的最小服务行数的前提下,向下载完新索引的相应索引分片的各节点发送索引切换指令。其中,服务行数是指正常提供搜索服务的节点上的索引分片所组成的完整索引个数。
在本发明的一个实施例中,图3所示方案中的,当新索引被分成的索引分片数量与旧索引被分成的索引分片数量相同时,所述索引切换处理单元302,用于轮询下载完新索引的相应索引分片的各节点;对于当前轮询到的一个节点,如果该节点因进行索引切换而不能提供正常服务时,未切换的服务行数和切换完成的服务行数总和大于或等于所述预设的最小服务行数,则向该节点发送索引切换指令。
在本发明的一个实施例中,图3所示方案中的,当新索引被分成的索引分片数量与旧索引被分成的索引分片数量不同时,所述索引切换处理单元302,用于确定未被切换的旧索引的索引分片中当前拥有最多节点的一个或多个索引分片,旧索引的该一个或多个索引分片当前分别拥有的各节点组成第一集合;确定已完成切换的新索引的索引分片中当前拥有最少节点的一个或多个索引分片,新索引的该一个或多个索引分片当前分别拥有的各节点组成第二集合;新索引的该一个或多个索引分片对应的所有节点组成的集合为第三集合,第二集合在第三集合中的补集为第四集合;取第一集合与第四集合的交集;如果该交集不为空,则选取该交集中的处于索引下载完成状态的一个节点,向该节点发送索引切换指令;如果该交集为空,则从第一集合中选取处于索引下载完成状态的一个节点,向该节点发送索引切换指令。
在本发明的一个实施例中,图3所示方案中的,当新索引被分成的索引分片数量与旧索引被分成的索引分片数量不同时,
所述索引切换处理单元302,进一步用于获取新索引的各索引分片与各节点的对应关系,并在向各节点发送的所述下载新索引的相应索引分片的指令中携带相应索引分片的标识。
关于图3所示索引切换中控装置210中的各单元所执行的各步骤的举例解释说明,与前述方法和系统实施例中的举例解释说明一致,这里不再一一赘述。
图4是本发明又一个实施例中的一种索引切换方法的流程图。如图4所示,该方法包括由图2所示分布式搜索系统中的节点执行的如下步骤:
步骤S410,当接收到下载新索引的相应索引分片的指令时,下载新索引的相应索引分片;
步骤S420,当接收到索引切换指令时,从原有的旧索引分片切换到所述新索引的相应索引分片。
在本发明的一个实施例中,步骤S420中所述从原有的旧索引分片切换到所述新索引的相应索引分片包括:卸载原有的旧索引分片,卸载完后加载所述新索引的相应索引分片。
在本发明的一个实施例中,图4所示的方法进一步包括:将本节点与所加载的索引分片的对应关系注册到指定数据库中,并随时将本节点的状态更新到所述指定数据库中;其中,节点的状态包括:索引开始下载、索引下载完成、索引切换中和正常提供搜索服务。
图5是本发明又一个实施例中的一种索引切换装置的结构示意图。该索引切换装置500位于图2所示分布式系统中的节点中,该索引切换装置500包括:
索引下载单元510,用于当接收到下载新索引的相应索引分片的指令时,下载新索引的相应索引分片;
索引切换单元520,用于当接收到索引切换指令时,从原有的旧索引分片切换到所述新索引的相应索引分片。
在本发明的一个实施例中,所述索引切换单元520,用于当接收到索引切换指令时,卸载原有的旧索引分片,卸载完后加载所述新索引的相应索引分片。
在本发明的一个实施例中,索引切换装置500进一步包括:状态上报单元530,用于将本节点与所加载的索引分片的对应关系注册到指定数据库中,并随时将本节点的状态更新到所述指定数据库中。其中,节点的状态包括:索引开始下载、索引下载完成、索引切换中和正常提供搜索服务。
本发明实施例还公开了一种索引切换系统,该索引切换系统包括:索引切换装置210、第一数据库220、第二数据库230和多个索引切换装置500。参考图2,每个节点中包含一个索引切换装置500。第一数据库220用于保存新创建的索引,第二数据库230用于保存各节点的注册信息和状态信息;索引切换中控装置210通过查询第一数据库220判断有新索引,以及通过查询第二数据库230获取各节点的状态。索引切换装置500将自身所在节点与所加载的索引分片对应关系注册到第二数据库230,并将自身所在节点的状态上报到第二数据库220中。索引切换装置500根据索引切换装置210的指令下载索引分片以及进行索引切换。
综上所述,在本发明的方案中,由索引切换中控装置执行索引切换的步骤,具体包括:判断出现新索引;向各节点发送下载新索引的相应索引分片的指令;按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令,直到各节点均完成索引切换。如此,这种由索引切换中控装置来控制索引切换过程,而搜索服务不需要自己控制索引切换过程的技术方案,由于索引切换控制过程不再占用搜索服务的资源,因此保证了搜索服务的可用性和稳定性。
此外,通过索引切换中控装置对索引切换过程进行控制的方案,可以较容易地修改集群中各节点对应的索引分片,从而实现动态调整索引分片的分布。各节点先卸载旧索引分片后加载新索引分片的方案,相对于现有技术中的同时加载两份索引的方案,大大降低了节点的负载,并能够快速完成索引切换。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的页面性能测试装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
例如,图6是本发明实施例中的电子设备的结构示意图。该电子设备600包括:处理器610,以及存储有可在所述处理器610上运行的计算机程序的存储器620。处理器610,用于在执行所述存储器620中的计算机程序时执行本发明中方法的各步骤。存储器620可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。存储器620具有存储用于执行上述方法中的任何方法步骤的计算机程序631的存储空间630。计算机程序631可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为例如图7所述的计算机可读存储介质。
图7是本发明实施例中的一种计算机可读存储介质的结构示意图。该计算机可读存储介质700存储有用于执行根据本发明的方法步骤的计算机程序631,可以被电子设备600的处理器610读取,当计算机程序631由电子设备600运行时,导致该电子设备600执行上面所描述的方法中的各个步骤,具体来说,该计算机可读存储介质存储的计算程序631可以执行上述任一实施例中示出的方法。计算机程序631可以以适当形式进行压缩。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (15)
1.一种索引切换方法,适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点,索引被分成多个索引分片,每个节点上保存一个索引分片,其特征在于,该方法包括由索引切换中控装置执行的如下步骤:
判断出现新索引;
向各节点发送下载新索引的相应索引分片的指令;
按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令,直到各节点均完成索引切换。
2.如权利要求1所述的方法,其特征在于,所述判断出现新索引包括:
通过查询第一数据库判断有新索引;其中,重新创建的新索引被保存在所述第一数据库中。
3.如权利要求1所述的方法,其特征在于,该方法还包括:
查询第二数据库获取各节点的状态,节点的状态包括:索引开始下载、索引下载完成、索引切换中和正常提供搜索服务;
其中,每个节点将自身与所加载的索引分片的对应关系注册到所述第二数据库中,并随时将本节点的状态更新到所述第二数据库中。
4.如权利要求1所述的方法,其特征在于,所述按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令包括:
在满足预设的最小服务行数的前提下,向下载完新索引的相应索引分片的各节点发送索引切换指令;
其中,服务行数是指正常提供搜索服务的节点上的索引分片所组成的完整索引个数。
5.如权利要求4所述的方法,其特征在于,当新索引被分成的索引分片数量与旧索引被分成的索引分片数量相同时,所述在满足预设的最小服务行数的前提下,向下载完新索引的相应索引分片的各节点发送索引切换指令包括:
轮询下载完新索引的相应索引分片的各节点;
对于当前轮询到的一个节点,如果该节点因进行索引切换而不能提供正常服务时,未切换的服务行数和切换完成的服务行数总和大于或等于所述预设的最小服务行数,则向该节点发送索引切换指令。
6.如权利要求4所述的方法,其特征在于,当新索引被分成的索引分片数量与旧索引被分成的索引分片数量不同时,所述在满足预设的最小服务行数的前提下,向下载完新索引的相应索引分片的各节点发送索引切换指令包括:
确定未被切换的旧索引的索引分片中当前拥有最多节点的一个或多个索引分片,旧索引的该一个或多个索引分片当前分别拥有的各节点组成第一集合;
确定已完成切换的新索引的索引分片中当前拥有最少节点的一个或多个索引分片,新索引的该一个或多个索引分片当前分别拥有的各节点组成第二集合;新索引的该一个或多个索引分片对应的所有节点组成第三集合,第二集合在第三集合中的补集为第四集合;
取第一集合与第四集合的交集;
如果该交集不为空,则选取该交集中的处于索引下载完成状态的一个节点,向该节点发送索引切换指令;
如果该交集为空,则从第一集合中选取处于索引下载完成状态的一个节点,向该节点发送索引切换指令。
7.如权利要求1所述的方法,其特征在于,该方法进一步包括:
获取新索引的各索引分片与各节点的对应关系,并在向各节点发送的所述下载新索引的相应索引分片的指令中携带相应索引分片的标识。
8.一种索引切换方法,适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点,索引被分成多个索引分片,每个节点上保存一个索引分片,其特征在于,该方法包括由所述节点执行的如下步骤:
当接收到下载新索引的相应索引分片的指令时,下载新索引的相应索引分片;
当接收到索引切换指令时,从原有的旧索引分片切换到所述新索引的相应索引分片。
9.如权利要求8所述的方法,其特征在于,所述从原有的旧索引分片切换到所述新索引的相应索引分片包括:
卸载原有的旧索引分片,卸载完后加载所述新索引的相应索引分片。
10.如权利要求8所述的方法,其特征在于,该方法进一步包括:
将本节点与所加载的索引分片的对应关系注册到指定数据库中,并随时将本节点的状态更新到所述指定数据库中;
节点的状态包括:索引开始下载、索引下载完成、索引切换中和正常提供搜索服务。
11.一种索引切换中控装置,适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点,索引被分成多个索引分片,每个节点上保存一个索引分片,其特征在于,该索引切换中控装置包括:
新索引判断单元,用于在判断出现新索引时通知索引处理单元;
索引切换处理单元,用于在收到新索引判断单元的通知时,向各节点发送下载新索引的相应索引分片的指令;以及用于按照一定规则向下载完新索引的相应索引分片的各节点发送索引切换指令,直到各节点均完成索引切换。
12.一种索引切换装置,适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点,索引被分成多个索引分片,每个节点上保存一个索引分片,其特征在于,该索引切换装置位于所述的节点中,该索引切换装置包括:
索引下载单元,用于当接收到下载新索引的相应索引分片的指令时,下载新索引的相应索引分片;
索引切换单元,用于当接收到索引切换指令时,从原有的旧索引分片切换到所述新索引的相应索引分片。
13.一种索引切换系统,适用于分布式搜索系统,该分布式搜索系统的集群包括多个节点,索引被分成多个索引分片,每个节点上保存一个索引分片,其特征在于,该索引切换系统包括:第一数据库、第二数据库、如权利要求11所述的索引切换中控装置以及如权利要求12所述的索引切换装置;
第一数据库用于保存新创建的索引,第二数据库用于保存各节点的注册信息和状态信息;
所述的索引切换中控装置通过查询第一数据库判断有新索引,以及通过查询第二数据库获取各节点的状态。
14.一种电子设备,其特征在于,所述电子设备包括:处理器,以及存储有可在处理器上运行的计算机程序的存储器;
其中,所述处理器,用于在执行所述存储器中的计算机程序时执行权利要求1-7中任一项所述的方法,或者,执行权利要求8-10中任一项所述的方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-7中任一项所述的方法,或者,实现权利要求8-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810463893.1A CN108681592B (zh) | 2018-05-15 | 2018-05-15 | 索引切换方法、装置、系统以及索引切换中控装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810463893.1A CN108681592B (zh) | 2018-05-15 | 2018-05-15 | 索引切换方法、装置、系统以及索引切换中控装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108681592A true CN108681592A (zh) | 2018-10-19 |
CN108681592B CN108681592B (zh) | 2021-05-25 |
Family
ID=63805440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810463893.1A Active CN108681592B (zh) | 2018-05-15 | 2018-05-15 | 索引切换方法、装置、系统以及索引切换中控装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108681592B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209910A (zh) * | 2019-05-20 | 2019-09-06 | 无线生活(杭州)信息科技有限公司 | 索引切换调度方法及调度装置 |
CN110765092A (zh) * | 2019-09-20 | 2020-02-07 | 北京三快在线科技有限公司 | 分布式搜索系统、索引分发方法及存储介质 |
CN110781135A (zh) * | 2019-09-20 | 2020-02-11 | 北京三快在线科技有限公司 | 分布式搜索系统、索引分发方法及存储介质 |
CN111949833A (zh) * | 2020-08-17 | 2020-11-17 | 北京字节跳动网络技术有限公司 | 索引构建方法、数据处理方法、装置、电子设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101686228A (zh) * | 2008-09-27 | 2010-03-31 | 中兴通讯股份有限公司 | 一种基于内容分片的多媒体分片切换方法及系统 |
CN102169507A (zh) * | 2011-05-26 | 2011-08-31 | 厦门雅迅网络股份有限公司 | 一种分布式实时搜索引擎 |
CN102306166A (zh) * | 2011-08-22 | 2012-01-04 | 河南理工大学 | 一种移动地理信息空间索引方法 |
CN102622414A (zh) * | 2012-02-17 | 2012-08-01 | 清华大学 | 基于对等结构的分布式高维索引并行查询框架 |
US20120254089A1 (en) * | 2011-03-31 | 2012-10-04 | International Business Machines Corporation | Vector throttling to control resource use in computer systems |
CN102779185A (zh) * | 2012-06-29 | 2012-11-14 | 浙江大学 | 一种高可用分布式全文索引方法 |
US20160203168A1 (en) * | 2015-01-09 | 2016-07-14 | Kiran Gangadharappa | Updating distributed shards without compromising on consistency |
-
2018
- 2018-05-15 CN CN201810463893.1A patent/CN108681592B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101686228A (zh) * | 2008-09-27 | 2010-03-31 | 中兴通讯股份有限公司 | 一种基于内容分片的多媒体分片切换方法及系统 |
US20120254089A1 (en) * | 2011-03-31 | 2012-10-04 | International Business Machines Corporation | Vector throttling to control resource use in computer systems |
CN102169507A (zh) * | 2011-05-26 | 2011-08-31 | 厦门雅迅网络股份有限公司 | 一种分布式实时搜索引擎 |
CN102306166A (zh) * | 2011-08-22 | 2012-01-04 | 河南理工大学 | 一种移动地理信息空间索引方法 |
CN102622414A (zh) * | 2012-02-17 | 2012-08-01 | 清华大学 | 基于对等结构的分布式高维索引并行查询框架 |
CN102779185A (zh) * | 2012-06-29 | 2012-11-14 | 浙江大学 | 一种高可用分布式全文索引方法 |
US20160203168A1 (en) * | 2015-01-09 | 2016-07-14 | Kiran Gangadharappa | Updating distributed shards without compromising on consistency |
Non-Patent Citations (1)
Title |
---|
金达 等: "基于HLS的流媒体播放系统的设计与实现", 《信息技术》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209910A (zh) * | 2019-05-20 | 2019-09-06 | 无线生活(杭州)信息科技有限公司 | 索引切换调度方法及调度装置 |
CN110209910B (zh) * | 2019-05-20 | 2021-06-04 | 无线生活(杭州)信息科技有限公司 | 索引切换调度方法及调度装置 |
CN110765092A (zh) * | 2019-09-20 | 2020-02-07 | 北京三快在线科技有限公司 | 分布式搜索系统、索引分发方法及存储介质 |
CN110781135A (zh) * | 2019-09-20 | 2020-02-11 | 北京三快在线科技有限公司 | 分布式搜索系统、索引分发方法及存储介质 |
CN110781135B (zh) * | 2019-09-20 | 2023-05-30 | 北京三快在线科技有限公司 | 分布式搜索系统、索引分发方法及存储介质 |
CN111949833A (zh) * | 2020-08-17 | 2020-11-17 | 北京字节跳动网络技术有限公司 | 索引构建方法、数据处理方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108681592B (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108681592A (zh) | 索引切换方法、装置、系统以及索引切换中控装置 | |
CN107193607B (zh) | 用于更新代码文件的方法和装置、存储介质、处理器以及终端 | |
US8620926B2 (en) | Using a hashing mechanism to select data entries in a directory for use with requested operations | |
CN113015970A (zh) | 划分知识图 | |
JP2008515114A (ja) | インデックス処理 | |
CN106874357B (zh) | 一种Web应用的资源定制方法和装置 | |
CN105553738A (zh) | 配置信息的热加载方法及装置、分布式集群系统 | |
CN103530420B (zh) | 数据文件的动态更新方法及装置 | |
CN105049514B (zh) | 一种文件下载方法和装置 | |
CN110532059B (zh) | K8s集群管理软件的配额管理方法及装置 | |
CN109445827A (zh) | 一种游戏更新的方法及装置、电子设备、存储介质 | |
US9262219B2 (en) | Distributed processing system, distributed processing method, and distributed processing program | |
US9400613B1 (en) | Intelligent pairing for snapshot based backups | |
CN106611062A (zh) | 数据库更新方法及装置 | |
CN104598652B (zh) | 一种数据库查询方法及装置 | |
CN108198035A (zh) | 一种跟单方法及装置 | |
CN107256233A (zh) | 一种数据存储方法和装置 | |
CN100367237C (zh) | 用于文件信息写处理的方法和装置 | |
CN105786938A (zh) | 一种对大数据进行处理的方法和装置 | |
CN108363727A (zh) | 一种基于zfs文件系统的数据存储方法及装置 | |
CN104462514B (zh) | 数据库的高可用解决方法、连接控制装置和系统 | |
CN112182328A (zh) | 一种搜索引擎的扩容方法、装置、电子设备及存储介质 | |
US20050027977A1 (en) | Method and system for maintaining the boot order of mass storage devices in a computer system | |
CN107153561A (zh) | 一种更新扩展卡中固件的方法、装置及系统 | |
EP1805649A2 (en) | File index processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |