CN113553310A - 数据的采集方法及装置、存储介质、电子设备 - Google Patents
数据的采集方法及装置、存储介质、电子设备 Download PDFInfo
- Publication number
- CN113553310A CN113553310A CN202111106200.1A CN202111106200A CN113553310A CN 113553310 A CN113553310 A CN 113553310A CN 202111106200 A CN202111106200 A CN 202111106200A CN 113553310 A CN113553310 A CN 113553310A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- client
- incremental data
- incremental
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种数据的采集方法及装置、存储介质、电子设备,其中,该方法包括:监听客户端的日志文件产生的增量数据;采用汇聚节点sink将所述增量数据传输至订阅消息***;接收数据库的数据拉取请求,从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据,其中,所述数据拉取请求携带所述目标topic的标识字段。通过本发明,解决了相关技术中数据的采集率低的技术问题,同时降低了业务服务代码的冗余度。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种数据的采集方法及装置、存储介质、电子设备。
背景技术
相关技术中,目前市场数据采集方案中,常见的方式是在***代码中直接添加采集数据的逻辑代码,执行相关业务之后,继续执行采集数据的代码逻辑,将需要采集的数据保存到数据库中,根据目前有的数据采集方式,可以满足要求,能够帮助解决数据采集的问题,进而能解决现实的问题。
针对相关技术中的采集方案,存在以下问题:通过在业务代码中添加数据采集的代码方式,这样会导致对业务代码有代码入侵,采集的代码的逻辑出现问题,可能影响实际的业务操作,业务代码和采集数据的代码紧紧联系在一起,代码是高耦合,不利于业务扩展。不利于业务扩展等问题、不利于***功能做大做强等等。以上方案都是针对当前业务服务所做的一些处理,数据的采集依赖于当前服务。
针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。
发明内容
本发明实施例提供了一种数据的采集方法及装置、存储介质、电子设备。
根据本申请实施例的一个方面,提供了一种数据的采集方法,包括:监听客户端的日志文件产生的增量数据;采用汇聚节点sink将所述增量数据传输至订阅消息***;接收数据库的数据拉取请求,从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据,其中,所述数据拉取请求携带所述目标topic的标识字段。
进一步,监听客户端的日志文件产生的增量数据包括:监听所述客户端的请求任务或者定时任务的触发状态,其中,所述触发状态用于表征所述请求任务或者定时任务是否被触发,以及所述请求任务或者定时任务的调用进程;若监听到所述客户端的请求任务或者定时任务被目标业务服务调用,监听所述客户端的配置文件的读写状态;若所述配置文件将所述目标业务服务产生的用户行为日志数据写入到日志文件,监听所述日志文件的增量数据。
进一步,监听客户端的日志文件产生的增量数据包括:在第一监听周期监听第一客户端的java语言脚本在所述日志文件中写入的第一增量数据;以及在第一监听周期监听第二客户端的python语言脚本在所述日志文件中写入的第一增量数据,其中,所述增量数据包括:所述第一增量数据,所述第一增量数据;在所述日志文件的磁盘空间中查找与所述第一监听周期匹配的目标时域空间,并将所述第一增量数据和所述第一增量数据缓存至所述目标时域空间,其中,每个时域空间对应一个监听周期,所述磁盘空间包括多个按照时序排列的时域空间。
进一步,从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据包括:从所述订阅消息***中读取所述增量数据;根据对象标识object Id从所述增量数据中筛选符合预设条件的第一目标数据;从所述第一目标数据向所述数据库下发与目标topic匹配的第二目标数据。
进一步,根据对象标识object Id从所述增量数据中筛选符合预设条件的第一目标数据包括:对所述增量数据进行分段处理,其中,每个单位增量的分段数据包括:topic字段、object字段、消息字段、时间字段;针对每个分段数据,读取所述object字段的第一字段内容,判断所述第一字段内容是否为空字符;若所述第一字段内容为有效字符,保留对应的第一分段数据;若所述第一字段内容为空字符,删除对应的第二分段数据;读取所述时间字段中的时间戳,并按照所述时间戳对多个所述第一分段数据进行排序,组合得到所述第一目标数据。
进一步,采用汇聚节点sink将所述增量数据传输至订阅消息***包括:在数据采集请求的逻辑代码的方法脚本的切面类中埋点@Token注解,其中,所述@Token注解用于将所述客户端产生的增量数据保存至所述日志文件;向所述客户端发送所述数据采集请求,并采用汇聚节点sink将所述日志文件中的所述增量数据传输至订阅消息***。
进一步,在从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据之后,所述方法还包括:接收展示端的超文本传输协议请求,其中,所述超文本传输协议请求的通信套接字中携带显示参数和显示接口;在所述目标数据中查询与所述显示参数和显示接口匹配的展示数据,并将所述展示数据发送至所述展示端,以使所述展示数据呈现在所述展示端。
根据本申请实施例的另一个方面,还提供了一种数据的采集装置,包括:监听模块,用于监听客户端的日志文件产生的增量数据;传输模块,用于采用汇聚节点sink将所述增量数据传输至订阅消息***;下发模块,用于接收数据库的数据拉取请求,从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据,其中,所述数据拉取请求携带所述目标topic的标识字段。
进一步,所述监听模块包括:第一监听单元,用于监听所述客户端的请求任务或者定时任务的触发状态,其中,所述触发状态用于表征所述请求任务或者定时任务是否被触发,以及所述请求任务或者定时任务的调用进程;第二监听单元,用于若监听到所述客户端的请求任务或者定时任务被目标业务服务调用,监听所述客户端的配置文件的读写状态;第三监听单元,用于若所述配置文件将所述目标业务服务产生的用户行为日志数据写入到日志文件,监听所述日志文件的增量数据。
进一步,所述监听模块包括:第四监听单元,用于在第一监听周期监听第一客户端的java语言脚本在所述日志文件中写入的第一增量数据;以及在第一监听周期监听第二客户端的python语言脚本在所述日志文件中写入的第一增量数据,其中,所述增量数据包括:所述第一增量数据,所述第一增量数据;缓存单元,用于在所述日志文件的磁盘空间中查找与所述第一监听周期匹配的目标时域空间,并将所述第一增量数据和所述第一增量数据缓存至所述目标时域空间,其中,每个时域空间对应一个监听周期,所述磁盘空间包括多个按照时序排列的时域空间。
进一步,所述下发模块包括:读取单元,用于从所述订阅消息***中读取所述增量数据;筛选单元,用于根据对象标识object Id从所述增量数据中筛选符合预设条件的第一目标数据;下发单元,用于从所述第一目标数据向所述数据库下发与目标topic匹配的第二目标数据。
进一步,所述筛选单元包括:分段子单元,用于对所述增量数据进行分段处理,其中,每个单位增量的分段数据包括:topic字段、object字段、消息字段、时间字段;处理子单元,用于针对每个分段数据,读取所述object字段的第一字段内容,判断所述第一字段内容是否为空字符;若所述第一字段内容为有效字符,保留对应的第一分段数据;若所述第一字段内容为空字符,删除对应的第二分段数据;排序子单元,用于读取所述时间字段中的时间戳,并按照所述时间戳对多个所述第一分段数据进行排序,组合得到所述第一目标数据。
进一步,所述传输模块包括:埋点单元,用于在数据采集请求的逻辑代码的装置脚本的切面类中埋点@Token注解,其中,所述@Token注解用于将所述客户端产生的增量数据保存至所述日志文件;传输单元,用于向所述客户端发送所述数据采集请求,并采用汇聚节点sink将所述日志文件中的所述增量数据传输至订阅消息***。
进一步,所述装置还包括:接收模块,用于在所述下发模块从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据之后,接收展示端的超文本传输协议请求,其中,所述超文本传输协议请求的通信套接字中携带显示参数和显示接口;发送模块,用于在所述目标数据中查询与所述显示参数和显示接口匹配的展示数据,并将所述展示数据发送至所述展示端,以使所述展示数据呈现在所述展示端。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。
根据本申请实施例的另一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:存储器,用于存放计算机程序;处理器,用于通过运行存储器上所存放的程序来执行上述方法中的步骤。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法中的步骤。
通过本发明,监听客户端的日志文件产生的增量数据;采用汇聚节点sink将增量数据传输至订阅消息***;接收数据库的数据拉取请求,从订阅消息***向数据库下发与目标topic匹配的目标数据,数据拉取请求携带目标topic的标识字段,业务服务和数据采集服务独立开来,避免数据采集服务对业务服务的代码零入侵,实现了业务服务和数据采集服务的解耦,通过监听日志文件产生的增量数据,可以采集不同***的数据,即不同来源的数据都可以采集,通过目标topic传递数据,实现了数据在传输过程中的过滤和清洗,减少了无效数据,提高了数据的有效性,降低了数据总量,解决了相关技术中数据的采集率低的技术问题,同时降低了业务服务代码的冗余度。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种计算机的硬件结构框图;
图2是根据本发明实施例的一种数据的采集方法的流程图;
图3是本发明实施例的一个流程示意图;
图4是本发明实施例的网络整体架构拓扑图;
图5是根据本发明实施例的一种数据的采集装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
本申请实施例一所提供的方法实施例可以在服务器、计算机、工控机、或者类似的运算装置中执行。以运行在计算机上为例,图1是本发明实施例的一种计算机的硬件结构框图。如图1所示,计算机可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机的结构造成限定。例如,计算机还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种数据的采集方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种数据的采集方法,图2是根据本发明实施例的一种数据的采集方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,监听客户端的日志文件产生的增量数据;
本实施例的客户端是数据的采集对象,属于消费者客户端,增量数据是采集的原始数据。
步骤S204,采用汇聚节点sink将增量数据传输至订阅消息***;
可选的,订阅消息***可以是Kakfa中间件,是一种高吞吐量的分布式发布订阅消息***,可以处理消费者在网站中的所有动作流数据。
步骤S206,接收数据库的数据拉取请求,从订阅消息***向数据库下发与目标topic匹配的目标数据,其中,数据拉取请求携带目标topic的标识字段。
在本实施例中,目标topic的逻辑是:监听进程Flume通过指定的topic向订阅消息***kafka发送数据,数据采集服务通过指定的topic从kafka中获取该topic的数据,flume以什么topic向kafka中发送数据,数据采集服务就用什么topic从kafka中拉取数据,比如:Flume以名称为“test1”的topic向kafka发送数据,那么,数据采集服务必须也以“test1”为topic从kafka拉取数据,只有发送和拉取数据的topic一致,才可以获取到flume发送的数据,即双方约定topic的名称一致即可。
通过上述步骤,监听客户端的日志文件产生的增量数据;采用汇聚节点sink将增量数据传输至订阅消息***;接收数据库的数据拉取请求,从订阅消息***向数据库下发与目标topic匹配的目标数据,数据拉取请求携带目标topic的标识字段,业务服务和数据采集服务独立开来,避免数据采集服务对业务服务的代码零入侵,实现了业务服务和数据采集服务的解耦,通过监听日志文件产生的增量数据,可以采集不同***的数据,即不同来源的数据都可以采集,通过目标topic传递数据,实现了数据在传输过程中的过滤和清洗,减少了无效数据,提高了数据的有效性,降低了数据总量,解决了相关技术中数据的采集率低的技术问题,同时降低了业务服务代码的冗余度。
图3是本发明实施例的一个流程示意图,其中,Flume组件:用于监听指定文件的内容的变化,即增量数据,文件中添加了内容,flume将该内容发送kafka;Kakfa中间件:用于暂时存储flume发送的数据(起到保存数据的作用);数据采集服务:用于从kafka中拉取数据,并进行过滤后保存到数据库中。数据采集过程分为以下三个部分:
第一部分:产生数据。由客户端请求或者定时任务触发调用业务服务产生用户行为日志数据,通过项目的配置文件将日志写入到指定文件中;
第二部分:数据采集通道。监听日志文件,添加到日志文件的数据被flume监听,将监听采集的数据通过sink发送到kafka中;
第三部分:过滤、清洗并保存数据。数据采集服务通过订阅kafka的topic,定期从kafka获取flume发送的数据,并通过该服务进行过滤、清洗,最终保存数据到指定的数据库。
在本实施例的一个实施方式中,监听客户端的日志文件产生的增量数据包括:监听客户端的请求任务或者定时任务的触发状态,其中,触发状态用于表征请求任务或者定时任务是否被触发,以及请求任务或者定时任务的调用进程;若监听到客户端的请求任务或者定时任务被目标业务服务调用,监听客户端的配置文件的读写状态;若配置文件将目标业务服务产生的用户行为日志数据写入到日志文件,监听日志文件的增量数据。
可选的,该请求任务或者定时任务可以是请求端发送的,该请求端是增量数据的使用端。
在本实施例中,监听客户端的日志文件产生的增量数据包括:在第一监听周期监听第一客户端的java语言脚本在日志文件中写入的第一增量数据;以及在第一监听周期监听第二客户端的python语言脚本在日志文件中写入的第一增量数据,其中,增量数据包括:第一增量数据,第一增量数据;在日志文件的磁盘空间中查找与第一监听周期匹配的目标时域空间,并将第一增量数据和第一增量数据缓存至目标时域空间,其中,每个时域空间对应一个监听周期,磁盘空间包括多个按照时序排列的时域空间。
在本实施例的一个实例中,监听服务的组件是flume组件,flume是监听指定的文件的组件,只要指定的文件有写入数据,flume就可以获取到,flume在本实施例中用于监听日志文件,通过java语言、或者python语言对flume监听的文件进行写数据,都可以实现,flume不在乎是通过哪个语言写入数据到这个文件的,只在乎当前这个文件内容的变化,数据采集服务是通过从kafka中拉取指定的topic的数据的,并对拉取的数据进行过滤,最终保存到数据库的,而java、python都是可以从kafka中拉取数据进行过滤等操作处理的。所以本实施例可以实现跨脚本语言的效果,使用与各种类型的客户端的数据监听和采集。
在本实施例中,从订阅消息***向数据库下发与目标topic匹配的目标数据包括:
S11,从订阅消息***中读取增量数据;
S12,根据对象标识object Id从增量数据中筛选符合预设条件的第一目标数据;
在其中一个实施方式中,根据对象标识object Id从增量数据中筛选符合预设条件的第一目标数据包括:对增量数据进行分段处理,其中,每个单位增量的分段数据包括:topic字段、object字段、消息字段、时间字段;针对每个分段数据,读取object字段的第一字段内容,判断第一字段内容是否为空字符;若第一字段内容为有效字符,保留对应的第一分段数据;若第一字段内容为空字符,删除对应的第二分段数据;读取时间字段中的时间戳,并按照时间戳对多个第一分段数据进行排序,组合得到第一目标数据。
S13,从第一目标数据向数据库下发与目标topic匹配的第二目标数据。
在一个示例中,对原始的增量数据进行过滤、清洗的过程包括:
数据采集服务从kafka中消费获取采集的数据后,根据采集到的数据,数据采集服务中的根据采集的维度去筛选满足条件的数据,并将满足条件的数据保存到数据库,不满足条件的数据丢弃,这个过程称之为过滤、清洗。
比如:采集的数据如下:
{"topic":"topic1","objectId":"1","msg":"success","date":"2021-08-2112:23:34"}
{"topic":"topic1","objectId":"2","msg":"success","date":"2021-08-2112:23:34"}
{"topic":"topic1","objectId":","msg":"success","date":"2021-08-21 12:23:34"}
{"topic":"topic2","objectId":"","msg":"success","date":"2021-08-2112:23:34"}
{"topic":"topic2","objectId":"4","msg":"success","date":"2021-08-2112:23:34"}
{"topic":"topic2","objectId":"5","msg":"success","date":"2021-08-2112:23:34"}
若业务按topic分类,将objectId不是空的数据保存到数据库中,objectId为空的值则直接丢弃,则表A中保存的数据有:
{"topic":"topic1","objectId":"1","msg":"success","date":"2021-08-2112:23:34"}
{"topic":"topic1","objectId":"2","msg":"success","date":"2021-08-2112:23:34"}
表B中保存的数据有:
{"topic":"topic2","objectId":"4","msg":"success","date":"2021-08-2112:23:34"}
{"topic":"topic2","objectId":"5","msg":"success","date":"2021-08-2112:23:34"}
对应的伪代码如下:
If(!StringUtils.isEmpty(objectId)){
//objectId不为空,则保存到数据库
Mapper.insert(data);
}else{
//为空,则不保存,直接过
}。
可选的,采用汇聚节点sink将增量数据传输至订阅消息***包括:在数据采集请求的逻辑代码的方法脚本的切面类中埋点@Token注解,其中,@Token注解用于将客户端产生的增量数据保存至日志文件;向客户端发送数据采集请求,并采用汇聚节点sink将日志文件中的增量数据传输至订阅消息***。
在一个实施场景中,在从订阅消息***向数据库下发与目标topic匹配的目标数据之后,还包括:接收展示端的超文本传输协议请求,其中,超文本传输协议请求的通信套接字中携带显示参数和显示接口;在目标数据中查询与显示参数和显示接口匹配的展示数据,并将展示数据发送至展示端,以使展示数据呈现在展示端。
图4是本发明实施例的网络整体架构拓扑图,下面结合本实施例的一个实施方式对其进行解释和说明,流程包括:
1、客户端向云端的服务发起请求;
2、云服务中的业务服务接受到请求后,执行业务逻辑,同时,业务方法的接口方法在开发时定义好自定义的注解;
通过切面的方式,获取用于请求的信息,并将对应的参数数据保存到指定的文件中(保存到哪个文件是由项目的配置文件决定的),即通过切面的方式获取需要采集的数据,并将数据保存到文件中,如采集的文件:
{"topic":"topic1","objectId":"1","msg":"success","date":"2021-08-2112:23:34"}
{"topic":"topic1","objectId":"2","msg":"success","date":"2021-08-2112:23:34"}
{"topic":"topic1","objectId":","msg":"success","date":"2021-08-21 12:23:34"}
{"topic":"topic2","objectId":"","msg":"success","date":"2021-08-2112:23:34"}
{"topic":"topic2","objectId":"4","msg":"success","date":"2021-08-2112:23:34"}
{"topic":"topic2","objectId":"5","msg":"success","date":"2021-08-2112:23:34"}
这些数据都是通过切面中的逻辑将数据采集的数据保存到文件中;
通过在接口的方法中,添加自定义的@Token (这个@Token是上述采集数据的注解),通过在方法定义@Token注解,该方法的参数可以在切面中获取到,切面中采集数据保存到文件中,而该方法中继续执行当前的业务操作,切面中可以获取到该方法的参数,并将参数数据保存到文件中,checkToken方法继续执行自己的逻辑,通过在方法上添加注解埋点的方式,获取方法的参数,用于保存到文件;
3、业务服务执行业务逻辑,请求数据库获取数据,同时***会切入到注解的切面中,执行打印输出日志数据;-一种通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态添加功能的技术(如上述中不修改checkToken方法中的逻辑时,方法上添加了@Token注解,额外的增加了数据保存到文件的功能;
4、云服务读取配置文件,将打印输出日志数据输出到服务器下指定的文件中,此时,日志写入到了文件中了;
5、Flume组件监听该文件,每当该文件有数据写入时,flume的sink将数据推送到kafka中指定的topic中;
6、数据采集服务通过订阅kafka中的topic,定期的从kafka拉取该topic的数据,拉取到数据后,通过数据采集服务中的业务逻辑,对获取到的数据进行过滤、清洗、梳理;最终根据业务将过滤后的数据保存到TiDb数据库;
之后,大屏展示端通过http或https请求数据采集服务;8、数据采集服务根据请求的参数以及接口功能,从Tidb中查询数据并返回给大屏展示端进行展示。
采用本实施例的方案,业务服务和数据采集服务独立开来,对业务服务的代码零入侵,业务服务和数据采集服务是独立的***,服务部署互不影响,利于业务拆分,使用时,若没有数据采集的功能,可以独立部署业务服务;业务服务和数据采集服务是独立的***,数据采集服务是否采集成功并不影响业务功能正常执行,实现了真正的解耦,采用flume、kafka组件,可以采集不同***的数据,即不同来源的数据都可以采集,可以采集不同***的数据,与***的开发语言无关。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
在本实施例中还提供了一种数据的采集装置,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明实施例的一种数据的采集装置的结构框图,如图5所示,该装置包括:监听模块50,传输模块52,下发模块54,其中,
监听模块50,用于监听客户端的日志文件产生的增量数据;
传输模块52,用于采用汇聚节点sink将所述增量数据传输至订阅消息***;
下发模块54,用于接收数据库的数据拉取请求,从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据,其中,所述数据拉取请求携带所述目标topic的标识字段。
可选的,所述监听模块包括:第一监听单元,用于监听所述客户端的请求任务或者定时任务的触发状态,其中,所述触发状态用于表征所述请求任务或者定时任务是否被触发,以及所述请求任务或者定时任务的调用进程;第二监听单元,用于若监听到所述客户端的请求任务或者定时任务被目标业务服务调用,监听所述客户端的配置文件的读写状态;第三监听单元,用于若所述配置文件将所述目标业务服务产生的用户行为日志数据写入到日志文件,监听所述日志文件的增量数据。
可选的,所述监听模块包括:第四监听单元,用于在第一监听周期监听第一客户端的java语言脚本在所述日志文件中写入的第一增量数据;以及在第一监听周期监听第二客户端的python语言脚本在所述日志文件中写入的第一增量数据,其中,所述增量数据包括:所述第一增量数据,所述第一增量数据;缓存单元,用于在所述日志文件的磁盘空间中查找与所述第一监听周期匹配的目标时域空间,并将所述第一增量数据和所述第一增量数据缓存至所述目标时域空间,其中,每个时域空间对应一个监听周期,所述磁盘空间包括多个按照时序排列的时域空间。
可选的,所述下发模块包括:读取单元,用于从所述订阅消息***中读取所述增量数据;筛选单元,用于根据对象标识object Id从所述增量数据中筛选符合预设条件的第一目标数据;下发单元,用于从所述第一目标数据向所述数据库下发与目标topic匹配的第二目标数据。
可选的,所述筛选单元包括:分段子单元,用于对所述增量数据进行分段处理,其中,每个单位增量的分段数据包括:topic字段、object字段、消息字段、时间字段;处理子单元,用于针对每个分段数据,读取所述object字段的第一字段内容,判断所述第一字段内容是否为空字符;若所述第一字段内容为有效字符,保留对应的第一分段数据;若所述第一字段内容为空字符,删除对应的第二分段数据;排序子单元,用于读取所述时间字段中的时间戳,并按照所述时间戳对多个所述第一分段数据进行排序,组合得到所述第一目标数据。
可选的,所述传输模块包括:埋点单元,用于在数据采集请求的逻辑代码的装置脚本的切面类中埋点@Token注解,其中,所述@Token注解用于将所述客户端产生的增量数据保存至所述日志文件;传输单元,用于向所述客户端发送所述数据采集请求,并采用汇聚节点sink将所述日志文件中的所述增量数据传输至订阅消息***。
可选的,所述装置还包括:接收模块,用于在所述下发模块从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据之后,接收展示端的超文本传输协议请求,其中,所述超文本传输协议请求的通信套接字中携带显示参数和显示接口;发送模块,用于在所述目标数据中查询与所述显示参数和显示接口匹配的展示数据,并将所述展示数据发送至所述展示端,以使所述展示数据呈现在所述展示端。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例3
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,监听客户端的日志文件产生的增量数据;
S2,采用汇聚节点sink将所述增量数据传输至订阅消息***;
S3,接收数据库的数据拉取请求,从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据,其中,所述数据拉取请求携带所述目标topic的标识字段。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,监听客户端的日志文件产生的增量数据;
S2,采用汇聚节点sink将所述增量数据传输至订阅消息***;
S3,接收数据库的数据拉取请求,从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据,其中,所述数据拉取请求携带所述目标topic的标识字段。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据的采集方法,其特征在于,包括:
监听客户端的日志文件产生的增量数据;
采用汇聚节点sink将所述增量数据传输至订阅消息***;
接收数据库的数据拉取请求,从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据,其中,所述数据拉取请求携带所述目标topic的标识字段。
2.根据权利要求1所述的方法,其特征在于,监听客户端的日志文件产生的增量数据包括:
监听所述客户端的请求任务或者定时任务的触发状态,其中,所述触发状态用于表征所述请求任务或者定时任务是否被触发,以及所述请求任务或者定时任务的调用进程;
若监听到所述客户端的请求任务或者定时任务被目标业务服务调用,监听所述客户端的配置文件的读写状态;
若所述配置文件将所述目标业务服务产生的用户行为日志数据写入到日志文件,监听所述日志文件的增量数据。
3.根据权利要求1所述的方法,其特征在于,监听客户端的日志文件产生的增量数据包括:
在第一监听周期监听第一客户端的java语言脚本在所述日志文件中写入的第一增量数据;以及在第一监听周期监听第二客户端的python语言脚本在所述日志文件中写入的第一增量数据,其中,所述增量数据包括:所述第一增量数据,所述第一增量数据;
在所述日志文件的磁盘空间中查找与所述第一监听周期匹配的目标时域空间,并将所述第一增量数据和所述第一增量数据缓存至所述目标时域空间,其中,每个时域空间对应一个监听周期,所述磁盘空间包括多个按照时序排列的时域空间。
4.根据权利要求1所述的方法,其特征在于,从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据包括:
从所述订阅消息***中读取所述增量数据;
根据对象标识object Id从所述增量数据中筛选符合预设条件的第一目标数据;
从所述第一目标数据向所述数据库下发与目标topic匹配的第二目标数据。
5.根据权利要求4所述的方法,其特征在于,根据对象标识object Id从所述增量数据中筛选符合预设条件的第一目标数据包括:
对所述增量数据进行分段处理,其中,每个单位增量的分段数据包括:topic字段、object字段、消息字段、时间字段;
针对每个分段数据,读取所述object字段的第一字段内容,判断所述第一字段内容是否为空字符;若所述第一字段内容为有效字符,保留对应的第一分段数据;若所述第一字段内容为空字符,删除对应的第二分段数据;
读取所述时间字段中的时间戳,并按照所述时间戳对多个所述第一分段数据进行排序,组合得到所述第一目标数据。
6.根据权利要求1所述的方法,其特征在于,采用汇聚节点sink将所述增量数据传输至订阅消息***包括:
在数据采集请求的逻辑代码的方法脚本的切面类中埋点@Token注解,其中,所述@Token注解用于将所述客户端产生的增量数据保存至所述日志文件;
向所述客户端发送所述数据采集请求,并采用汇聚节点sink将所述日志文件中的所述增量数据传输至订阅消息***。
7.根据权利要求1所述的方法,其特征在于,在从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据之后,所述方法还包括:
接收展示端的超文本传输协议请求,其中,所述超文本传输协议请求的通信套接字中携带显示参数和显示接口;
在所述目标数据中查询与所述显示参数和显示接口匹配的展示数据,并将所述展示数据发送至所述展示端,以使所述展示数据呈现在所述展示端。
8.一种数据的采集装置,其特征在于,包括:
监听模块,用于监听客户端的日志文件产生的增量数据;
传输模块,用于采用汇聚节点sink将所述增量数据传输至订阅消息***;
下发模块,用于接收数据库的数据拉取请求,从所述订阅消息***向所述数据库下发与目标topic匹配的目标数据,其中,所述数据拉取请求携带所述目标topic的标识字段。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至7中任一项所述的方法步骤。
10.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:
存储器,用于存放计算机程序;
处理器,用于通过运行存储器上所存放的程序来执行权利要求1至7中任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111106200.1A CN113553310B (zh) | 2021-09-22 | 2021-09-22 | 数据的采集方法及装置、存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111106200.1A CN113553310B (zh) | 2021-09-22 | 2021-09-22 | 数据的采集方法及装置、存储介质、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113553310A true CN113553310A (zh) | 2021-10-26 |
CN113553310B CN113553310B (zh) | 2022-01-07 |
Family
ID=78106466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111106200.1A Active CN113553310B (zh) | 2021-09-22 | 2021-09-22 | 数据的采集方法及装置、存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113553310B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114338094A (zh) * | 2021-12-09 | 2022-04-12 | 北京五八信息技术有限公司 | 请求头信息的采集方法、装置、电子设备及可读介质 |
CN116032849A (zh) * | 2022-12-22 | 2023-04-28 | 中国电信股份有限公司 | 数据交换的方法、装置、***及电子设备 |
CN116432240A (zh) * | 2023-06-08 | 2023-07-14 | 长扬科技(北京)股份有限公司 | 内网终端敏感数据的检测方法、装置、服务器及*** |
CN116860898A (zh) * | 2023-09-05 | 2023-10-10 | 建信金融科技有限责任公司 | 一种数据处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107818120A (zh) * | 2016-09-14 | 2018-03-20 | 博雅网络游戏开发(深圳)有限公司 | 基于大数据的数据处理方法和装置 |
CN111708749A (zh) * | 2020-07-24 | 2020-09-25 | 深圳市富之富信息科技有限公司 | 操作日志记录方法、装置、计算机设备及存储介质 |
CN112052227A (zh) * | 2020-09-25 | 2020-12-08 | 郑州阿帕斯数云信息科技有限公司 | 数据变更日志的处理方法、装置和电子设备 |
CN113067853A (zh) * | 2021-03-12 | 2021-07-02 | 北京金山云网络技术有限公司 | 一种数据推送方法、装置、电子设备及存储介质 |
-
2021
- 2021-09-22 CN CN202111106200.1A patent/CN113553310B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107818120A (zh) * | 2016-09-14 | 2018-03-20 | 博雅网络游戏开发(深圳)有限公司 | 基于大数据的数据处理方法和装置 |
CN111708749A (zh) * | 2020-07-24 | 2020-09-25 | 深圳市富之富信息科技有限公司 | 操作日志记录方法、装置、计算机设备及存储介质 |
CN112052227A (zh) * | 2020-09-25 | 2020-12-08 | 郑州阿帕斯数云信息科技有限公司 | 数据变更日志的处理方法、装置和电子设备 |
CN113067853A (zh) * | 2021-03-12 | 2021-07-02 | 北京金山云网络技术有限公司 | 一种数据推送方法、装置、电子设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
PB09013037: "分布式消息发布订阅消息***Kafka", 《HTTPS://WWW.IT610.COM/ARTICLE/4443998.HTM》 * |
康康爹: "flum+kafka搭建示例 监控日志增量变化传输到kafka", 《HTTPS://BLOG.CSDN.NET/OMANGGUOBUDING1/ARTICLE/DETAILS/51190569》 * |
徐鲁辉主编: "《Hadoop大数据原理与应用实验教程》", 31 January 2020, 西安电子科技大学出版社 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114338094A (zh) * | 2021-12-09 | 2022-04-12 | 北京五八信息技术有限公司 | 请求头信息的采集方法、装置、电子设备及可读介质 |
CN114338094B (zh) * | 2021-12-09 | 2023-01-24 | 北京五八信息技术有限公司 | 请求头信息的采集方法、装置、电子设备及可读介质 |
CN116032849A (zh) * | 2022-12-22 | 2023-04-28 | 中国电信股份有限公司 | 数据交换的方法、装置、***及电子设备 |
CN116032849B (zh) * | 2022-12-22 | 2024-05-24 | 中国电信股份有限公司 | 数据交换的方法、装置、***及电子设备 |
CN116432240A (zh) * | 2023-06-08 | 2023-07-14 | 长扬科技(北京)股份有限公司 | 内网终端敏感数据的检测方法、装置、服务器及*** |
CN116432240B (zh) * | 2023-06-08 | 2023-08-22 | 长扬科技(北京)股份有限公司 | 内网终端敏感数据的检测方法、装置、服务器及*** |
CN116860898A (zh) * | 2023-09-05 | 2023-10-10 | 建信金融科技有限责任公司 | 一种数据处理方法和装置 |
CN116860898B (zh) * | 2023-09-05 | 2024-04-23 | 建信金融科技有限责任公司 | 一种数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113553310B (zh) | 2022-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113553310B (zh) | 数据的采集方法及装置、存储介质、电子设备 | |
CN111831548B (zh) | 一种依赖关系拓扑图的绘制方法和装置 | |
CN111400127B (zh) | 业务日志的监控方法及装置、存储介质、计算机设备 | |
CN110532493B (zh) | 数据的处理方法及装置、存储介质和电子装置 | |
CN111355802B (zh) | 信息推送方法和装置 | |
CN110928934A (zh) | 一种用于业务分析的数据处理方法和装置 | |
CN110928681A (zh) | 数据的处理方法和装置、存储介质及电子装置 | |
CN110858192A (zh) | 一种日志查询方法和***、日志排查***和查询终端 | |
CN112448969A (zh) | 链路追踪方法、装置、***、设备及可读存储介质 | |
CN111367873A (zh) | 日志数据的存储方法、装置、终端及计算机存储介质 | |
CN113268308A (zh) | 信息处理方法、装置以及存储介质 | |
CN113656194A (zh) | 对账结果数据的通知方法、装置、电子装置及存储介质 | |
CN112434243A (zh) | 一种同步数据的方法、装置和计算机可读存储介质 | |
CN114125015A (zh) | 一种数据采集方法及*** | |
CN110417892B (zh) | 基于报文解析的数据复制链路优化方法及装置 | |
CN112417050A (zh) | 数据同步方法和装置、***、存储介质及电子装置 | |
CN113743879A (zh) | 一种自动化规则处理方法、***以及相关设备 | |
CN112187509A (zh) | 多架构云平台执行日志管理方法、***、终端及存储介质 | |
CN111367686A (zh) | 业务接口的调用方法及装置、计算机设备、存储介质 | |
CN108282374B (zh) | 一种配置ncsi网卡的方法、***及可读存储介质 | |
CN112579406A (zh) | 一种日志调用链生成方法和装置 | |
CN115793559A (zh) | Plc采集点表的配置方法、装置、智能网关、设备及介质 | |
CN113360558B (zh) | 数据处理方法、数据处理装置、电子设备及存储介质 | |
CN113918436A (zh) | 日志处理方法及装置 | |
CN114201659A (zh) | 一种消息轨迹传输查询方法、装置及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |