【技术实现步骤摘要】
一种提高数据写入效率的方法及终端
本专利技术涉及分布式数据库领域,尤其涉及一种提高数据写入效率的方法及终端。
技术介绍
随着移动互联网的蓬勃发展,业务系统面临大数据复杂搜索的场景,而传统的关系型数据库MySQL已无法适用大数据的复杂条件搜索场景。Elasticsearch(ES)是一种基于Lucence底层技术的分布式全文搜索引擎,提供了近实时的复杂搜索条件解决方案。具体原理分为以下几个步骤:用户将数据提交Elasticsearch数据库中,通过分词控制器将对应的语句分词,将其权重和分词结果一并存入数据库,利用倒排索引的原理,当用户搜索数据时,再根据权重结果排名并打分,将搜索结果返回给用户。正常资源条件下使用Elasticsearch将提供高效的数据写入以及数据读取功能,可是,现在互联网流量巨大,需要支持大数据量高并发场景下的数据写入,而ES集群在大数据量写入场景下,存在一些写入上的性能问题。ES客户端数据写入时,客户端会统一封装一批的数据,我们称之为BulkRequest请求,ES服务端接收到该请求后,会写入一个到多个的shard(分片)中。当大量数据写入时,将BulkRequest请求写入到多shard中的请求响应时间依赖于最耗时的一个shard的响应时间;因为该请求需要等待所有shard返回数据后,才可向客户端响应。同时,由于每个shard中处理的数据量不同,造成了每个shard的处理效率不一样,最终导致了数据写入延迟,增加数据写入耗时。
技术实现思路
本专利技术所要解决的技术问题是 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。