基于指定路由的数据写入方法、装置、介质及电子设备制造方法及图纸

技术编号:34286205 阅读:19 留言:0更新日期:2022-07-27 08:26
本申请涉及一种基于指定路由的数据写入方法、装置、介质及电子设备,该方法包括:接收数据写入请求,并获取所述数据写入请求中的写入数据;从预存的路由值表中选择一路由值配置给所述写入数据,所述路由值表包括多个路由值;根据配置的路由值在对应关系表中查询对应的分片编码,所述对应关系表包括各个所述路由值与各个分片编码之间的对应关系;根据查询到的分片编码确定对应的分片,并将所述写入数据发送至所述对应的分片所在的节点以进行写入。本申请能够使每次ES数据写入操作不再有内部的数据分发,有效地降低集群I/O负载,提高了集群的稳定性。解决长尾问题,提高了ES数据的写入效率。入效率。入效率。

【技术实现步骤摘要】
基于指定路由的数据写入方法、装置、介质及电子设备


[0001]本专利技术计算机
,特别是涉及一种基于指定路由的数据写入方法、装置、介质及电子设备。

技术介绍

[0002]分布式存储搜索引擎系统(ElasticSearch,ES)是目前流行的一种分布式多用户能力的全文搜索服务器,设计用于云计算中,能够达到实时搜索。由于系统分布式的特点,可通过多台服务器组成ES集群,进一步对集群索引中的数据进行分片(shard),一个服务器中可以包括有多个shard,以便共同提高索引和搜索功能。
[0003]相关技术中,将大量数据写入ES采用批请求(Bulk Request)的方式,批量将数据提交给ES集群。当一批数据发送到ES的客户端节点(Client Node) 后,ES的客户端节点将对这一批数据按数据中的路由值(routing)进行分发。将要分发到不同分片上的数据分类,组装成一批BulkShardRequest请求,再分别发送给每个shard所在的数据节点(Data Node)。这一操作占用着一定的网络资源。在数据量大,资源限制严格的集群环境,对ES的写入可能出现对I/O的占用很高的情况,可能会导致I/O打满,甚至导致ES挂掉的情况。另外,发送 BulkShardRequest请求是异步的,但是BulkRequest请求需要等待全部 BulkShardRequest响应后,再返回客户端。而进行写入的索引中有的shard的请求会因为内存垃圾回收、故障、队列、锁等原因导致响应变慢,造成了所谓的长尾问题。
[0004]因此相关技术中亟需一种高效的基于指定路由的数据写入方法。

技术实现思路

[0005]鉴于上述状况,本专利技术的主要目的在于克服现有ES集群进行数据写入时,I/O占用高和存在长尾问题,提供一种基于指定路由的数据写入方法、装置、介质及电子设备。
[0006]一种基于指定路由的数据写入方法,包括:
[0007]接收数据写入请求,并获取所述数据写入请求中的写入数据;
[0008]从预存的路由值表中选择一路由值配置给所述写入数据,所述路由值表包括多个路由值;
[0009]根据配置的路由值在对应关系表中查询对应的分片编码,所述对应关系表包括各个所述路由值与各个分片编码之间的对应关系;
[0010]根据查询到的分片编码确定对应的分片,并将所述写入数据发送至所述对应的分片所在的节点以进行写入。
[0011]进一步的,上述数据写入方法,其中,所述接收数据写入请求的步骤之前还包括:
[0012]向ES集群发送包含至少一个索引别名的查询请求,以使所述ES集群基于所述查询请求查询所述索引别名下的所有分片,并返回各个所述分片的分配编码;
[0013]根据所述ES集群返回的各个所述分片的分片编码确定所述分片的数量;
[0014]按照从小到大的顺序依序遍历预设数值范围内的各个正整数的数值,并根据当前
遍历的所述数值和所述分片的数量进行分片编码计算,以得到所述数值对应的分片编码,并当计算得到的分片编码的数量等于所述分片的数量时停止分片编码计算;
[0015]将各个所述分片编码对应的数值作为所述路由值,并根据各个所述路由值建立所述路由值表;
[0016]根据所述路由值和所述分片编码之间的对应关系建立所述对应关系表。
[0017]进一步的,上述数据写入方法,其中,所述根据当前遍历的所述数值和所述分片的数量进行分片编码计算以得到所述数值对应的分片编码的步骤包括:
[0018]根据当前遍历的所述数值和所述分片的数量进行取模运算,以得到所述数值对应的分片编码。
[0019]进一步的,上述数据写入方法,其中,所述向ES集群发送包含至少一个索引别名的查询请求的步骤包括:
[0020]定时或基于消息监听机制向ES集群发送包含至少一个索引别名的查询请求。
[0021]进一步的,上述数据写入方法,其中,所述从预存的路由值表中选择一路由值配置给所述写入数据的步骤包括:
[0022]按照随机选取规则或循环依次选取规则从预存的路由值表中选择一路由值配置给所述写入数据。
[0023]进一步的,上述数据写入方法,其中,所述将所述写入数据发送至所述对应的分片所在的节点以进行写入的步骤之后还包括:
[0024]当所述写入数据在所述节点中写入失败时,将所述写入数据发送至其他的节点以进行写入。
[0025]本专利技术还公开了一种基于指定路由的数据写入装置,包括:
[0026]获取模块,用于接收数据写入请求,并获取所述数据写入请求中的写入数据;
[0027]配置模块,用于从预存的路由值表中选择一路由值配置给所述写入数据,所述路由值表包括多个路由值;
[0028]查询模块,用于根据配置的路由值在对应关系表中查询对应的分片编码,所述对应关系表包括各个所述路由值与各个分片编码之间的对应关系;
[0029]第一发送模块,用于根据查询到的分片编码确定对应的分片,并将所述写入数据发送至所述对应的分片所在的节点以进行写入。
[0030]进一步的,上述数据写入装置,还包括:
[0031]第二发送模块,用于向ES集群发送包含至少一个索引别名的查询请求,以使所述ES集群基于所述查询请求查询所述索引别名下的所有分片,并返回各个所述分片的分配编码;
[0032]确定模块,用于根据所述ES集群返回的各个所述分片的分片编码确定所述分片的数量;
[0033]计算模块,用于按照从小到大的顺序依序遍历预设数值范围内的各个正整数的数值,并根据当前遍历的所述数值和所述分片的数量进行分片编码计算,以得到所述数值对应的分片编码,并当计算得到的分片编码的数量等于所述分片的数量时停止分片编码计算;
[0034]路由表建立模块,用于将各个所述分片编码对应的数值作为所述路由值,并根据
各个所述路由值建立所述路由值表;
[0035]对应关系建立模块,用于根据所述路由值和所述分片编码之间的对应关系建立所述对应关系表。
[0036]本专利技术还公开了一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任意一项所述的方法。。
[0037]本专利技术还公开了一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现上述任意一项所述的方法。
[0038]本专利技术基于大数据量、多节点的ES集群的实时写入场景,针对集群I/O占用高、大集群批量写入存在长尾问题的情况,通过对每个写入ES的请求指定 routing值,并根据routing值与分片编码的关系,将每一个数据批量写入请求发送给routing值对应分片所在的ES节点。能够使每次ES数据写入操作不再有内部的数据分发,有效地降低集群I/O负载,提高了集群的稳定性。解决长尾问题,提高了ES数据的写入效率。
[0039]本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于指定路由的数据写入方法,其特征在于,包括:接收数据写入请求,并获取所述数据写入请求中的写入数据;从预存的路由值表中选择一路由值配置给所述写入数据,所述路由值表包括多个路由值;根据配置的路由值在对应关系表中查询对应的分片编码,所述对应关系表包括各个所述路由值与各个分片编码之间的对应关系;根据查询到的分片编码确定对应的分片,并将所述写入数据发送至所述对应的分片所在的节点以进行写入。2.根据权利要求1所述的数据写入方法,其特征在于,所述接收数据写入请求的步骤之前还包括:向ES集群发送包含至少一个索引别名的查询请求,以使所述ES集群基于所述查询请求查询所述索引别名下的所有分片,并返回各个所述分片的分配编码;根据所述ES集群返回的各个所述分片的分片编码确定所述分片的数量;按照从小到大的顺序依序遍历预设数值范围内的各个正整数的数值,并根据当前遍历的所述数值和所述分片的数量进行分片编码计算,以得到所述数值对应的分片编码,并当计算得到的分片编码的数量等于所述分片的数量时停止分片编码计算;将各个所述分片编码对应的数值作为所述路由值,并根据各个所述路由值建立所述路由值表;根据所述路由值和所述分片编码之间的对应关系建立所述对应关系表。3.根据权利要求2所述的数据写入方法,其特征在于,所述根据当前遍历的所述数值和所述分片的数量进行分片编码计算以得到所述数值对应的分片编码的步骤包括:根据当前遍历的所述数值和所述分片的数量进行取模运算,以得到所述数值对应的分片编码。4.根据权利要求2所述的数据写入方法,其特征在于,所述向ES集群发送包含至少一个索引别名的查询请求的步骤包括:定时或基于消息监听机制向ES集群发送包含至少一个索引别名的查询请求。5.根据权利要求1所述的数据写入方法,其特征在于,所述从预存的路由值表中选择一路由值配置给所述写入数据的步骤包括:按照随机选取规则或循环依次选取规则从预存的路由值表中选择一路由值配置给所述写入数据。6.根据权利...

【专利技术属性】
技术研发人员:滕大正范渊刘博
申请(专利权)人:杭州安恒信息技术股份有限公司
类型:发明
国别省市:

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

1