System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种Kafka数据索引方法、装置及可读介质制造方法及图纸_技高网

一种Kafka数据索引方法、装置及可读介质制造方法及图纸

技术编号:41086818 阅读:2 留言:0更新日期:2024-04-25 13:48
本发明专利技术公开了一种Kafka数据索引方法、装置及可读介质,包括:获取消息生产者将发布的消息发送完成后返回的参数,生成字符串信息;构建索引文件,并将字符串信息存入索引文件,构建索引文件数据集,并在内存中创建多个第一数据结构;获取客户端发起的查询请求,根据查询请求中的索引字段在内存中的第一数据结构中查询是否存在对应所查询的发布的消息,若不存在,则将所查询的发布的消息返回给客户端;若存在,则根据查询请求中的订阅主题、索引字段、时间戳范围和节点hostName在索引文件数据集中确定对应的索引文件及字符串信息,根据字符串信息获取到所查询的发布的消息,并返回给客户端。解决持久化存储与磁盘中的数据面临无法进行数据回溯及排查的问题。

【技术实现步骤摘要】

本专利技术涉及kafka数据处理领域,具体涉及一种kafka数据索引方法、装置及可读介质。


技术介绍

1、随着信息技术的高速发展,企业面临的数据需求日益增加,kafka作为一种高吞吐量的分布式发布订阅消息系统被越来越多的作为系统之间数据处理的消息中间件。目前的企业中多个产品中系统都有各自的数据流及处理方式,系统之间的数据流之间传输有着巨大的需求。kafka以容错的持久化方式来存储数据流应用于安全、金融等对数据要求较高的企业之中。持久化存储与磁盘之中的数据面临着无法进行数据回溯、数据复盘及数据问题的排查,只能等下游消费者顺序消费后才能对数据进行查看,该方式无法对大量数据进行整体性回溯查询、且效率低。具体不足如下:

2、1)持久化存储与磁盘之中的数据面临着无法进行数据回溯。

3、2)无法数据复盘及数据问题的排查。

4、3)无法应对不同场景大量数据的需求。

5、4)无法对大量数据进行整体性回溯查询、且效率低。

6、因此建立一个kafka安全、高效、便捷持久化后数据索引及查询方式满足不同业务形态回溯数据、复盘数据、数据排查需求具有重要的意义。


技术实现思路

1、针对上述提到的技术问题。本申请的实施例的目的在于提出了一种kafka数据索引方法、装置及可读介质,来解决以上
技术介绍
部分提到的技术问题建立一个kafka安全、高效、便捷持久化后数据索引及查询方式,满足不同业务形态回溯数据、复盘数据、数据排查。

2、第一方面,本专利技术提供了一种kafka数据索引方法,包括以下步骤:

3、获取消息生产者将发布的消息发送完成后返回的发布的消息的偏移量、订阅主题、时间戳、分区信息、元数据存储log文件信息、数据存储节点信息、索引字段和节点hostname,根据发布的消息的偏移量、订阅主题、时间戳、分区信息、元数据存储log文件信息、数据存储节点信息、索引字段生成字符串信息;根据时间戳、订阅主题和节点hostname构建对应时间戳范围内的索引文件,并将字符串信息存入索引文件,所有发布的消息所对应的索引文件构成索引文件数据集;

4、在内存中创建多个双向哈希链表的第一数据结构,第一数据结构包含若干第一键值对,第一键值对中的键为索引字段,值为发布的消息;

5、获取客户端发起的查询请求,查询请求包括所查询的发布的消息所对应的订阅主题、时间戳范围、索引字段和节点hostname,根据查询请求中的索引字段在内存中的第一数据结构中查询是否存在对应所查询的发布的消息,响应于确定内存中的第一数据结构中存在所查询的发布的消息,则将所查询的发布的消息返回给客户端;响应于确定内存中的第一数据结构中不存在所查询的发布的消息,则根据查询请求中的订阅主题、索引字段、时间戳范围和节点hostname在索引文件数据集中确定对应的索引文件及字符串信息,根据字符串信息获取到所查询的发布的消息,并返回给客户端。

6、作为优选,索引文件的大小最大为100m,并且以发布的消息发送完成的时间戳所对应的小时数时间戳、订阅主题、节点hostname以及最新一条发布的消息发送完成的时间戳进行命名,索引文件的名称的格式为:发布的消息发送完成的时间戳所对应的小时数时间戳_节点hostname_订阅主题_最新一条发布的消息发送完成的时间戳,最新一条发布的消息发送完成的时间戳包括索引文件的大小达到100m时所对应的最新一条发布的消息发送完成的时间戳,并且每个索引文件对应创建一个双向哈希链表的第一数据结构。

7、作为优选,根据时间戳、订阅主题和节点hostname构建对应时间戳范围内的索引文件,并将字符串信息存入索引文件,具体包括:

8、根据发布的消息发送完成的时间戳、订阅主题和节点hostname生成名称字符串,名称字符串的格式为发布的消息发送完成的时间戳所对应的小时数时间戳_节点hostname_订阅主题;

9、在索引文件数据集中判断是否存在名称中包含名称字符串的索引文件,若存在,则将字符串信息写入索引文件中,若不存在,则生成名称包含名称字符串的索引文件;

10、将相同一个小时时间内发布的消息重复以上步骤,生成索引文件;

11、判断索引文件的大小是否达到100m,若是,则将索引文件切割生成名称为发布的消息发送完成的时间戳所对应的小时数时间戳_节点hostname_订阅主题_索引文件的大小达到100m时所对应的最新一条发布的消息发送完成的时间戳的索引文件。

12、作为优选,每个索引文件根据kafka配置文件kafka/config/server.properties中log.retention.hours的配置数据保留小时数,并删除过期索引文件。

13、作为优选,根据查询请求中的索引字段在内存中的第一数据结构中查询是否存在对应所查询的发布的消息,具体包括:

14、根据查询请求中的索引字段对第一数据结构中每个第一键值对的键进行匹配,得到第一匹配结果,根据第一匹配结果判断在内存中的第一数据结构中查询是否存在对应所查询的发布的消息;

15、其中,索引字段包括字符型索引字段和数值型索引字段,索引字段匹配包括对字符型索引字段进行字符串模糊过滤,对数值型索引字段进行数值范围扫描。

16、作为优选,根据查询请求中的订阅主题、索引字段、时间戳范围和节点hostname在索引文件数据集中确定对应的索引文件及字符串信息,根据字符串信息获取到所查询的发布的消息,具体包括:

17、获取索引文件数据集中的所有索引文件的名称,通过查询请求中的订阅主题和节点hostname对所有索引文件的名称进行字符串包含过滤,得到过滤后的索引文件;

18、获取过滤后的索引文件中的时间戳,根据过滤后的索引文件中的时间戳和查询请求中的时间戳范围确定查询请求的时间戳范围内对应的索引文件,并获取到查询请求的时间戳范围内对应的索引文件中存储的字符串信息,字符串信息为json格式,并包含发布的消息的偏移量、订阅主题、时间戳、分区信息、元数据存储log文件信息、数据存储节点信息、索引字段;

19、根据查询请求中的索引字段对查询请求的时间戳范围内对应的索引文件中存储的字符串信息中的索引字段进行匹配,若匹配成功,则返回查询请求的时间戳范围内对应的索引文件中存储的字符串信息中的偏移量;

20、响应于存在多个查询请求的时间戳范围内对应的索引文件中存储的字符串信息中的偏移量,则将多个查询请求的时间戳范围内对应的索引文件中存储的字符串信息中的偏移量从小到大进行排序,得到偏移量队列,将偏移量队列切分为多段,得到偏移量切分范围;

21、获取kafka中的不同机器节点下所有分区目录下的log文件的名称,log文件中存储若干个发布的消息,并且log文件的名称以其存储的发布的消息中所对应的最小偏移量进行命名,将偏移量切分范围对所有分区目录下的log文件的名称进行过滤,得到该偏移量切分范本文档来自技高网...

【技术保护点】

1.一种Kafka数据索引方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的Kafka数据索引方法,其特征在于,所述索引文件的大小最大为100M,并且以所述发布的消息发送完成的时间戳所对应的小时数时间戳、订阅主题、节点hostName以及最新一条发布的消息发送完成的时间戳进行命名,所述索引文件的名称的格式为:发布的消息发送完成的时间戳所对应的小时数时间戳_节点hostName_订阅主题_最新一条发布的消息发送完成的时间戳,所述最新一条发布的消息发送完成的时间戳包括所述索引文件的大小达到100M时所对应的最新一条发布的消息发送完成的时间戳,并且每个所述索引文件对应创建一个双向哈希链表的第一数据结构。

3.根据权利要求2所述的Kafka数据索引方法,其特征在于,所述根据所述时间戳、订阅主题和节点hostName构建对应时间戳范围内的索引文件,并将所述字符串信息存入所述索引文件,具体包括:

4.根据权利要求1所述的Kafka数据索引方法,其特征在于,每个所述索引文件根据kafka配置文件kafka/config/server.properties中log.retention.hours的配置数据保留小时数,并删除过期索引文件。

5.根据权利要求1所述的Kafka数据索引方法,其特征在于,所述根据所述查询请求中的索引字段在所述内存中的第一数据结构中查询是否存在对应所查询的发布的消息,具体包括:

6.根据权利要求1所述的Kafka数据索引方法,其特征在于,所述根据所述查询请求中的订阅主题、索引字段、时间戳范围和节点hostName在所述索引文件数据集中确定对应的索引文件及字符串信息,根据所述字符串信息获取到所查询的发布的消息,具体包括:

7.根据权利要求1所述的Kafka数据索引方法,其特征在于,还包括:

8.一种Kafka数据索引装置,其特征在于,包括:

9.一种电子设备,包括:

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。

...

【技术特征摘要】

1.一种kafka数据索引方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的kafka数据索引方法,其特征在于,所述索引文件的大小最大为100m,并且以所述发布的消息发送完成的时间戳所对应的小时数时间戳、订阅主题、节点hostname以及最新一条发布的消息发送完成的时间戳进行命名,所述索引文件的名称的格式为:发布的消息发送完成的时间戳所对应的小时数时间戳_节点hostname_订阅主题_最新一条发布的消息发送完成的时间戳,所述最新一条发布的消息发送完成的时间戳包括所述索引文件的大小达到100m时所对应的最新一条发布的消息发送完成的时间戳,并且每个所述索引文件对应创建一个双向哈希链表的第一数据结构。

3.根据权利要求2所述的kafka数据索引方法,其特征在于,所述根据所述时间戳、订阅主题和节点hostname构建对应时间戳范围内的索引文件,并将所述字符串信息存入所述索引文件,具体包括:

4.根据权利要求1所述的kafka数据索引方法,其特征在于,每个所述索引文件根据...

【专利技术属性】
技术研发人员:徐雄辉陈荣有陈奋李伟彬薛世平
申请(专利权)人:厦门服云信息科技有限公司
类型:发明
国别省市:

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

1