CN113220662B - 索引迁移方法、装置、电子设备及存储介质 - Google Patents
索引迁移方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113220662B CN113220662B CN202110483701.5A CN202110483701A CN113220662B CN 113220662 B CN113220662 B CN 113220662B CN 202110483701 A CN202110483701 A CN 202110483701A CN 113220662 B CN113220662 B CN 113220662B
- Authority
- CN
- China
- Prior art keywords
- request
- index
- state information
- data
- target
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 106
- 230000005012 migration Effects 0.000 title claims abstract description 59
- 238000013508 migration Methods 0.000 title claims abstract description 59
- 238000003860 storage Methods 0.000 title claims description 8
- 238000012545 processing Methods 0.000 claims abstract description 59
- 230000008569 process Effects 0.000 claims abstract description 50
- 238000004590 computer program Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 21
- 238000013507 mapping Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012958 reprocessing Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种索引迁移方法、装置及电子设备,该方法包括:根据目标任务队列,获得第一请求,其中,所述第一请求用于更新目标数据的第一索引,所述目标数据为所述搜索引擎在执行索引迁移处理过程中、接收到的增量数据;根据所述第一请求,更新所述第一索引,并根据所述第一请求中全部请求的执行状态,获得第一状态信息;在所述第一状态信息表示所述第一请求被成功执行的情况下,执行所述目标数据的第二索引更新处理,其中,所述第二索引与所述第一索引的结构不同。该方法可以方便、高效的实现新旧索引上数据的平滑迁移。
Description
技术领域
本公开涉及互联网技术领域,更具体地,涉及一种索引迁移方法、装置、电子设备及计算机可读存储介质。
背景技术
随着互联网技术的不断发展,为了向用户快速提供数据,应用程序一般可以通过搜索引擎产品,例如,ElasticSearch(以下简称ES)、Solr、OpenSearch等搜索引擎产品管理应用内的数据。
以ES为例,目前的搜索引擎产品通过创建索引,可以实现对数据的快速检索、数据聚合、数据建模等功能,其中,在创建索引时,可以通过映射(mapping)定义索引的结构,具体可以包括定义索引包含的字段、字段的数据类型以及索引属性等。然而,在实际中,可能存在既有设计的映射不能满足数据增长需求的情况,由于现有搜索引擎不支持对原索引的映射结构进行字段删除、字段数据类型变更等操作,因此,此时往往需要重新设计映射,并基于重新设计的映射重建索引,将旧索引数据迁移到变更后的新索引中。
在实现本申请的过程中,发明人发现,现有方法在进行索引迁移时,针对迁移过程中接收到的增量数据,往往是由开发人员开发迁移脚本(Script),以实现新旧索引上的数据双写功能,该种方法一方面需要开发人员根据现有情况实时开发,导致迁移处理不够方便;另一方面,在实现新旧索引上的数据双写处理时,由于存在新旧索引数据写入状态不一致的可能,因此,往往是采取同步写入的方式进行索引数据双写处理,存在复杂度高以及效率低的问题。因此,如何方便、高效的实现索引迁移处理,成为人们亟待解决的问题。
发明内容
本公开实施例提供了一种索引迁移方法、装置、电子设备及存储介质,可以方便、高效的实现搜索引擎中的索引迁移处理。
本公开的第一方面,提供了一种索引迁移方法,该方法包括:
根据目标任务队列,获得第一请求,其中,所述第一请求用于更新目标数据的第一索引,所述目标数据为所述搜索引擎在执行索引迁移处理过程中、接收到的增量数据;
根据所述第一请求,更新所述第一索引,并根据所述第一请求中全部请求的执行状态,获得第一状态信息;
在所述第一状态信息表示所述第一请求被成功执行的情况下,执行所述目标数据的第二索引更新处理,其中,所述第二索引与所述第一索引的结构不同。
本公开的第二方面,还提供了一种索引迁移装置,包括:
第一请求获取模块,用于根据目标任务队列,获得第一请求,其中,所述第一请求用于更新目标数据的第一索引,所述目标数据为所述搜索引擎在执行索引迁移处理过程中、接收到的增量数据;
第一状态信息获得模块,用于处理所述第一请求,并根据所述第一请求中全部请求的执行状态,获得第一状态信息;
第二索引更新模块,用于在所述第一状态信息表示所述第一请求被成功执行的情况下,执行所述目标数据的第二索引更新处理,其中,所述第二索引与所述第一索引的结构不同。
本公开的第三方面,还提供了一种电子设备,包括:
存储器,用于存储可执行的指令;
处理器,用于根据所述可执行的指令的控制,运行所述电子设备执行根据本公开的第一方面所述的方法。
本公开的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有可被计算机读取执行的计算机程序,所述计算机程序用于在被所述计算机读取运行时,执行根据本公开的第一方面所述的方法。
本公开的有益效果在于,根据本公开实施例的方法,在进行索引迁移处理时,根据目标任务队列得到第一请求;并在根据该第一请求,更新第一索引的过程中,通过获取第一请求中全部请求的执行状态,获得第一状态信息;之后,根据第一状态信息,确定是否执行目标数据的第二索引更新处理。在该方法中,针对索引迁移处理时接收到的增量数据,在进行新旧索引双写处理时,通过将与目标数据对应的第一请求加入目标任务队列,并通过从该目标任务队列中获取该第一请求,以更新第一索引的方式,可以以异步消费的方式实现新旧索引上的数据双写处理,以充分利用搜索引擎性能,提升数据处理效率。另外,在处理第一请求的过程中,该方法通过获取第一请求中每一请求的执行状态,可以获得表示第一请求中全部请求是否被成功执行的第一状态信息,进而可以在第一状态信息表示第一请求被成功执行的情况下,执行目标数据的第二索引更新处理,通过该种处理方式,该方法可以在第一索引被成功更新的情况下,单独的执行第二数据的更新处理,从而使得新旧索引的数据状态可以彼此保持一致,达到降低数据处理复杂度,进而使得搜索引擎可以方便的、高效的实现新旧索引上数据的平滑迁移的效果。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其他特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开的原理。
图1是本公开实施例提供的索引迁移方法的流程示意图。
图2是本公开实施例提供的索引迁移处理的框架示意图。
图3是本公开实施例提供的索引迁移装置的原理框图。
图4是本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其他例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<方法实施例>
在目前的搜索引擎产品,例如,ES中,当索引的映射需要更改时,例如,想要修改某个索引字段的数据类型时,那么该索引字段的查询操作将会失效,因此往往需要重新设计映射,以及基于重新设计的映射重建索引,将旧索引数据迁移到变更后的新索引中。
在实际中,现有方法在进行索引迁移时,可以通过搜索引擎,例如ES提供的reindex功能将旧索引数据迁移到变更后的新索引中,但是,由于迁移过程中需要保持增量数据写入,但又同时需要将旧索引上的增量数据往新索引上进行双写,因此,一般是由开发人员临时开发迁移脚本来实现该功能。而在迁移的过程中,为了保证新旧索引的数据一致性问题,即,保证新旧索引上的数据写入状态一致性的问题,一般是采取同步写入方式来实现新旧索引的双写处理,这种方式不仅不能最大限度发挥搜索引擎性能,降低数据处理效率;而且,由于每次迁移处理都需要开发人员实时开发迁移脚本,所以该方法还同时存在不够方便的问题,例如,每次索引迁移时,都需要增加一份临时脚本,这将给代码维护带来严重的困难,不便于进行项目管理。
为解决上述问题,本公开实施例提供一种索引迁移方法,请参看图1,其是本公开实施例提供的索引迁移方法的流程示意图。该方法可以应用于搜索引擎中,该搜索引擎例如可以为ES、Solr、OpenSearch等搜索引擎产品,在本实施例中,如无特殊说明,以该方法应用于ES中为例进行说明。
如图1所示,本实施例的方法可以包括如下步骤S1100-S1300,以下予以详细说明。
步骤S1100,根据目标任务队列,获得第一请求,其中,所述第一请求用于更新目标数据的第一索引,所述目标数据为所述搜索引擎在执行索引迁移处理过程中、接收到的增量数据。
在本实施例中,目标任务队列,可以是用于存储待处理的请求的队列,该队列例如可以为基于Rocketmq的消息队列,其中,Rocketmq是一种分布式消息发布订阅系统,当然,该缓存队列也可以通过其他方式实现,例如,也可以为基于Rabbitmq的队列,此处不做特殊限定。需要说明的是,在本实施例中,目标任务队列中可以包括多个请求,每一请求可以为搜索引擎,例如,ES根据接收到的增量数据,生成的用于更新该增量数据的索引的请求。
在具体实施时,第一请求,可以是将多个用于更新索引的请求批量提交生成的请求。例如,目标数据分别为对应不同时刻的多条增量数据,每条增量数据可以对应一索引更新请求,也即是说,在本实施例中,为了避免同一时间仅处理一条索引更新请求而带来的数据处理效率低下的问题,可以通过将对应多条增量数据的多个索引更新请求以批量提交的方式,构建获得第一请求,以提升单位时间内的数据处理效率。
另外,在本实施例中,所述更新目标数据的第一索引,具体可以分为两种情况,一种情况是在搜索引擎中不包含该目标数据的情况下,搜索引擎在接收到该目标数据之后,创建该目标数据的索引,并使用该索引实现对目标数据的管理、检索等功能;另一种可以是搜索引擎在接收到该目标数据之后,更新既有的索引中的数据,例如,更新既有索引中某一字段的数值。当然,在实际中,搜索引擎在更新索引时,其内部处理往往是先删除旧索引,再重新创建新的索引文档,所以,该两种情况可以根据更新第一索引的指令进行区分,例如,XPUT指令用于指示创建一个索引,而XPOST指令可以用于指示更新既有的索引中的内容,其详细说明此处不再赘述。
根据以上说明可知,在本实施例中,可以通过以下步骤维护所述目标任务队列:接收待处理的增量数据,并生成与所述增量数据对应的第三请求;将所述第三请求写入至所述目标任务队列。
具体来讲,所述增量数据可以为搜索引擎,例如ES在进行索引迁移处理时、实时接收到的增量数据;相对应地,该第三请求可以是与该实时增量数据对应的、用于更新该增量数据的索引的请求。
根据以上说明可知,在本实施例中,在搜索引擎接收到实时的、待处理的增量数据后,可以不直接更新旧索引,而是通过先将用于更新旧索引的请求加入目标任务队列,从而使得搜索引擎可以异步的处理该请求;相较于现有处理中以同步方式处理该类请求,并在该类请求未处理完成的情况下,阻塞其上游处理的情况,本实施例提供的方法可以充分利用搜索引擎性能,已达到提升数据处理效率的效果。
另外,为了进一步提升数据处理效率,在具体实施时,所述第一请求中可以包括至少一个请求;所述根据目标任务队列,获得第一请求,包括:从所述目标任务队列中获取待处理的第四请求;缓存所述第四请求;以及,在已缓存的所述第四请求满足预设条件的情况下,通过批量提交已缓存的所述第四请求,构建所述第一请求。
具体来讲,在本实施例中,搜索引擎针对接收到的增量数据,在将该增量数据对应的索引更新请求,即上述第三请求加入目标任务队列之后;可以启动n个消费线程(thread),其中,n为不小于1的正整数,以及由该n个消费线程并发的从该目标任务队列中获取待处理的请求并进行处理,以下对每一消费线程获取并发处理索引更新请求的步骤进行详细说明。
在具体实施时,搜索引擎中的一消费线程可以根据预设触发机制,例如按照预设时间间隔从目标任务队列中获取一待处理的请求,即,第四请求;在获取到该请求之后,为了充分发挥搜索引擎的性能,该消费线程可以先不提交该请求,而是先缓存该请求,例如,将该请求存储到该消费线程对应的内存空间中;之后,该消费线程继续根据上述预设触发机制从目标任务队列中继续获取下一待处理的请求;其中,在该消费线程每次从目标任务队列获取到一请求并将该请求缓存到期对应的内存空间之后,可以判断当前时刻已缓存的所有请求是否满足预先设置的、用于进行批量提交的预设条件,若满足,该消费线程则通过批量提交已缓存的所有请求的方式构建第一请求。
需要说明的是,在本实施例中,用于判断一消费线程中缓存的所有请求是否满足批量提交要求的预设条件可以为以下至少一项:缓存的所述第四请求的数量不小于预设第一阈值;缓存的所述第四请求的大小不小于预设第二阈值。当然,在具体实施时,该预设条件、预设第一阈值、预设第二阈值也可以根据需要进行设置,此处不做特殊限定。
还需要说明的是,在具体实施时,每一消费线程在根据已缓存的所有第四请求,通过批量提交方式构建获得第一请求之后,为了避免浪费内存空间,该方法还包括清空已缓存的所述第四请求,其详细处理过程此处不再赘述。
在步骤S1100之后,执行步骤S1200,根据所述第一请求,更新所述第一索引,并根据所述第一请求中全部请求的执行状态,获得第一状态信息。
具体来讲,在搜索引擎通过以上步骤获得当前待处理的第一请求之后,可以通过提交该第一请求的方式,更新目标数据的第一索引,即,更新旧索引;然而,由于本实施例的第一请求是对应多条索引更新请求的批量操作请求,因此,在具体处理时,为了精确的获取每一条索引更新请求的执行状态,以确保新旧索引的数据状态一致,在具体实施时,所述根据所述第一请求,更新所述第一索引,并根据所述第一请求中全部请求的执行状态,获得第一状态信息,包括:在处理所述第一请求的事件中,插入目标请求钩子;通过所述目标请求钩子,接收与所述第一请求中的每一请求对应的至少一个执行状态;根据所述至少一个执行状态,获得所述第一状态信息。
具体来讲,在本实施例中,可以通过钩子(HOOK)技术来精确获得每一索引更新请求的执行状态,其中,钩子技术又叫做钩子函数,是指通过在应用程序响应于某一函数所产生的消息或事件中,通过插入钩子函数的方式来拦截某一函数的处理过程,即,钩子函数先得到控制权,从而使得钩子函数既可以加工处理(改变)该函数的执行行为,或者还可以强制结束消息的传递等。
具体到本实施例中,可以通过将目标请求钩子插入调用第一请求所产生的消息或事件中,在该事件中,在每一索引更新请求被执行之后,可以将每一索引更新请求的请求标识、请求数据、执行状态等信息传输给目标请求钩子,以使得目标请求钩子可以获取第一请求中每一索引更新请求的执行状态,进而根据第一请求中所有索引更新请求的执行状态,获得表示第一请求是否被成功执行的第一状态信息。需要说明的是,在本实施例中,目标请求钩子为可支持插拔的钩子,即,可以通过对外暴露接口的方式,由开发人员根据该钩子函数获取到的每一索引更新请求的执行状态,实现索引迁移处理的自定义操作,从而使得整个迁移过程更加灵活可控。
在一个实施例中,所述根据所述至少一个执行状态,获得所述第一状态信息,包括:在所述至少一个执行状态均表示对应请求被成功执行的情况下,将所述第一状态信息设置为表示所述第一请求被成功执行的信息;以及,在所述至少一个执行状态中的任一执行状态表示对应请求未被成功执行的情况下,将所述第一状态信息设置为表示所述第一请求未被成功执行的信息。另外,在所述第一状态信息表示所述第一请求未被成功执行的情况下,本实施例提供的方法还包括:将所述第一请求重新写入所述目标任务队列。
具体来讲,针对同一时刻以批量提交方式获得的第一请求,在执行该第一请求以更新第一索引时,本实施例基于“全失败”的方式来处理同一批次的索引更新请求,即,只要同一批中有一条被执行失败,则认为第一请求中的全体请求的执行状态为失败,并将第一状态信息设置为表示第一请求未被成功执行的信息,例如,设置为“0”或“失败”,此处不做特殊限定;同时,在第一状态信息表示第一请求未被成功执行的情况下,为了避免数据状态维护困难的情况,本实施例将该批请求,即第一请求中的所有索引更新请求重新写入至目标任务队列,由于请求ES处理具有冥等性,所以重复处理并不会给数据一致性造成影响。
另外,针对同一时刻以批量提交方式获得的第一请求,如果其中所有的索引更新请求均被成功执行,则可将第一状态信息设置为表示第一请求被成功执行的信息,例如,设置为“1”或“成功”,此处不做特殊限定。同时,若第一请求被成功执行,则表示目标数据的第一索引,即旧索引被成功更新,此时,则可进行目标数据的第二索引更新处理,由于该种情况下,该批请求的旧索引已被成功写入,索引在更新第二索引时,可以不必再受第一索引执行状态的影像,即,可以单独维护第二索引的更新处理,将第一索引和第二索引的更新处理解耦合,以降低数据处理复杂度。
在步骤S1200之后,执行步骤S1300,在所述第一状态信息表示所述第一请求被成功执行的情况下,执行所述目标数据的第二索引更新处理,其中,所述第二索引与所述第一索引的结构不同。
在一个实施例中,所述执行所述目标数据的第二索引更新处理,包括:生成与所述目标数据对应的、用于更新所述第二索引的第二请求;处理并获取所述第二请求的第二状态信息,并在所述第二状态信息表示所述第二请求未被成功执行的情况下,重新执行所述第二请求。
具体来讲,在第一请求中的全部请求被成功执行,即,目标数据的旧索引被成功更新之后,即可将目标数据写入与第一索引对应的第二索引,即与旧索引分别对应的新索引中,由于本实施例是在第一索引被全部成功执行的情况下触发的、对第二索引的更新处理,所以目标索引的第二索引更新处理可以单独维护其数据状态,即,在某一请求执行失败时,可以不必去管第一索引的状态,而是重新提交该请求即可,即,可通过绕开老索引更新的方式更新新索引。
请参看图2,其是本公开实施例提供的索引迁移处理的框架示意图。如图2所示,在具体实施时,该框架可以包括异步提交组件、请求核心执行器、请求钩子和通用失败处理模型四个模块,以下分别对各模块的功能进行说明。
异步提交组件,可以用于在搜索引擎进行索引迁移处理的过程中、针对搜索引擎接收到的增量数据,生成该增量数据对应的索引更新请求,并将该索引更新请求加入至目标任务队列中,之后,该组件即可马上返回不阻塞上游处理,以实现索引更新请求的异步处理。
请求核心执行器,可以用于执行上述步骤S1100,例如,可以用于启动n个用于并发的从目标任务队列中获取待处理的索引更新请求的线程,每一线程在其缓存的请求满足预设条件的情况下,通过批量提交方式构建获得第一请求;同时,请求核心执行器会将每一批请求里的目标数据、执行成功和失败的请求以及其执行状态全部收集起来。
请求钩子,可以为对应上述目标请求钩子的钩子函数,该请求钩子被插入请求核心执行器的请求执行事件中,并接收请求核心执行器传输的目标数据、执行成功和失败的请求的标识以及其对应执行状态,并根据该执行状态,基于“全失败”的方式来生成表示第一请求是否被成功执行的第一状态信息;在具体实施时,若第一状态信息表示第一请求被成功执行,则第一钩子可以直接执行目标数据的第二索引更新处理,即,通过生成并提交上述第二请求,来更新目标数据的第二索引。另外,在第一请求执行失败或者第二请求执行失败的情况下,请求钩子还可以把第一请求中执行失败的全部请求发送给通用失败处理模型,以及,在第二请求被执行失败的情况下,将第二请求中的全部或部分请求发送给通用失败处理模型。
通用失败处理模型,用于将接收到的、执行失败需要再处理的请求进行重新处理,若重新处理失败,则该模型会持久化存储该失败记录,以便于进行数据回放。在该模型中,在处理失败记录时,对于老索引,即第一索引的更新处理,可以通过轮询重新进入目标任务队列来处理目标数据的第一索引更新处理;对于新索引,即第二索引的更新处理,则可以通过轮询绕过老索引,以对新索引进行直接更新,从而实现功能上的闭环,实现新旧索引的平滑迁移。
根据图2可知,本实施例是基于异步方式实现增量数据的新旧索引双写处理,即,数据流是从生产侧异步提交到消费侧并发消费的1:n模型,并且消费后通过批量提交方式,可以大大提升迁移的效率和最大限度发挥搜搜引擎的性能。另外,针对编码不便于维护的问题,本实施例提供的钩子接口机制,可以实现迁移逻辑的可插拔,从提交请求到错误处理,框架可以从点到面地将迁移的各个环节串联起来,以标准化迁移流程,为搜索引擎增量数据的平滑迁移提供了一个整体一站式的机制。
需要说明的是,本实施例提供的方法是用于搜索引擎,例如,ES在进行索引迁移时,在通过类似reindex的功能迁移既有索引的过程中,对接收到的增量数据进行新旧索引上的数据双写处理,以方便、高效的实现新旧索引的平滑迁移。以实施该方法的搜索引擎为ES为例,在具体实施时,该方法的结束条件例如可以为:已完成既有的、旧索引数据的迁移处理,并且,在预设时间内未再处理任何索引更新请求。
在具体实施时,既有的旧索引数据的迁移处理,可以通过ES提供的reindex功能将旧索引数据迁移至新索引数据中,在迁移完成之后,可以通过别名(alias)切换功能,将原来指向旧索引的别名切换至新索引上,使得ES最新接收的增量数据被直接写入新索引中,其详细处理过程此处不再赘述。
综上所述,本公开实施例提供的方法,在进行索引迁移处理时,根据目标任务队列得到第一请求;并在根据该第一请求,更新第一索引的过程中,通过获取第一请求中全部请求的执行状态,获得第一状态信息;之后,根据第一状态信息,确定是否执行目标数据的第二索引更新处理。在该方法中,针对索引迁移处理时接收到的增量数据,在进行新旧索引双写处理时,通过将与目标数据对应的第一请求加入目标任务队列,并通过从该目标任务队列中获取该第一请求,以更新第一索引的方式,可以以异步消费的方式实现新旧索引上的数据双写处理,以充分利用搜索引擎性能,提升数据处理效率。另外,在处理第一请求的过程中,该方法通过获取第一请求中每一请求的执行状态,可以获得表示第一请求中全部请求是否被成功执行的第一状态信息,进而可以在第一状态信息表示第一请求被成功执行的情况下,执行目标数据的第二索引更新处理,通过该种处理方式,该方法可以在第一索引被成功更新的情况下,单独的执行第二数据的更新处理,从而使得新旧索引的数据状态可以彼此保持一致,达到降低数据处理复杂度,进而使得搜索引擎可以方便的、高效的实现新旧索引上数据的平滑迁移的效果。
<装置实施例>
与上述实施例相对应,在本实施例中,还提供一种索引迁移装置,如图3所示,该装置3000可以包括第一请求获取模块3100、第一状态信息获得模块3200和第二索引更新模块3300。
该第一请求获取模块3100,用于根据目标任务队列,获得第一请求,其中,所述第一请求用于更新目标数据的第一索引,所述目标数据为所述搜索引擎在执行索引迁移处理过程中、接收到的增量数据;该第一状态信息获得模块3200,用于处理所述第一请求,并根据所述第一请求中全部请求的执行状态,获得第一状态信息;该第二索引更新模块3300,用于在所述第一状态信息表示所述第一请求被成功执行的情况下,执行所述目标数据的第二索引更新处理,其中,所述第二索引与所述第一索引的结构不同。
<设备实施例>
在本实施例中,还提供一种电子设备,如图4所示,该电子设备4000还可以包括处理器4200和存储器4100,该存储器4100用于存储可执行的指令;该处理器4200用于根据指令的控制运行电子设备以执行根据本公开任意实施例的索引迁移方法。
<介质实施例>
与上述方法实施例对应,在本实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质存储有可被计算机读取并运行的计算机程序,所述计算机程序用于在被所述计算机读取运行时,执行如本公开以上任意实施例所述的方法。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施例。本公开的范围由所附权利要求来限定。
Claims (11)
1.一种索引迁移方法,其特征在于,应用于搜索引擎,包括:
根据目标任务队列,获得第一请求,其中,所述第一请求用于更新目标数据的第一索引,所述目标数据为所述搜索引擎在执行索引迁移处理过程中、接收到的增量数据;
根据所述第一请求,更新所述第一索引,并根据所述第一请求中全部请求的执行状态,获得第一状态信息;
在所述第一状态信息表示所述第一请求被成功执行的情况下,执行所述目标数据的第二索引更新处理,其中,所述第二索引与所述第一索引的结构不同。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一请求,更新所述第一索引,并根据所述第一请求中全部请求的执行状态,获得第一状态信息,包括:
在处理所述第一请求的事件中,插入目标请求钩子;
通过所述目标请求钩子,接收与所述第一请求中的每一请求对应的至少一个执行状态;
根据所述至少一个执行状态,获得所述第一状态信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述至少一个执行状态,获得所述第一状态信息,包括:
在所述至少一个执行状态均表示对应请求被成功执行的情况下,将所述第一状态信息设置为表示所述第一请求被成功执行的信息;以及,
在所述至少一个执行状态中的任一执行状态表示对应请求未被成功执行的情况下,将所述第一状态信息设置为表示所述第一请求未被成功执行的信息。
4.根据权利要求1所述的方法,其特征在于,所述执行所述目标数据的第二索引更新处理,包括:
生成与所述目标数据对应的、用于更新所述第二索引的第二请求;
处理并获取所述第二请求的第二状态信息,并在所述第二状态信息表示所述第二请求未被成功执行的情况下,重新提交所述第二请求。
5.根据权利要求1所述的方法,其特征在于,在所述第一状态信息表示所述第一请求未被成功执行的情况下,所述方法还包括:
将所述第一请求重新写入所述目标任务队列。
6.根据权利要求1所述的方法,其特征在于,所述方法通过以下步骤维护所述目标任务队列:
接收待处理的增量数据,并生成与所述增量数据对应的第三请求;
将所述第三请求写入至所述目标任务队列。
7.根据权利要求6所述的方法,其特征在于,所述第一请求中包括至少一个请求;
所述根据目标任务队列,获得第一请求,包括:
从所述目标任务队列中获取待处理的第四请求;
缓存所述第四请求;以及,
在缓存的所述第四请求满足预设条件的情况下,通过批量提交已缓存的所述第四请求,构建所述第一请求。
8.根据权利要求7所述的方法,其特征在于,所述预设条件包括以下至少一项:
缓存的所述第四请求的数量不小于预设第一阈值;
缓存的所述第四请求的大小不小于预设第二阈值。
9.一种索引迁移装置,其特征在于,应用于搜索引擎,包括:
第一请求获取模块,用于根据目标任务队列,获得第一请求,其中,所述第一请求用于更新目标数据的第一索引,所述目标数据为所述搜索引擎在执行索引迁移处理过程中、接收到的增量数据;
第一状态信息获得模块,用于处理所述第一请求,并根据所述第一请求中全部请求的执行状态,获得第一状态信息;
第二索引更新模块,用于在所述第一状态信息表示所述第一请求被成功执行的情况下,执行所述目标数据的第二索引更新处理,其中,所述第二索引与所述第一索引的结构不同。
10.一种电子设备,其特征在于,包括:
存储器,用于存储可执行的指令;
处理器,用于根据所述指令的控制运行所述电子设备执行如权利要求1-8任意一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有可被计算机读取执行的计算机程序,所述计算机程序用于在被所述计算机读取运行时,执行根据权利要求1-8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110483701.5A CN113220662B (zh) | 2021-04-30 | 2021-04-30 | 索引迁移方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110483701.5A CN113220662B (zh) | 2021-04-30 | 2021-04-30 | 索引迁移方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113220662A CN113220662A (zh) | 2021-08-06 |
CN113220662B true CN113220662B (zh) | 2024-02-09 |
Family
ID=77090532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110483701.5A Active CN113220662B (zh) | 2021-04-30 | 2021-04-30 | 索引迁移方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220662B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579596B (zh) * | 2022-05-06 | 2022-09-06 | 达而观数据(成都)有限公司 | 一种实时更新搜索引擎索引数据的方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943032B1 (en) * | 2011-09-30 | 2015-01-27 | Emc Corporation | System and method for data migration using hybrid modes |
CN109857528A (zh) * | 2019-01-10 | 2019-06-07 | 北京三快在线科技有限公司 | 数据迁移的速度调整方法、装置、存储介质和移动终端 |
CN110196844A (zh) * | 2018-04-16 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据迁移方法、系统及存储介质 |
CN111538719A (zh) * | 2020-04-30 | 2020-08-14 | 深圳前海微众银行股份有限公司 | 数据迁移方法、装置、设备及计算机存储介质 |
CN112052247A (zh) * | 2020-09-29 | 2020-12-08 | 微医云(杭州)控股有限公司 | 搜索引擎的索引更新系统、方法、装置、电子设备、存储介质 |
CN112507187A (zh) * | 2020-11-11 | 2021-03-16 | 贝壳技术有限公司 | 索引变更方法及装置 |
CN112699098A (zh) * | 2020-12-31 | 2021-04-23 | 中国农业银行股份有限公司 | 一种索引数据迁移方法、装置及设备 |
-
2021
- 2021-04-30 CN CN202110483701.5A patent/CN113220662B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943032B1 (en) * | 2011-09-30 | 2015-01-27 | Emc Corporation | System and method for data migration using hybrid modes |
CN110196844A (zh) * | 2018-04-16 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据迁移方法、系统及存储介质 |
CN109857528A (zh) * | 2019-01-10 | 2019-06-07 | 北京三快在线科技有限公司 | 数据迁移的速度调整方法、装置、存储介质和移动终端 |
CN111538719A (zh) * | 2020-04-30 | 2020-08-14 | 深圳前海微众银行股份有限公司 | 数据迁移方法、装置、设备及计算机存储介质 |
CN112052247A (zh) * | 2020-09-29 | 2020-12-08 | 微医云(杭州)控股有限公司 | 搜索引擎的索引更新系统、方法、装置、电子设备、存储介质 |
CN112507187A (zh) * | 2020-11-11 | 2021-03-16 | 贝壳技术有限公司 | 索引变更方法及装置 |
CN112699098A (zh) * | 2020-12-31 | 2021-04-23 | 中国农业银行股份有限公司 | 一种索引数据迁移方法、装置及设备 |
Non-Patent Citations (1)
Title |
---|
面向分布式搜索引擎的索引库动态维护算法;曾剑平;吴承荣;龚凌晖;;山东大学学报(理学版)(05);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113220662A (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086725B2 (en) | Orchestration of heterogeneous multi-role applications | |
US10558615B2 (en) | Atomic incremental load for map-reduce systems on append-only file systems | |
US11556396B2 (en) | Structure linked native query database management system and methods | |
US11113158B2 (en) | Rolling back kubernetes applications | |
US7680793B2 (en) | Commit-time ordered message queue supporting arbitrary read and dequeue patterns from multiple subscribers | |
US5991768A (en) | Finer grained quiescence for data replication | |
US7996363B2 (en) | Real-time apply mechanism in standby database environments | |
US11347684B2 (en) | Rolling back KUBERNETES applications including custom resources | |
US11347701B2 (en) | Live zero downtime migration of databases with disparate schemata | |
US10824968B2 (en) | Transformation of logical data object instances and updates to same between hierarchical node schemas | |
US20160179918A1 (en) | Asynchronous data replication using an external buffer table | |
US20200364185A1 (en) | Method for data replication in a data analysis system | |
EP3678030B1 (en) | Distributed system for executing machine learning, and method therefor | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
EP3543843A1 (en) | System and method of rolling upgrades of data traits | |
JP2013513162A (ja) | 分散された永続性インスタンスに対するロックの解決 | |
US11983519B2 (en) | Abort installation of firmware bundles | |
CN113220662B (zh) | 索引迁移方法、装置、电子设备及存储介质 | |
US9110933B1 (en) | Processing data triggers in an untrusted environment based on information stored in a trusted environment | |
CN117083591A (zh) | 数据库加速器中复制数据改变的异步持久 | |
CN113568908A (zh) | 一种键值请求并行调度方法及系统 | |
JP2013534347A (ja) | 高性能コンピューティングアプリケーションの実行のためのシステムおよび方法 | |
CN113971079A (zh) | 分布式系统中变更的并行处理 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
US11748203B2 (en) | Multi-role application orchestration in a distributed storage system |
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 |