一种基于kafka消息实现即时查询的系统及方法与流程

文档序号:29840761发布日期:2022-04-27 13:07阅读:284来源:国知局
一种基于kafka消息实现即时查询的系统及方法与流程

1.本发明涉及工业大数据领域,具体涉及一种基于kafka消息实现即时查询的系统及方法,用于在工况消息存储到kafka消息队列过程中,对数据实现前置规则校验、数据即时查询以及数据生产消费过程中实现监控和告警的系统。


背景技术:

2.工业大数据是基于各类分布式并发技术,对现代工业领域各流程数据进行传输、解析、存储、分析,利用生产数据加快生产效率的一种现代化技术。现有kafka消息队列,无法实现对写入数据的前置校验,写入的数据在实现消费展示前缺乏高效的查询手段,同时消费方式仅局限于依据偏移量,对生产消费过程中也没有很好的监控手段。
3.以kafka消息队列为例的消息缓存组件,虽然在解耦、高吞吐、事务性方面有比较好的保证,但是对于写入的消息没有任何格式或内容校验、写入消息无法实现即时查询、定位消息只能通过偏移量、消费积压无任何主动告警提示。
4.工业大数据领域工况实时数据必须暂存至消息队列,不应该只是局限于现有产品,传统消息队列以kafka为例,存入数据只是一个流程,写入的数据格式和内容都不做校验,数据无法有效查看,因此对一套基于kafka弊端进行改进,贴合工业大数据应用场景的系统,成为急切的需求。
5.经检索发现,公开号cn109977138a的中国专利于2019年7月5日公开了一种基于kafka和sql的数据查询方法,包括以下步骤:采用基于时间戳的定位方式对数据进行定位,分别对数据进行粗定位和细定位;采用非结构化数据协议,根据不同的数据协议分配不同的机构化构造器,通过构造器将数据扁平化,构建出表,增加内置的三个字段,结构化数据协议;以sql形式进行数据查询。采用该方法使得在kafka中查询某一条数据的时间由小时级优化至亚秒级甚至秒级。
6.但是,该发明没有对写入的数据进行校验,并不能对写入的数据进行格式过滤或字段过滤,由此可见,研究一种或带有前置校验功能的基于kafka消息实现即时查询的系统及方法,仍然是本领域技术人员亟待解决的。


技术实现要素:

7.为克服上述现有技术的不足,本发明提供一种基于kafka消息实现即时查询的系统及方法,实现了在数据写入前的前置过滤,在原有写入数据只保存一套偏移量信息的基础增加保存写入时间戳信息,实现了kafka消息队列数据即时查询的功能。
8.本发明一方面提供一种基于kafka消息实现即时查询的系统,管理单元、消息输入单元、前置过滤单元、记录单元和即时查询单元;管理单元,所述管理单元存储有消息输入规则、前置过滤规则、记录规则和即时查询规则,用于进行消息输入、前置过滤、记录和即时查询的管理;消息输入单元,用于根据管理单元存储的消息输入规则,接收数据,并将接收的数据分区写入至系统;前置过滤单元,用于根据管理单元存储的前置过滤规则,针对写入
的数据进行格式过滤或字段过滤;记录单元,用于根据管理单元存储的记录规则,在分区写入数据时,保存分区数据对应的偏移量信息,并记录分区数据对应的写入时间戳文件;即时查询单元,用于根据管理单元存储的即时查询规则,响应于查询指令,查询指定偏移量和时间戳对应的分区写入数据。
9.上述技术方案中,能针对性的改进kafka消息队列使用中的一些弊端,具备数据写入前的前置过滤功能,在过滤并提示相关写入异常的同时还不影响写入效率;在原有写入数据只保存一套偏移量信息的基础增加保存写入时间戳信息,写入数据保存一份时间戳对照文件,供偏移量之外的另一种查询比照方式;扩展数据消费或搜索时是参照表准的丰富性,能针对存入的海量数据实现即时查询功能。
10.进一步地,所述系统包括车载终端,所述车载终端产生工程机械车辆工况和轨迹数据,所述工程机械车辆工况和轨迹数据通过车载终端直连到iot物联网网关,所述网关对数据进行初步解析整合后转发至消息输入单元。
11.具体地,消息转发到kafka后,最终写到物理磁盘对应topic目录下形成一组文件,分别为实际消息文本文件+消息文本文件对应偏移量索引文件+消息文本文件对应时间戳索引文件。
12.进一步地,所述前置过滤规则提供多种过滤范式,包括针对json数据格式提供头尾

{}’符号快速校验方法以及json格式化后校验主要字段的方法;还包括针对文本格式提供消息长度比对工具以及基于字符串的关键子字符串校验的方法。
13.具体地,鉴于实际存储在kafka中消息的形式都是字符串对应的字节数组,任何外在的格式都不敏感,针对存储场景最常见的json和文本格式,本系统分别提供了不同的校验范式。
14.进一步地,所述前置过滤单元提供过滤校验机制,所述过滤校验机制选择全量校验或抽样校验对写入的数据进行校验。
15.具体地,校验机制中提供抽样校验机制或随机校验机制,随机校验机制可以提供规定时间范围内指定条数的随机校验;抽样机制更加灵活,可以是指定时间范围内的抽样、可以是指定符合某类规范数据的抽样例如包含某个关键字段信息的记录。抽样检查结果会在抽样周期结束后立即汇总返回,返回形式可以是短信或邮件,保证校验过程尽量不影响写入性能,实现最高效的校验及反馈。
16.具体地,过滤校验机制可以针对写入性能选择全量校验或抽样校验,避免出现只存不校验带来的弊端。
17.进一步地,所述即时查询单元提供基于内存的分布式文件缓存模块,所述分布式文件缓存模块按照查询规则提前缓存查询热点数据。
18.进一步地,所述查询规则为指定topic、指定分区和指定时间范围中的一种或多种;所述热点数据为经常查询的部分数据;所述命中率为从内存中直接获取数据结果的次数在总的查询次数中所占的比例。
19.具体地,查询规则可以是指定topic、可以是指定分区、指定时间范围,例如近两天。根据用户的查询习惯,将经常查询的部分数据作为热点数据,提前查询缓存在分布式内存中,用户查询时优先从分布式内存中查询,与内存交互的速度要远远高于与磁盘交互,查询规则尽量丰富和准确,使缓存的热点数据尽量多,提高命中率,加速查询结果反馈,其中,
命中率表示从内存中直接获取数据结果的次数/总的查询次数。
20.进一步地,所述系统包括监控告警单元,用于提供监控告警机制,对topic消息写入异常和消息消费积压问题进行实时监控和告警。
21.具体地,对指定topic的写入速度进行监控,对指定topic消费组对应的消费积压情况进行监控,并且具备邮件通知告警责任人的功能。每个需要监控的topic都需要设定一个最大/最小写速率,以自然天或自然小时为一个统计范围,数据批量写入时,会将实时保存每一批次数据最后一条次序,启动异步服务定时计算所有需监控topic单位时间内的写入数量/时间段,当所求值超过设定阈值时触发告警通知。
22.进一步地,所述监控告警单元应用于消息写入和消费过程中。
23.本发明另一方面提供一种基于kafka消息实现即时查询的方法,基于一种基于kafka消息实现即时查询的系统,包括:接收车载终端产生的数据,并将接收的数据写入至系统;根据多种所述过滤范式针对写入的数据进行格式过滤或字段过滤;在分区写入数据时,保存分区数据对应的偏移量信息以及记录分区数据对应的写入时间戳文件;响应于查询指令,利用常驻的spark rest服务查询指定偏移量和时间戳对应的分区写入数据。
24.进一步地,所述方法还包括对topic消息写入异常和消息消费积压问题进行实时监控和告警。
25.与现有技术相比,本发明的有益效果在于:
26.(1)本发明能针对性的改进kafka消息队列使用中的一些弊端,具备数据写入前的前置过滤功能,在过滤并提示相关写入异常的同时还不影响写入效率;在原有写入数据只保存一套偏移量信息的基础增加保存写入时间戳信息,写入数据保存一份时间戳对照文件,供偏移量之外的另一种查询比照方式;扩展数据消费或搜索时是参照表准的丰富性,能针对存入的海量数据实现即时查询功能;
27.(2)本发明的亮点在于赋予kafka消息队列数据即时查询的功能,同时能对数据的写入过程和消费情况进行实时的监控和预警。
附图说明
28.图1为根据本发明实施例的即时查询系统结构图;
29.图2为根据本发明实施例的即时查询流程图;
30.图3为根据本发明实施例的即时查询方法流程示意图。
具体实施方式
31.以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述发实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
32.如图1所示,本发明一方面提供一种基于kafka消息实现即时查询的系统,管理单元、消息输入单元、前置过滤单元、记录单元和即时查询单元;管理单元,所述管理单元存储有消息输入规则、前置过滤规则、记录规则和即时查询规则,用于进行消息输入、前置过滤、记录和即时查询的管理;消息输入单元,用于根据管理单元存储的消息输入规则,接收数
据,并将接收的数据分区写入至系统;前置过滤单元,用于根据管理单元存储的前置过滤规则,针对写入的数据进行格式过滤或字段过滤;记录单元,用于根据管理单元存储的记录规则,在分区写入数据时,保存分区数据对应的偏移量信息,并记录分区数据对应的写入时间戳文件;即时查询单元,用于根据管理单元存储的即时查询规则,响应于查询指令,查询指定偏移量和时间戳对应的分区写入数据。
33.针对工程机械工况数据写入场景,写入数据环节,此场景中的工况数据封装格式是标准json,校验规则选用两种,一是校验数据格式是否是标准json,二是抽取其中的关键字段判断是否符合逻辑,因数据量较大,写入速度较快,且对数据的实时性要求较高,因而选用的是抽样校验,根据数据写入速度可以选择每一千条抽样校验一次或者每十万条抽样校验一次。以每十万条抽检一条规则为例,从每天0点开始,指定topic记录一下每个分区的偏移量,当分区每写入十万条数据时,拉取第十万条记录的value(实际内容)进行规则校验,校验结果每日汇总。这种抽样频率完全不会影响数据写入的速度,同时还能大致掌握数据的规范情况,当写入数据异常较多时,可以令上游数据写入方进行调整改进数据内容规范性。
34.所述系统包括车载终端,所述车载终端产生工程机械车辆工况和轨迹数据,所述工程机械车辆工况和轨迹数据通过车载终端直连到iot物联网网关,所述网关对数据进行初步解析整合后转发至消息输入单元。
35.本发明提供了一种针对工程机械车辆工况和轨迹流式数据存储到kafka消息队列过程中的具备前置过滤、即时查询、基于时间戳定位以及全流程监控等功能的系统。消息来源具体为:工程机械车辆工况和轨迹数据通过车载终端直连到iot物联网网关,数据通过网关初步解析整合后转发到本系统。消息写出的过程为:消息转发到kafka后,最终写到物理磁盘对应topic目录下形成一组文件,分别为实际消息文本文件+消息文本文件对应偏移量索引文件+消息文本文件对应时间戳索引文件。
36.所述前置过滤规则提供多种过滤范式,包括针对json数据格式提供头尾

{}’符号快速校验方法以及json格式化后校验主要字段的方法;还包括针对文本格式提供消息长度比对工具以及基于字符串的关键子字符串校验的方法。
37.所述前置过滤规则提供多种校验机制,包含文件格式、消息长度、特定格式消息字段值校验机制等,鉴于实际存储在kafka中消息的形式都是字符串对应的字节数组,任何外在的格式都不敏感,针对存储场景最常见的json和文本格式。所述前置过滤规则提供多种过滤范式,针对json数据格式可以提供头尾

{}’符号快速校验方法以及json格式化后校验主要字段的方法;针对文本格式,提供消息长度比对工具以及基于字符串的关键子字符串校验方法。
38.所述前置过滤单元提供过滤校验机制,所述过滤校验机制选择全量校验或抽样校验对写入的数据进行校验。过滤校验机制可以针对写入性能选择全量校验或抽样校验,避免出现只存不校验带来的弊端。
39.校验机制中提供抽样校验机制或全量校验机制,全量校验机制可以提供规定时间范围内指定条数的随机校验;抽样机制更加灵活,可以是指定时间范围内的抽样、可以是指定符合某类规范数据的抽样例如包含某个关键字段信息的记录。抽样检查结果会在抽样周期结束后立即汇总返回,返回形式可以是短信或邮件,保证校验过程尽量不影响写入性能,
实现最高效的校验及反馈。
40.根据使用方对写入速度和写入数据量的要求,来灵活选择校验范式,针对对写入速度够快、数据写入延迟要低或者数据量很大的情况,推荐使用抽样校验;其他情况对写入速度要求不高,数据量不是特别大的情况,两种校验方式都可以选择,校验手段丰富,同时校验过程不影响写入性能。
41.所述记录单元在原有消息写入时只保存一份分区偏移量信息作为定位条件的基础上,额外保存一份记录对应的写入时间戳文件,使具备通过时间戳定位记录的功能。针对每个分区中保存消息文件对应一个偏移量文件的机制,额外添加生成记录对应的时间戳文件机制,原先的消费或查询机制只能根据偏移量来定位消息记录,增减时间戳文件后,可以根据指定时间或时间范围来定位记录。
42.所述即时查询单元提供基于内存的分布式文件缓存模块,所述分布式文件缓存模块按照查询规则提前缓存查询热点数据。
43.所述查询规则为指定topic、指定分区和指定时间范围中的一种或多种;所述热点数据为经常查询的部分数据;所述命中率为从内存中直接获取数据结果的次数在总的查询次数中所占的比例。
44.查询规则可以是指定topic、可以是指定分区、指定时间范围(如近两天),根据用户的查询习惯,将经常查询的部分数据(热点数据)提前查询缓存在分布式内存中,用户查询时优先从分布式内存中查询,与内存交互的速度要远远高于与磁盘交互,查询规则尽量丰富和准确,使缓存的热点数据尽量多,提高命中率(从内存中直接获取数据结果的次数/总的查询次数),加速查询结果反馈。
45.所述查询机制,后端实现机制是利用常驻的spark rest服务,对接实际后端spark集群的中间服务,简化与spark的交互过程,提交查询代码并返回结果集,查询指定范围内的数据,范围可以是偏移量或时间范围。
46.如图2所示,将指定偏移量范围或者指定时间戳范围的查询任务封装成spark逻辑代码提交spark rest服务执行并接受结果返回。
47.实时查询功能借助spark的rest服务,将指定偏移量范围或指定时间范围的查询任务封装成spark任务,提交至rest服务执行并获取返回结果。将查询任务封装成spark任务提交到rest执行的功能在本系统中。执行结果依然通过rest服务获取,返回结果需要使用方主动到rest服务获取。
48.所述系统包括监控告警单元,用于提供监控告警机制,对topic消息写入异常和消息消费积压问题进行实时监控和告警。
49.本系统提供分区内基于时间戳的存储和查询手段,不同于基于偏移量的传统查询手段,基于时间戳的交互方式相比较而言更加粗粒度,形式也更加灵活,时间戳形式可以截止到秒的10位时间戳,也可以是截止到毫秒的13位时间戳。查询形式可以是时间范围或指定某个时间点,针对时间范围查询可以对输入的常规时间作自动形式转换,匹配存储中的粗细粒度,返回对应时间范围内对应分区上的数据记录;对于指定时间点查询,考虑到在时间粒度比较粗或者写入数据量不大的情形下,可以自动模糊匹配,选择离指定时间戳最近的一条或两条记录返回。
50.对指定topic的写入速度进行监控,对指定topic消费组对应的消费积压情况进行
监控,并且具备邮件通知告警责任人的功能。每个需要监控的topic都需要设定一个最大/最小写速率,以自然天或自然小时为一个统计范围,数据批量写入时,会将实时保存每一批次数据最后一条次序,启动异步服务定时计算所有需监控topic单位时间内的写入数量/时间段,当所求值超过设定阈值时触发告警通知。对指定topic-消费组的消费情况进行实时监控并在触发门限时进行邮件通知的能力。
51.本发明设计的这套系统,本发明设计的这套系统,能很好的解决kafka消息队列在工况信息存储场景的一系列应用痛点,在消息写入时能有一套自定义的校验机制(如要实现写入性能最大化可以实行抽样校验);可以针对存入的海量消息提供一套即时查询机制,查询条件可以是消息中的关键信息、偏移量、时间戳等,实现消费前有效掌控数据;消息存入系统时不只是标记分区偏移量,额外标记存入时间戳,供查询或定位选用;提供一套告警机制,能在消费积压或者topic写入异常时进行自定义化的告警提示。
52.自定义校验机制的规则包括,如校验消息长度、校验消息是否能使用json格式化、校验消息中某字段数据类型等规则。
53.相比于传统的格式校验,本发明中的校验方式更加灵活多样,可以针对数据长度进行范围校验也可以针对其中的字段值进行校验。针对kafka消息对列的传统监控手段主要是针对消费积压情况,本发明中也具备针对消费积压的监控及告警通知功能,同时还具备对topic写入数据速度的监控,针对一些持续性规律写入的topic,可以提供不同粒度(如小时、天、周、月等)的回溯比对,如本周期写入数据速度明显少于上个周期(少于前一次数据的20%),即会触发告警通知。
54.由于消息校验内容或格式,需要消耗一定的时间,理论上会一定程度影响数据的写入速度。当某topic中写入数据量很大时,为了不影响写入速度,追求数据校验和写入速度之间的平衡,可以采用抽样校验,只校验部分数据,通过部分数据的规范性来掌握总体数据情况。
55.本方案额外提供了接口写入和微服务的方式,并对写入过程提供了校验功能,提供接口服务或者分布式微服务,供外部远程调用,区别于传统的仅接受api调用,丰富了对外功能服务的形式,增强了易用性。
56.本发明另一方面提供一种基于kafka消息实现即时查询的方法,基于一种基于kafka消息实现即时查询的系统,包括:接收车载终端产生的数据,并将接收的数据写入至系统;根据多种所述过滤范式针对写入的数据进行格式过滤或字段过滤;在分区写入数据时,保存分区数据对应的偏移量信息以及记录分区数据对应的写入时间戳文件;响应于查询指令,利用常驻的spark rest服务查询指定偏移量和时间戳对应的分区写入数据。
57.所述方法还包括对topic消息写入异常和消息消费积压问题进行实时监控和告警。
58.如图3所示,为查询方法全流程的实现,数据写入过程中实际落盘前接受内置规则校验,剔除不符合规则数据。数据落盘机制方面,额外保存一份消息记录对应的时间戳文件,供消费或查询时使用,数据存入或消费过程接受实时监控。
59.所述方法步骤具体包括:
60.s1.接收车载终端产生的数据,并将接收的数据写入至系统;
61.s2.根据多种所述过滤范式针对写入的数据进行格式过滤或字段过滤,根据过滤
的结果判断是否校验成功;
62.s3.若校验成功,则在分区写入数据时,保存分区数据对应的偏移量信息以及记录分区数据对应的写入时间戳文件;
63.s4.在消费过程中,对消息消费积压问题进行实时监控,若判断告警,则触发实时告警,通过邮件等形式通知告警责任人;若判断无告警,则结束;
64.s5.若校验不成功,对topic消息写入异常进行实时监控,若告警则触发实时告警,通过邮件等形式通知告警责任人;若判断无告警,则结束。
65.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1