一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于TCPDUMP和分布式消息队列实现的数据热度采集方法和系统与流程

2023-08-25 12:08:24 来源:中国专利 TAG:

基于tcpdump和分布式消息队列实现的数据热度采集方法和系统
技术领域
1.本发明涉及数据库技术领域,具体涉及一种基于tcpdump和分布式消息队列实现的数据热度采集方法和系统。


背景技术:

2.随着企业的不断发展和壮大,企业内部的数据也在不断沉淀。管理和分析这些数据中的热点数据,是企业数据资产管理中的重要一环。目前市面上的数据库存储系统很多,每个企业从发展之初到现在都经历了不同的阶段,每个阶段可能采用的数据存储系统都不相同,而且有些企业中的应用众多,不同的应用也都往往采用不同的数据库存储系统,不同的数据库存储系统不能通用。


技术实现要素:

3.本发明的目的在于提供一种基于tcpdump和分布式消息队列实现的数据热度采集方法及系统
4.为解决上述技术问题,本发明提供一种基于tcpdump和分布式消息队列实现的数据热度采集方法,包括以下步骤:
5.创建数据源;
6.通过tcpdump组件截取发送至数据源的sql脚本并进行脚本组装,得到组装脚本;
7.将组装脚本发送到分布式消息队列;
8.根据分布式消息队列中的组装脚本,对数据源进行数据热度采集。
9.优选地,截取发送至数据源的sql脚本并进行脚本组装,得到组装脚本,具体包括以下步骤:
10.服务端向客户端发送热度采集开启指令;
11.客户端在接收到热度采集开启指令之后,截取服务端发送至数据源的sql脚本;
12.对截取的sql脚本进行脚本组装,得到组装脚本。
13.优选地,所述热度采集开启指令包括客户端id。
14.优选地,对截取的sql脚本进行脚本组装,得到组装脚本,具体包括以下步骤:
15.通过msgmanager组件对截取sql脚本和客户端id进行封装,作为组装脚本。
16.优选地,根据分布式消息队列中的组装脚本,对数据源进行数据热度采集,具体包括以下步骤:
17.通过正则验证器验证分布式消息队列中的组装脚本,得到验证后组装脚本;
18.根据验证后组装脚本对数据源进行数据热度采集。
19.优选地,还包括以下步骤:
20.在客户端在接收到热度采集开启指令时,向服务端发送心跳信息;
21.服务端根据心跳信息判断是否推送正常。
22.优选地,向服务端发送心跳信息,具体包括以下步骤:
23.每15s就会向服务端发送心跳信息。
24.优选地,服务端根据心跳信息判断是否推送正常,具体包括以下步骤:
25.服务端检测心跳信息判断是否心跳正常;
26.服务器在3次检测到心跳不正常时,判断为推送正常。
27.本发明还提供一种基于tcpdump和分布式消息队列实现的数据热度采集系统,包括:
28.数据源创建模块,用于创建数据源;
29.信息截取模块,用于通过tcpdump组件截取发送至数据源的sql脚本并进行脚本组装,得到组装脚本;
30.发送模块,用于将组装脚本发送到分布式消息队列;
31.采集模块,用于根据分布式消息队列中的组装脚本,对数据源进行数据热度采集。
32.与现有技术相比,本发明的有益效果为:
33.本发明通过tcpdump截获任何发送至服务器的sql脚本,从而无需考虑具体的rdbms实现。
34.本发明基于本地文件存储的异常恢复机制:当采集客户端和采集服务端之间出现异常情况无法正常数据传输情况下,采集客户端暂时将数据写入本地文件系统中,待异常恢复之后,将本地文件读出发送至采集客户端。
35.本发明保证了系统在大数据量的时候也能保持稳定运行,而且采集服务端以组的方式接入,在数据量大的情况也可以通过增加consumer的数量来提高数据处理能力,以保证热度数据的近实时展示。
36.本发明支持自定义正则过滤的数据采集配置:采集客户端对热度采集的数据源可以进行采集过滤,通过设置过滤正则表达式来设置不需要采集的sql。比如设置某个表的热度数据不需要进行采集等。
附图说明
37.下面结合附图对本发明的具体实施方式作进一步详细说明。
38.图1为本发明基于tcpdump和分布式消息队列实现的数据热度采集系统的整体架构图;
39.图2为本发明热度采集实现过程总体流程图;
40.图3为本发明热度采集客户端msgmanager数据推送的详细流程图。
41.图4为本发明一种基于tcpdump和分布式消息队列实现的数据热度采集方法的流程示意图。
具体实施方式
42.在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
43.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,
而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
44.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
45.下面结合附图对本发明做进一步的详细描述:
46.如图4所示,本发明提供一种基于tcpdump和分布式消息队列实现的数据热度采集方法,包括以下步骤:
47.创建数据源;
48.通过tcpdump组件截取发送至数据源的sql脚本并进行脚本组装,得到组装脚本;
49.将组装脚本发送到分布式消息队列;
50.根据分布式消息队列中的组装脚本,对数据源进行数据热度采集。
51.优选地,截取发送至数据源的sql脚本并进行脚本组装,得到组装脚本,具体包括以下步骤:
52.服务端向客户端发送热度采集开启指令;
53.客户端在接收到热度采集开启指令之后,截取服务端发送至数据源的sql脚本;
54.对截取的sql脚本进行脚本组装,得到组装脚本。
55.优选地,所述热度采集开启指令包括客户端id。
56.优选地,对截取的sql脚本进行脚本组装,得到组装脚本,具体包括以下步骤:
57.通过msgmanager组件对截取sql脚本和客户端id进行封装,作为组装脚本。
58.优选地,根据分布式消息队列中的组装脚本,对数据源进行数据热度采集,具体包括以下步骤:
59.通过正则验证器验证分布式消息队列中的组装脚本,得到验证后组装脚本;
60.根据验证后组装脚本对数据源进行数据热度采集。
61.优选地,还包括以下步骤:
62.在客户端在接收到热度采集开启指令时,向服务端发送心跳信息;
63.服务端根据心跳信息判断是否推送正常。
64.优选地,向服务端发送心跳信息,具体包括以下步骤:
65.每15s就会向服务端发送心跳信息。
66.优选地,服务端根据心跳信息判断是否推送正常,具体包括以下步骤:
67.服务端检测心跳信息判断是否心跳正常;
68.服务器在3次检测到心跳不正常时,判断为推送正常。
69.本发明还提供一种基于tcpdump和分布式消息队列实现的数据热度采集系统,包括:
70.数据源创建模块,用于创建数据源;
71.信息截取模块,用于通过tcpdump组件截取发送至数据源的sql脚本并进行脚本组装,得到组装脚本;
72.发送模块,用于将组装脚本发送到分布式消息队列;
73.采集模块,用于根据分布式消息队列中的组装脚本,对数据源进行数据热度采集。
74.本发明针对当前现状提出的一种基于tcpdump和分布式消息队列实现的数据热度采集系统和方法。该系统和方法适用通用的rdbms,分为采集客户端和采集服务端,服务端提供了基于webui的可视化用户界面。
75.为了更好的说明本发明的技术效果,本发明提供如下具体实施例说明上述技术流程:
76.实施例1、一种基于tcpdump和分布式消息队列实现的数据热度采集方法,包括以下步骤:
77.如图1所示,数据热度采集系统主要分为两部分:热度采集客户端和热度采集服务端。客户端和服务端都具备横向扩展的能力。
78.如图2所示,数据热度采集总体实现过程大致包括:服务端先向客户端发送热度采集开启指令,客户端接收到指令之后开始截取发送到关系数据库管理系统rdbms执行的sql脚本并且将脚本组装(具体组装过程在后续会有详细描述)发送到服务端,但是这里需要注意的是,实际上客户端并非将消息直接发送给服务端,而是发送到分布式消息队列的指定主题topic中,这么处理的目的是为了让系统拥有更大的数据吞吐量和具备更强的稳定性,当rdbms出现大量执行脚本的时候,客户端以及服务端都可以平稳应对。当客户端监听到对应的主题topic中存在数据时,首先将数据通过正则验证器验证脚本,验证通过之后就进行分析sql得出当前的操作类型以及涉及到的表或者字段。
79.热度采集客户端包含tcpdump和msgmanager两个组件:tcpdump组件负责截取发送至关系数据库管理系统rdbms的sql脚本;msgmanager组件负责将脚本进行“脚本组装”以及将消息发送至分布式消息队列。
80.脚本组装:由于每个新安装的客户端都是无状态的,这里就需要客户端程序的激活,当客户端向服务端发送热度采集开启指令时,会附带一个只属于当前客户端的一个id(见图1中的sql-executor向客户端发送的“伪sql”),当客户端接收到这个开启指令后会将这个id保存到文件中,并且在后续接收到tcpdump发送的脚本后将id和脚本封装成一个组装脚本mq至分布式消息队列kafka。
81.图3为msgmanager数据推送的详细流程图,该流程详细说明了数据推送过程中出现异常的处理方式。需要说明的是,在检查文件大小是否超过限制该步骤中,文件大小的限制是支持配置。
82.推送至分布式消息队列kafka,具体包括以下步骤:
83.根据心跳信息,判断是否推送正常;
84.若推送正常,则检查组装脚本的读取标识;根据读取标识,依次推送组装脚本中的所有sql脚本;
85.若推送异常,则获取组装脚本中的最后一个sql脚本并修改其读取标识。
86.热度采集服务端包含以下几个组件:
87.webui:可视化的ui界面,以供用户操作和展示热度分析图表;
88.restapi:统一处理用户的请求;
89.datasourcemanager:数据源处理器,负责处理数据源相关的请求;
90.sql-executor:sql执行器,内部维护了大量的rdbms脚本执行器,对外提供统一的调用接口,也是该组件统一向不同类型的客户端发送“伪sql”。例如:针对mysql,将会发送一条“select 1”的脚本,针对oracle将会发送一条“select 1from dual”的脚本;
91.msgmanager:客户端的消息处理管理器,负责监听分布式消息队列,内部维护了用户定义的数据过滤规则,将符合要求的脚本交由sql-analyzer组件处理;
92.sql-analyzer:脚本分析器,内部维护了不同rdbms类型的sql分析器,对外提供统一的sql分析接口;
93.heartbeatmanager:客户端心跳管理器,当开启一个数据热度采集时,该组件会将该客户端纳入管理范围内,并且向内置quartz注册属于该客户端的心跳检测任务,例如图1中展示的“heartbeatchecktask_a等”。
94.实例1:
95.1、用户在系统提供的webui界面中创建一个类型为“mysql”的数据源;
96.2、restapi接口接收到http请求后,调用数据源处理器datasourcemanager进行处理,数据源处理器datasourcemanager将用户数据存储至本系统所用关系数据库管理系统rdbms中;
97.3、用户开启该数据源的热度采集,restapi接口接收到请求后,数据源处理器datasourcemanager调用sql-executor向该mysql数据源发送一条携带该数据源id的sql脚本,并且向heartbeatmanager注册当前数据源的热度采集心跳,heartbeatmanager向quartz注册检查任务。此后该任务会被定时出发进行心跳检查;
98.4、客户端接收到该信息之后,将id存入文件进行存储;
99.5、客户端将截获到sql 该id封装为一个消息推送至分布式消息队列中;
100.6、服务端的msgmanager监听到消息后,取出消息,将消息通过过滤器后传递给sql-analyzer,sql-analyzer调用mysql-analyzer进行数据分析,并且将分析后的结果存储至本系统所用的关系数据库管理系统rdbms中;
101.7、此后一直重复5和6步骤,直到接收客户端接收到关闭指令。
102.在本发明中:
103.基于tcpdump的热度采集客户端,屏蔽不同rdbms的区别:tcpdump是一款网络数据采集工具,可以对网络上的数据包进行截获。采集客户端通过tcpdump截获任何发送至rdbms服务器的sql,从而无需考虑具体的rdbms实现。
104.基于本地文件存储的异常恢复机制:当采集客户端和采集服务端之间出现异常情况无法正常数据传输情况下,采集客户端暂时将数据写入本地文件系统中,待异常恢复之后,将本地文件读出发送至采集客户端。
105.基于分布式消息队列实现的通讯方式,提高数据高吞吐:采集客户端作为producer向分布式消息队列中推送消息,采集服务端以consumer组的方式监听对应的主题topic。保证了系统在大数据量的时候也能保持稳定运行,而且采集服务端以组的方式接入,在数据量大的情况也可以通过增加consumer的数量来提高数据处理能力,以保证热度数据的近实时展示。
106.多样的rdbms数据源配置管理和可控制的数据采集开关:采集客户端支持配置通用的rdbms数据源,包括:mysql、oracle、postgresql等。支持数据源的单节点模式和集群模式。用户可以根据实际情况进行数据热度的开启和关闭。
107.支持自定义正则过滤的数据采集配置:采集客户端对热度采集的数据源可以进行采集过滤,通过设置过滤正则表达式来设置不需要采集的sql。比如设置某个表的热度数据不需要进行采集等。
108.基于quartz的客户端心跳检测机制:quartz是一款支持分布式系统的任务触发器。客户端和服务端连接成功之后,客户端每15s就会向服务端发送心跳信息,服务端会向内置的quartz注册任务,一旦出现3次检测到心跳正常就会在web页面进行异常提醒。
109.采集服务端采用标准rdbms进行数据存储:采集服务端采用的是标准的rdbms进行数据存储,包括:数据源信息、过滤规则、热度分析数据等系统必要数据。
110.在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块、模组或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元、模组或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
111.所述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
112.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
113.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(cpu)执行时,执行本发明的方法中限定的上述功能。需要说明的是,本发明上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。
114.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
115.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何
在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表