一种提高数据写入效率的方法及终端技术

技术编号:27975444 阅读:16 留言:0更新日期:2021-04-06 14:09
本发明专利技术提供了一种提高数据写入效率的方法及终端,监控并获取ES中每一分片的写入队列的队列深度及第一预设时间内的写入拒绝标识;接收批量数据写入请求;根据队列深度及写入拒绝标识选择分片执行所述批量数据写入请求。本发明专利技术对分片的队列深度及写入拒绝标识进行监控,通过二者标识分片的状态,根据分片的状态选择分片执行批量数据写入请求,与随机选择分片的方式相比,降低了写入数据的等待时间,提高了用户进行数据写入时的使用体验,实现了对数据写入效率的优化。

【技术实现步骤摘要】
一种提高数据写入效率的方法及终端
本专利技术涉及分布式数据库领域,尤其涉及一种提高数据写入效率的方法及终端。
技术介绍
随着移动互联网的蓬勃发展,业务系统面临大数据复杂搜索的场景,而传统的关系型数据库MySQL已无法适用大数据的复杂条件搜索场景。Elasticsearch(ES)是一种基于Lucence底层技术的分布式全文搜索引擎,提供了近实时的复杂搜索条件解决方案。具体原理分为以下几个步骤:用户将数据提交Elasticsearch数据库中,通过分词控制器将对应的语句分词,将其权重和分词结果一并存入数据库,利用倒排索引的原理,当用户搜索数据时,再根据权重结果排名并打分,将搜索结果返回给用户。正常资源条件下使用Elasticsearch将提供高效的数据写入以及数据读取功能,可是,现在互联网流量巨大,需要支持大数据量高并发场景下的数据写入,而ES集群在大数据量写入场景下,存在一些写入上的性能问题。ES客户端数据写入时,客户端会统一封装一批的数据,我们称之为BulkRequest请求,ES服务端接收到该请求后,会写入一个到多个的shard(分片)中。当大量数据写入时,将BulkRequest请求写入到多shard中的请求响应时间依赖于最耗时的一个shard的响应时间;因为该请求需要等待所有shard返回数据后,才可向客户端响应。同时,由于每个shard中处理的数据量不同,造成了每个shard的处理效率不一样,最终导致了数据写入延迟,增加数据写入耗时。
技术实现思路
本专利技术所要解决的技术问题是:提供一种提高数据写入效率的方法及终端,实现对ES数据写入效率的提高,从而减少ES对请求的响应时间。为了解决上述技术问题,本专利技术采用的一种技术方案为:一种提高数据写入效率的方法,包括步骤:S1、监控并获取ES中每一分片的写入队列的队列深度及第一预设时间内的写入拒绝标识;S2、接收批量数据写入请求;S3、根据所述队列深度及所述写入拒绝标识选择所述分片执行所述批量数据写入请求。为了解决上述技术问题,本专利技术采用的另一种技术方案为:一种提高数据写入效率的终端,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:S1、监控并获取ES中每一分片的写入队列的队列深度及第一预设时间内的写入拒绝标识;S2、接收批量数据写入请求;S3、根据所述队列深度及所述写入拒绝标识选择所述分片执行所述批量数据写入请求。本专利技术的有益效果在于:对每一分片的写入队列的队列深度及第一预设时间内的写入拒绝标识进行监控,根据队列深度及写入拒绝标识的值进行执行批量数据写入请求的分片的选择,有别于传统从节点考虑的方法,直接从执行数据写入的最基本单位分片入手,提高数据在分片中的处理效率从而加快了分片中写入数据的效率,实现ES对请求的快速响应。附图说明图1为本专利技术实施例的一种提高数据写入效率的方法的步骤流程图;图2为本专利技术实施例的一种提高数据写入效率的终端的结构示意图;标号说明:1、一种提高数据写入效率的终端;2、处理器;3、存储器。具体实施方式为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。请参照图1,一种提高数据写入效率的方法,包括步骤:S1、监控并获取ES中每一分片的写入队列的队列深度及第一预设时间内的写入拒绝标识;S2、接收批量数据写入请求;S3、根据所述队列深度及所述写入拒绝标识选择所述分片执行所述批量数据写入请求。从上述描述可知,本专利技术的有益效果在于:对每一分片的写入队列的队列深度及第一预设时间内的写入拒绝标识进行监控,根据队列深度及写入拒绝标识的值进行执行批量数据写入请求的分片的选择,有别于传统从节点考虑的方法,直接从执行数据写入的最基本单位分片入手,提高数据在分片中的处理效率从而加快了分片中写入数据的效率,实现对请求的快速响应。进一步的,所述S2具体为:接收批量数据写入请求,判断所述批量数据写入请求中是否包括预设路径,若是,则根据所述预设路径执行所述批量数据写入请求,否则,执行所述S3。由上述描述可知,若批量数据写入请求中带有预设路径,则优先根据预设路径进行批量数据写入请求的执行,首先满足用户的自定义需求,若用户未自定义预设路径,再根据获取到的队列深度及写入拒绝标识进行分片的选择,保证数据写入的效率。进一步的,所述S3具体为:S31、判断是否在当前时间向前计算的第二预设时间内,所有所述分片都存在所述写入拒绝标识,若是,则返回拒绝所述批量数据写入请求信息,否则,执行S32;S32、判断是否在当前时间向前计算的第二预设时间内,所有所述分片都不存在所述写入拒绝标识且所有所述分片的所述队列深度均为0,若是,则随机选择一个所述分片执行所述批量数据写入请求,否则,执行S33;S33、获取不存在所述写入拒绝标识的备选分片,按照所述队列深度由低到高的顺序对所述备选分片进行排序,选择排在最前的所述备选分片执行所述批量数据写入请求。由上述描述可知,根据队列深度和是否存在写入拒绝标识确定分片状态,根据不同的分片状态实行不同的确认执行批量数据写入请求的分片的方法,若所有分片都不存在写入拒绝标识且队列深度都为0,则说明当前系统空闲,随机选择一分片执行批量数据写入请求,若所有分片都存在写入拒绝标识,则说明当前系统满载,自动拒绝批量数据写入请求避免增加系统负担,若有不存在写入拒绝标识的分片,则将其按照队列深度由低到高进行排序,优先在队列深度最低的分片中执行批量数据写入请求,减少等待分片处理数据的排队时间,提高数据写入的标识。进一步的,所述S1还包括:监控并获取ES中每一节点的接收请求量;所述S3具体为:S31、判断是否在当前时间向前计算的第二预设时间内,所有所述分片都存在所述写入拒绝标识,若是,则返回拒绝所述批量数据写入请求信息,否则,执行S32;S32、判断是否在当前时间向前计算的第二预设时间内,所有所述分片都不存在所述写入拒绝标识且所有所述分片的所述队列深度均为0,若是,则随机选择一个所述分片执行所述批量数据写入请求,否则,执行S33;S33、获取不存在所述写入拒绝标识的第一分片,按照所述接收请求量由低到高的顺序对所述节点进行排序,选择排在最前的所述节点作为目标节点,位于所述目标节点上的所述第一分片作为备选分片,按照所述队列深度由低到高的顺序对所述备选分片进行排序,选择排在最前的所述备选分片执行所述批量数据写入请求。由上述描述可知,为了避免分片队列深度低但是分片所处的节点所接收的请求量较大影响数据处理效率,加入节点接收请求量的判断,综合分片所处节点所接收到的请求量的大小和分片自身的队列深度共同确定执行批量数据写入请求的分片,提高执行数据写入的效率。进一步的,所述S1具体为:在所本文档来自技高网
...

【技术保护点】
1.一种提高数据写入效率的方法,其特征在于,包括步骤:/nS1、监控并获取ES中每一分片的写入队列的队列深度及第一预设时间内的写入拒绝标识;/nS2、接收批量数据写入请求;/nS3、根据所述队列深度及所述写入拒绝标识选择所述分片执行所述批量数据写入请求。/n

【技术特征摘要】
1.一种提高数据写入效率的方法,其特征在于,包括步骤:
S1、监控并获取ES中每一分片的写入队列的队列深度及第一预设时间内的写入拒绝标识;
S2、接收批量数据写入请求;
S3、根据所述队列深度及所述写入拒绝标识选择所述分片执行所述批量数据写入请求。


2.根据权利要求1所述的一种提高数据写入效率的方法,其特征在于,所述S2具体为:
接收批量数据写入请求,判断所述批量数据写入请求中是否包括预设路径,若是,则根据所述预设路径执行所述批量数据写入请求,否则,执行所述S3。


3.根据权利要求1所述的一种提高数据写入效率的方法,其特征在于,所述S3具体为:
S31、判断是否在当前时间向前计算的第二预设时间内,所有所述分片都存在所述写入拒绝标识,若是,则返回拒绝所述批量数据写入请求信息,否则,执行S32;
S32、判断是否在当前时间向前计算的第二预设时间内,所有所述分片都不存在所述写入拒绝标识且所有所述分片的所述队列深度均为0,若是,则随机选择一个所述分片执行所述批量数据写入请求,否则,执行S33;
S33、获取不存在所述写入拒绝标识的备选分片,按照所述队列深度由低到高的顺序对所述备选分片进行排序,选择排在最前的所述备选分片执行所述批量数据写入请求。


4.根据权利要求1所述的一种提高数据写入效率的方法,其特征在于,所述S1还包括:
监控并获取ES中每一节点的接收请求量;
所述S3具体为:
S31、判断是否在当前时间向前计算的第二预设时间内,所有所述分片都存在所述写入拒绝标识,若是,则返回拒绝所述批量数据写入请求信息,否则,执行S32;
S32、判断是否在当前时间向前计算的第二预设时间内,所有所述分片都不存在所述写入拒绝标识且所有所述分片的所述队列深度均为0,若是,则随机选择一个所述分片执行所述批量数据写入请求,否则,执行S33;
S33、获取不存在所述写入拒绝标识的第一分片,按照所述接收请求量由低到高的顺序对所述节点进行排序,选择排在最前的所述节点作为目标节点,位于所述目标节点上的所述第一分片作为备选分片,按照所述队列深度由低到高的顺序对所述备选分片进行排序,选择排在最前的所述备选分片执行所述批量数据写入请求。


5.根据权利要求1所述的一种提高数据写入效率的方法,其特征在于,所述S1具体为:
在所述ES的线程池中增加分片监控字段Map<key1,Map<key2,value>>,其中key1表示分片唯一标识,key2表示队列深度或写入拒绝标识其中一者的标识,value与所述key2对应,表示队列深度或写入拒绝标识其中一者的值。


6.一种提高数据写入效率的终端,包括存储器...

【专利技术属性】
技术研发人员:刘德建林伟郭玉湖陈宏
申请(专利权)人:福建天泉教育科技有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1