CN108399186A - 一种数据采集方法及装置 - Google Patents
一种数据采集方法及装置 Download PDFInfo
- Publication number
- CN108399186A CN108399186A CN201810030892.8A CN201810030892A CN108399186A CN 108399186 A CN108399186 A CN 108399186A CN 201810030892 A CN201810030892 A CN 201810030892A CN 108399186 A CN108399186 A CN 108399186A
- Authority
- CN
- China
- Prior art keywords
- data
- journal file
- daily record
- record data
- reading
- 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.)
- Pending
Links
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据采集方法及装置,包括:监听业务系统中日志文件的变更消息;判断数据队列中的日志数据量是否大于预设阈值;若否,则根据日志文件清单中日志文件的读取下标从日志文件中读取设定数量的日志数据,将读取的日志数据发送至数据队列并更新日志文件清单中日志文件的读取下标;在确定读取的日志数据不包括结尾标识时,返回判断数据队列中的日志数据量是否大于预设阈值的步骤,直至读取的日志数据中包括结尾标识。由于在数据队列内存没有到达上限时才从日志文件中采集数据并将采集的数据放入数据队列,且每次只采集预设数据的日志数据,从而避免了往满载数据队列中插入采集的数据而导致数据丢失问题,优化了数据采集过程。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种数据采集方法及装置。
背景技术
大数据时代,我们除了要从关系型数据库中实时同步各种结构化数据,还需要从业务系统中采集应用日志、系统日志进行分析处理,这部分数据不但结构复杂并且数量巨大。现有技术中只是定期把数据备份到网络附属存储(Network Attached Storage,简称NAS)等存储设备上,只有当系统出现故障时才翻出数据排查问题。现在我们将日志数据进行清洗后也纳入模型进行分析计算,并将结果纳入主营业务进行评估预测,这让我们对数据的时效性和完整性有了更高的要求,需要实时获取,并且不能缺失。
为了实时采集数据,现有技术中通过从本地日志读取数据,再发往数据总线进行数据的写入,在发送的过程中通常会增加一条发送队列,缓存待发送数据,以异步的方式将采集和发送的步骤分离,缓冲峰值压力的影响,提高系统的稳定性和效率。但是发送队列内存到达上限,采集器无法进行数据插入时,就会造成数据丢失。另外发送队列是从采集进程内部申请内存创建的,如果进程意外终止,内存中的待发送数据将会丢失。
发明内容
本发明实施例提供一种数据采集方法及装置,用于解决现有技术中发送队列中的数据在队列内存达到上限以及进程异常终止时容易丢失的问题。
本发明实施例提供了一种数据采集方法,包括:
监听业务系统中日志文件的变更消息;
判断数据队列中的日志数据量是否大于预设阈值;
若否,则根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列并更新所述日志文件清单中所述日志文件的读取下标,所述读取下标用于标识所述日志文件在前一次读取中的最后读取位置;
在确定读取的日志数据不包括结尾标识时,返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤,直至读取的日志数据中包括结尾标识。
可选地,所述根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列之后,还包括:
将所述数据队列中的日志数据发送至数据存储系统;
在接收到所述数据存储系统反馈的接收成功消息时,将所述日志文件清单同步至非易失性存储设备。
可选地,还包括:
监控任务处理时长,所述任务处理时长为从所述日志文件中读取设定数量的日志数据至将读取的日志数据发送至所述数据队列所用的时长;
在确定所述任务处理时长大于第一阈值时,将从所述日志文件中读取日志数据的速度降低至第一预设值;在确定所述任务处理时长小于第二阈值时,将从所述日志文件中读取日志数据的速度提升至第二预设值。
可选地,所述监听业务系统中日志文件的变更消息之后,判断数据队列中的日志数据量是否大于预设阈值之前,还包括:
将所述变更消息存储至通知队列;
从所述通知队列获取所述变更消息;
确定所述变更消息的变更类型为修改。
所述返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤之前,还包括:
在确定读取的日志数据不包括结尾标识时,将所述变更消息重新存储至所述通知队列。
可选地,还包括:
在确定所述变更类型为新建时,在所述日志文件清单中添加所述日志文件的记录,所述记录包括文件名、读取下标;
在确定所述变更类型为重命名时,更新所述日志文件清单所述日志文件的文件名;
在确定所述变更类型为删除时,删除所述日志文件清单所述日志文件的记录。
本发明实施例提供了一种数据采集装置,包括:
监听模块,用于监听业务系统中日志文件的变更消息;
处理模块,用于判断数据队列中的日志数据量是否大于预设阈值;若否,则根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列并更新所述日志文件清单中所述日志文件的读取下标,所述读取下标用于标识所述日志文件在前一次读取中的最后读取位置;在确定读取的日志数据不包括结尾标识时,返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤,直至读取的日志数据中包括结尾标识。
可选地,所述处理模块还用于:
根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列之后,将所述数据队列中的日志数据发送至数据存储系统;
在接收到所述数据存储系统反馈的接收成功消息时,将所述日志文件清单同步至非易失性存储设备。
可选地,所述处理模块还用于:
监控任务处理时长,所述任务处理时长为从所述日志文件中读取设定数量的日志数据至将读取的日志数据发送至所述数据队列所用的时长;
在确定所述任务处理时长大于第一阈值时,将从所述日志文件中读取日志数据的速度降低至第一预设值;在确定所述任务处理时长小于第二阈值时,将从所述日志文件中读取日志数据的速度提升至第二预设值。
可选地,所述处理模块还用于:
监听业务系统中日志文件的变更消息之后,判断数据队列中的日志数据量是否大于预设阈值之前,将所述变更消息存储至通知队列;
从所述通知队列获取所述变更消息;
确定所述变更消息的变更类型为修改。
所述返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤之前,还包括:
在确定读取的日志数据不包括结尾标识时,将所述变更消息重新存储至所述通知队列。
可选地,所述处理模块还用于:
在确定所述变更类型为新建时,在所述日志文件清单中添加所述日志文件的记录,所述记录包括文件名、读取下标;
在确定所述变更类型为重命名时,更新所述日志文件清单所述日志文件的文件名;
在确定所述变更类型为删除时,删除所述日志文件清单所述日志文件的记录。
本发明实施例提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述任一项所述的方法。
本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述任一项所述的方法。
综上,本发明实施例提供了一种数据采集方法及装置,包括:监听业务系统中日志文件的变更消息;判断数据队列中的日志数据量是否大于预设阈值;若否,则根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列并更新所述日志文件清单中所述日志文件的读取下标,所述读取下标用于标识所述日志文件在前一次读取中的最后读取位置;在确定读取的日志数据不包括结尾标识时,返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤,直至读取的日志数据中包括结尾标识。由于在监听到业务系统中日志文件的变更消息之后,在从日志文件中读取日志数据之前,判断数据队列的内存占用情况。当数据队列内存没有到达上限时才从日志文件中采集数据并将采集的数据放入数据队列,当数据队里中内存达到上限时,停止从日志文件中采集数据,从而避免了往满载数据队列中插入采集的数据而导致数据丢失问题。由于从日志文件中采集日志数据时,每次只采集预设数据的日志数据,并且每次采集之前均会判断数据队列内存占用情况,而不是将日志文件中修改的日志数据全部读取后发送至数据队列,从而进一步优化了数据采集过程,避免了采集的数据丢失。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例适用的一种系统架构示意图;
图2为本发明实施例提供的一种数据采集方法的流程示意图;
图3为本发明实施例提供的一种数据采集装置的结构示意图;
图4为本发明实施例提供的另一种数据采集装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1示例性示出了本发明实施例适用的一种系统架构示意图,如图1所示,本发明实施例适用的系统架构包括业务系统101、数据采集装置102、配置管理中心103、数据清洗设备104、数据总线105以及数据消费设备106。其中数据采集装置102可以位于业务系统101中,也可以独立于业务系统101。数据采集装置102实时监听业务系统101中一个或多个路径下符合预设前缀、预设后缀、模糊匹配规则的多个文件。当文件发生变更时读取文件。配置管理中心103与数据采集装置102连接,用于保存数据采集装置102的配置文件以及数据采集装置102采集数据的状态信息。配置管理中心103采用非易失性内存保存数据,故当数据采集进程意外终止时,配置管理中心103保存的数据不会丢失。数据采集装置102从业务系统101中采集数据后,将数据发送至数据总线105。数据总线105作为业务系统101的总接入,不单会接收数据采集装置102采集的数据,还会接收其他形式的数据,比如从关系型数据库同步的数据,或者从第三方获取的数据。具体实施中,数据总线105采用Kafka(Kafka是高吞吐量的分布式发布订阅消息系统)消息队列构建。数据总线105支持多种不同数据接入的生产者,还支持实时、离线等多种消费者。数据清洗设备104与数据总线105连接,用于将数据总线105中的数据取出进行分拣、清洗、结构化转换和异构数据融合,然后再将数据放入数据总线105的不同主题中,以供实时、离线系统订阅使用。具体地,数据清洗设备104是一个应用集群,能够并行处理近源数据。数据总线105与数据消费设备106连接,数据消费设备106从数据总线105中获取清洗后的数据,根据具体的应用场景处理获取的数据,比如数据消费设备106可以为数据存储系统,从总线中获取清洗后的数据后进行备份保存。数据消费设备106也可以为监控设备,实时从总线105中获取数据,然后根据获取的数据监控业务系统101的工作状态等。总线105实时记录数据消费设备106读取数据的位置,比如当数据消费设备106从数据总线105中读取数据并完成消费后,发送反馈消息至数据总线104,数据总线104根据反馈消息更新数据消费设备106读取数据的位置。当数据消费设备106从数据总线105中读取数据但是未完成消费时异常终止,数据总线104将不会更新数据消费设备106读取数据的位置,异常结束后,数据消费设备106根据上次读取数据的位置从数据总线105中读取数据。
基于图1所示的系统架构,如图2所示,本发明实施例提供了一种数据采集方法,该流程可以由数据采集装置执行,包括以下步骤:
步骤S201,监听业务系统中日志文件的变更消息。
步骤S202,判断数据队列中的日志数据量是否大于预设阈值。
步骤S203,若否,则根据日志文件清单中日志文件的读取下标从日志文件中读取设定数量的日志数据。
步骤S204,将读取的日志数据发送至数据队列并更新日志文件清单中日志文件的读取下标。
步骤S205,在确定读取的日志数据不包括结尾标识时,返回判断数据队列中的日志数据量是否大于预设阈值的步骤,直至读取的日志数据中包括结尾标识。
具体地,在步骤S201和步骤S202中,在监听业务系统中日志文件的变更消息之后,可直接判断数据队列中的日志数据量是否大于预设阈值。也可以将变更消息存储至通知队列,然后从通知队列获取变更消息,再判断数据队列中的日志数据量是否大于预设阈值。具体地,预设阈值可根据具体情况,判断数据队列的内存占用情况时,也不仅限于判断数据队列中的日志数据量是否大于预设阈值,还可以判断数据队列中内存占比是否大于预设阈值等。具体实施中,当使用通知队列缓存变更消息时,在监听到业务系统中日志文件的变更消息后,可以将变更消息以文件名+变更类型放入通知队列中,比如监听到变更消息1为新建日志文件A后,将变更消息1以日志文件A+新建的形式放入通知队列;又比如监听到变更消息2为修改日志文件B后,将变更消息2以日志文件B+修改的形式放入通知队列。变更消息的变更类型至少包括新建、修改、重命名和删除。需要说明的是并不是针对所有的变更类型,都会判断数据队列中的日志数据量是否大于预设阈值,只有确定所述变更消息的变更类型为修改时,才会判断数据队列中的日志数据量是否大于预设阈值。进一步地,本发明实施例中业务系统并不仅仅只包括日志文件,当需要采集其它文件中的数据时,本发明实施的技术方案同样适用。
在步骤S203中,日志文件清单中包括需要采集的日志文件的记录,比如日志文件的文件名、读取下标、时间戳等,其中读取下标用于标识日志文件在前一次读取中的最后读取位置。比如前一次读取日志文件A时最后读取位置为第21行,则日志文件A的读取下标为第21行。当确定数据队列中的日志数据量不大于预设阈值时,根据日志文件清单中日志文件的读取下标读取设定数据的日志数据。当确定数据队列中的日志数据量大于预设阈值时,将变更消息重新存储至通知队列。设定数量根据具体情况确定,可以固定的行数,比如固定每次读取50行;也可以是周期变化的行数,比如第一次读取50行、第二次读取30行等。另外,当变更类型为新建、重命名和删除时,需要更新日志文件清单。当变更类型为新建时,在日志文件清单中添加日志文件的记录,记录包括文件名、读取下标等。比如通知队列中变更消息为日志文件A+新建时,在日志文件清单中添加记录:日志文件A——读取下标为1。在确定变更类型为重命名时,更新日志文件清单日志文件的文件名。比如通知队列中变更消息为日志文件B+重命名为日志文件C时,在日志文件清单中查找到日志文件B的记录为:日志文件B——读取下标为21行,将日志文件B的记录修改为:日志文件C——读取下标为21。在确定变更类型为删除时,删除日志文件清单日志文件的记录。比如通知队列中变更消息为日志文件D+删除时,在日志文件清单中查找到日志文件D的记录为:日志文件D——读取下标为51行,然后删除日志文件清单中日志文件D的这条记录。
由于实时监听业务系统中日志文件的变更消息,然后根据变更消息更新日志文件清单,故日志在每天零点切换时,能实时监听到日志文件的切换过程并根据切换的情况调整日志数据的读取,防止在日志切换过程中产生的数据丢失。下面以具体的例子进行说明,比如设定2018年1月4日的日志文件为日志文件M,2018年1月5日零点时,日志文件M切换成日志文件N,然后新建了2018年1月5日的日志文件M,并在日志文件M中放入2018年1月5日产生的日志数据。在日志切换过程中,监听到的变更消息为日志文件M——重命名为日志文件N、日志文件M——新建、日志文件M——修改,然后根据监听到的变更消息修改日志文件清单,若日志文件N的日志数据在零点切换时没有读取完毕,仍能根据日志文件清单中日志文件N的读取下标继续读取日志数据,直至读取的日志数据中包含结尾标识,从而防止了在零点日志切换时日志数据未读取完造成的数据丢失。
在步骤S204和步骤S205中,结尾标识用于标识日志文件中的日志数据的末尾。在确定读取的日志数据不包括结尾标识时,说明日志文件中的日志数据还没有读取完,则将变更消息重新存储至通知队列。然后根据通知队列中的变更消息,再次判断数据队列中的日志数据量是否大于预设阈值,若否,则根据日志文件清单中日志文件的读取下标从日志文件中读取设定数量的日志数据,将读取的日志数据发送至数据队列并更新日志文件清单中日志文件的读取下标,依次循环,直到读取的日志数据中包括结尾标识。
由于在监听到业务系统中日志文件的变更消息之后,在从日志文件中读取日志数据之前,判断数据队列的内存占用情况。当数据队列内存没有到达上限时才从日志文件中采集数据并将采集的数据放入数据队列,当数据队里中内存达到上限时,停止从日志文件中采集数据,从而避免了往满载数据队列中插入采集的数据而导致数据丢失问题。由于从日志文件中采集日志数据时,每次只采集预设数据的日志数据,并且每次采集之前均会判断数据队列内存占用情况,而不是将日志文件中修改的日志数据全部读取后发送至数据队列,从而进一步优化了数据采集过程,避免了采集的数据丢失。
可选地,根据日志文件清单中日志文件的读取下标从日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列之后,将数据队列中的日志数据发送至数据存储系统。在接收到数据存储系统反馈的接收成功消息时,将日志文件清单同步至非易失性存储设备。具体实施中,数据存储系统用于存储从业务系统中采集的日志数据,非易失性存储设备可以是配置管理中心,也可以是数据存储系统等。当数据采集进程异常终止时,非易失性存储设备中的日志文件清单将不会丢失,故当数据采集进程恢复正常后,根据非易失性存储设备中保存的日志文件清单能确定各个日志文件的读取下标,重新读取日志文件中的日志数据,避免了进程意外终止而造成的数据丢失。另外,还可以定时获取数据队列和通知队列的快照,并将获取的快照也保存至非易失性存储设备中,故在数据采集进程恢复正常后,可以结合非易失内存中的日志文件清单以及数据队列和通知队列的快照确定日志文件的读取下标。这样能更准备的获知数据采集异常时没有读取以及没有发送成功数据,也减少了重复采集的数据。针对数据采集进程恢复正常后,根据快照以及日志文件清单采集数据造成的数据重复现象,本发明实施例提供以下解决方法:对每条数据增加唯一标识,唯一标识可以为根据数据中的关键信息加时间戳生成的哈希值。然后在数据清洗阶段时,根据数据的唯一标识进行排重,从而能有效避免采集的数据重复。
可选地,在日志数据采集过程中,实时监控任务处理时长,任务处理时长为从日志文件中读取设定数量的日志数据至将读取的日志数据发送至数据队列所用的时长。在确定任务处理时长大于第一阈值时,将从日志文件中读取日志数据的速度降低至第一预设值;在确定任务处理时长小于第二阈值时,将从日志文件中读取日志数据的速度提升至第二预设值。其中第一阈值和第二阈值可以组成任务耗时基线,任务耗时基线为业务系统常规处理业务时,从业务系统中采集数据的平均耗时范围。第一预设值和第二预设阈值根据具体情况确定,比如在确定任务处理时长大于第一阈值时,减半从日志文件中读取的日志数据量和发送至数据队列的日志数据量。比如在确定任务处理时长小于第二阈值时,加倍从日志文件中读取的日志数据量和发送至数据队列的日志数据量。通过实时监控任务处理时长确定业务系统的繁忙程度,当任务处理时长大于第一阈值时,说明业务系统当前业务繁忙,为了不影响业务系统正常的业务处理,降低从日志文件中读取日志数据的速度,从而整体降低对业务系统资源的占用,保证了业务系统正常的业务处理。
为了更好的解释本发明实施例,下面通过具体的实施场景描述本发明实施例提供的一种数据采集方法的流程,该流程可以由数据采集装置执行。设定数据采集装置包括监听器1021、通知队列1022、处理单元1023、数据队列1024、发送器1025,具体如图3所示。监听器1021通过接收业务系统的系统通知获取业务系统中日志文件的变更消息,然后根据日志文件的变更消息确定变更类型,其中变更类型包括新建、修改、重命名和删除。监听器1021以文件名+变更类型的格式将变更消息发送至通知队列1022。处理单元1023从通知队列1022中获取变更消息,然后根据变更消息中不同的变更类型执行不同处理步骤,其中处理单元1023为多线程,对于多个不同变更类型的变更消息能够并行处理。下面以具体的例子对上述四种变更类型具体说明:
变更类型为新建:设定变更消息1为日志文件A+新建,处理单元1023在获知变更消息1后,在日志文件清单中添加日志文件A的记录,比如记录可以为日志文件A——读取下标为1。当业务系统在新建的日志文件中放入产生的日志数据时,监听器将监听到变更类型为修改的变更消息。
变更类型为重命名:设定变更消息2为日志文件C+重命名为日志文件E,处理单元1023在获知变更消息2后,在日志文件清单中查询日志文件C的记录,若查询获知的记录为:日志文件C——读取下标为51。则将日志文件清单中日志文件C的记录修改为:日志文件E——读取下标为51。当业务系统在重命名的日志文件中放入产生的日志数据时,监听器将监听到变更类型为修改的变更消息。
变更类型为删除:设定变更消息3为日志文件D+删除,处理单元1023在获知变更消息3后,在日志文件清单中查询日志文件D的记录然后进行删除。
变更类型为修改:设定变更消息4为日志文件B+修改,通过查询日志文件清单中日志文件B的记录获知日志文件B的读取下标为21。处理单元1023在获知变更消息4后,判断数据队列1024中日志数据量是否大于预设阈值,若否,则从日志文件B的第21行开始读取50行日志数据,然后将读取的50行日志数据发送至数据队列1024并将日志文件清单中日志文件B的读取下标更新为71。进一步地,处理单元1023判断读取的50行日志数据是否包括结尾标识,若包括,则结束本次数据采集任务。否则,将变更消息4再次放入通知队列1022。处理单元1023在获知变更消息4后,再次判断数据队列1024中日志数据量是否大于预设阈值,若不大于预设阈值,则从日志文件B的第71行开始读取50行日志数据,然后将读取的50行日志数据发送至数据队列1024并将日志文件清单中日志文件B的读取下标更新为121,依次类推,直到处理单元1023从日志文件B中读取的日志数据中包括结尾标识。另外,判断数据队列1024中日志数据量是否大于预设阈值时,若数据队列1024中日志数据量大于预设阈值,则将变更消息4再次放入通知队列1022。进一步地,数据队列1024接收读取的日志数据后,通过发送器1025将读取的日志数据发送至数据总线。处理器1023在接收到数据总线反馈的接收成功消息时,将日志文件清单同步至配置管理中心。另外处理器1023在处理数据采集任务时,实时监控任务处理时长,任务处理时长为处理器1023从日志文件中读取设定数量的日志数据至将读取的日志数据发送至数据队列所用的时长。处理器1023在确定任务处理时长大于任务耗时基线时,将减半从日志文件中读取日志数据量和发送至数据队列1024的日志数据量;在确定任务处理时长小于任务耗时基线时,将加倍从日志文件中读取日志数据量和发送至数据队列1024的日志数据量。
综上,本发明实施例提供了一种数据采集方法及装置,包括:监听业务系统中日志文件的变更消息;判断数据队列中的日志数据量是否大于预设阈值;若否,则根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列并更新所述日志文件清单中所述日志文件的读取下标,所述读取下标用于标识所述日志文件在前一次读取中的最后读取位置;在确定读取的日志数据不包括结尾标识时,返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤,直至读取的日志数据中包括结尾标识。由于在监听到业务系统中日志文件的变更消息之后,在从日志文件中读取日志数据之前,判断数据队列的内存占用情况。当数据队列内存没有到达上限时才从日志文件中采集数据并将采集的数据放入数据队列,当数据队里中内存达到上限时,停止从日志文件中采集数据,从而避免了往满载数据队列中插入采集的数据而导致数据丢失问题。由于从日志文件中采集日志数据时,每次只采集预设数据的日志数据,并且每次采集之前均会判断数据队列内存占用情况,而不是将日志文件中修改的日志数据全部读取后发送至数据队列,从而进一步优化了数据采集过程,避免了采集的数据丢失。
基于相同的技术构思,本发明实施例提供了一种数据采集装置,如图4所示,该装置可以执行数据采集方法的流程,包括:
监听模块401,用于监听业务系统中日志文件的变更消息;
处理模块402,用于判断数据队列中的日志数据量是否大于预设阈值;若否,则根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列并更新所述日志文件清单中所述日志文件的读取下标,所述读取下标用于标识所述日志文件在前一次读取中的最后读取位置;在确定读取的日志数据不包括结尾标识时,返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤,直至读取的日志数据中包括结尾标识。
需要说明的是,本发明实施例中监听模块401与上述实施例中监听器1021的功能相同,处理模块与上述实施例中通知队列1022、处理单元1023、数据队列1024、发送器1025的功能相同。
可选地,所述处理模块402还用于:
根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列之后,将所述数据队列中的日志数据发送至数据存储系统;
在接收到所述数据存储系统反馈的接收成功消息时,将所述日志文件清单同步至非易失性存储设备。
可选地,所述处理模块402还用于:
监控任务处理时长,所述任务处理时长为从所述日志文件中读取设定数量的日志数据至将读取的日志数据发送至所述数据队列所用的时长;
在确定所述任务处理时长大于第一阈值时,将从所述日志文件中读取日志数据的速度降低至第一预设值;在确定所述任务处理时长小于第二阈值时,将从所述日志文件中读取日志数据的速度提升至第二预设值。
可选地,所述处理模块402还用于:
监听业务系统中日志文件的变更消息之后,判断数据队列中的日志数据量是否大于预设阈值之前,将所述变更消息存储至通知队列;
从所述通知队列获取所述变更消息;
确定所述变更消息的变更类型为修改。
所述返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤之前,还包括:
在确定读取的日志数据不包括结尾标识时,将所述变更消息重新存储至所述通知队列。
可选地,所述处理模块402还用于:
在确定所述变更类型为新建时,在所述日志文件清单中添加所述日志文件的记录,所述记录包括文件名、读取下标;
在确定所述变更类型为重命名时,更新所述日志文件清单所述日志文件的文件名;
在确定所述变更类型为删除时,删除所述日志文件清单所述日志文件的记录。
本发明实施例提供了一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等。该计算设备可以包括中央处理器(Center Processing Unit,CPU)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器,可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器提供存储器中存储的程序指令和数据。在本发明实施例中,存储器可以用于存储数据采集方法的程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行数据采集方法。
本发明实施例提供了一种计算机存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行数据采集方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种数据采集方法,其特征在于,包括:
监听业务系统中日志文件的变更消息;
判断数据队列中的日志数据量是否大于预设阈值;
若否,则根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列并更新所述日志文件清单中所述日志文件的读取下标,所述读取下标用于标识所述日志文件在前一次读取中的最后读取位置;
在确定读取的日志数据不包括结尾标识时,返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤,直至读取的日志数据中包括结尾标识。
2.如权利要求1所述的方法,其特征在于,所述根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列之后,还包括:
将所述数据队列中的日志数据发送至数据存储系统;
在接收到所述数据存储系统反馈的接收成功消息时,将所述日志文件清单同步至非易失性存储设备。
3.如权利要求1所述的方法,其特征在于,还包括:
监控任务处理时长,所述任务处理时长为从所述日志文件中读取设定数量的日志数据至将读取的日志数据发送至所述数据队列所用的时长;
在确定所述任务处理时长大于第一阈值时,将从所述日志文件中读取日志数据的速度降低至第一预设值;在确定所述任务处理时长小于第二阈值时,将从所述日志文件中读取日志数据的速度提升至第二预设值。
4.如权利要求1至3任一所述的方法,其特征在于,所述监听业务系统中日志文件的变更消息之后,判断数据队列中的日志数据量是否大于预设阈值之前,还包括:
将所述变更消息存储至通知队列;
从所述通知队列获取所述变更消息;
确定所述变更消息的变更类型为修改;
所述返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤之前,还包括:
在确定读取的日志数据不包括结尾标识时,将所述变更消息重新存储至所述通知队列。
5.如权利要求4所述的方法,其特征在于,还包括:
在确定所述变更类型为新建时,在所述日志文件清单中添加所述日志文件的记录,所述记录包括文件名、读取下标;
在确定所述变更类型为重命名时,更新所述日志文件清单所述日志文件的文件名;
在确定所述变更类型为删除时,删除所述日志文件清单所述日志文件的记录。
6.一种数据采集装置,其特征在于,包括:
监听模块,用于监听业务系统中日志文件的变更消息;
处理模块,用于判断数据队列中的日志数据量是否大于预设阈值;若否,则根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列并更新所述日志文件清单中所述日志文件的读取下标,所述读取下标用于标识所述日志文件在前一次读取中的最后读取位置;在确定读取的日志数据不包括结尾标识时,返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤,直至读取的日志数据中包括结尾标识。
7.如权利要求6所述的装置,其特征在于,所述处理模块还用于:
根据日志文件清单中所述日志文件的读取下标从所述日志文件中读取设定数量的日志数据,将读取的日志数据发送至所述数据队列之后,将所述数据队列中的日志数据发送至数据存储系统;
在接收到所述数据存储系统反馈的接收成功消息时,将所述日志文件清单同步至非易失性存储设备。
8.如权利要求6所述的装置,其特征在于,所述处理模块还用于:
监控任务处理时长,所述任务处理时长为从所述日志文件中读取设定数量的日志数据至将读取的日志数据发送至所述数据队列所用的时长;
在确定所述任务处理时长大于第一阈值时,将从所述日志文件中读取日志数据的速度降低至第一预设值;在确定所述任务处理时长小于第二阈值时,将从所述日志文件中读取日志数据的速度提升至第二预设值。
9.如权利要求6至8任一所述的装置,其特征在于,所述处理模块还用于:
监听业务系统中日志文件的变更消息之后,判断数据队列中的日志数据量是否大于预设阈值之前,将所述变更消息存储至通知队列;
从所述通知队列获取所述变更消息;
确定所述变更消息的变更类型为修改;
所述返回判断所述数据队列中的日志数据量是否大于预设阈值的步骤之前,还包括:
在确定读取的日志数据不包括结尾标识时,将所述变更消息重新存储至所述通知队列。
10.如权利要求9所述的装置,其特征在于,所述处理模块还用于:
在确定所述变更类型为新建时,在所述日志文件清单中添加所述日志文件的记录,所述记录包括文件名、读取下标;
在确定所述变更类型为重命名时,更新所述日志文件清单所述日志文件的文件名;
在确定所述变更类型为删除时,删除所述日志文件清单所述日志文件的记录。
11.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1至5任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810030892.8A CN108399186A (zh) | 2018-01-12 | 2018-01-12 | 一种数据采集方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810030892.8A CN108399186A (zh) | 2018-01-12 | 2018-01-12 | 一种数据采集方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108399186A true CN108399186A (zh) | 2018-08-14 |
Family
ID=63094961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810030892.8A Pending CN108399186A (zh) | 2018-01-12 | 2018-01-12 | 一种数据采集方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108399186A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109688207A (zh) * | 2018-12-11 | 2019-04-26 | 北京云中融信网络科技有限公司 | 日志传输方法、装置及服务器 |
CN110719233A (zh) * | 2019-10-11 | 2020-01-21 | 北京百度网讯科技有限公司 | 用于发送信息的方法及装置 |
CN110955653A (zh) * | 2018-09-26 | 2020-04-03 | 阿里巴巴集团控股有限公司 | 一种数据页面的处理方法、装置、设备及计算机系统 |
CN111240952A (zh) * | 2020-02-28 | 2020-06-05 | 北京百度网讯科技有限公司 | 日志采集方法和装置 |
CN112084265A (zh) * | 2020-09-11 | 2020-12-15 | 北京金山云网络技术有限公司 | 一种日志数据同步方法、装置、服务器及存储介质 |
CN112231288A (zh) * | 2020-09-30 | 2021-01-15 | 北京金山云网络技术有限公司 | 日志存储方法和装置、介质 |
CN112306827A (zh) * | 2020-03-25 | 2021-02-02 | 北京沃东天骏信息技术有限公司 | 日志采集装置、方法和计算机可读存储介质 |
CN112698789A (zh) * | 2020-12-29 | 2021-04-23 | 广州鼎甲计算机科技有限公司 | 数据缓存方法、装置、设备及存储介质 |
CN113111137A (zh) * | 2021-04-30 | 2021-07-13 | 深圳壹账通智能科技有限公司 | 分布式系统日志实时展示方法、装置、设备及存储介质 |
CN114401289A (zh) * | 2021-12-31 | 2022-04-26 | 深圳市麦谷科技有限公司 | 任务分批上传方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102447633A (zh) * | 2011-12-29 | 2012-05-09 | 北京亿赞普网络技术有限公司 | 一种日志传输的方法和系统 |
CN102467516A (zh) * | 2010-11-04 | 2012-05-23 | 北京北方微电子基地设备工艺研究中心有限责任公司 | 设备控制过程中的日志记录方法、装置及系统 |
CN104283719A (zh) * | 2014-10-28 | 2015-01-14 | 北京国双科技有限公司 | 一种日志的处理方法、装置及服务器 |
CN104572416A (zh) * | 2014-12-29 | 2015-04-29 | 北京锐安科技有限公司 | 一种运维数据的处理方法及装置 |
CN107180116A (zh) * | 2017-06-28 | 2017-09-19 | 努比亚技术有限公司 | 一种数据同步处理方法、移动终端以及计算机可读存储介质 |
-
2018
- 2018-01-12 CN CN201810030892.8A patent/CN108399186A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467516A (zh) * | 2010-11-04 | 2012-05-23 | 北京北方微电子基地设备工艺研究中心有限责任公司 | 设备控制过程中的日志记录方法、装置及系统 |
CN102447633A (zh) * | 2011-12-29 | 2012-05-09 | 北京亿赞普网络技术有限公司 | 一种日志传输的方法和系统 |
CN104283719A (zh) * | 2014-10-28 | 2015-01-14 | 北京国双科技有限公司 | 一种日志的处理方法、装置及服务器 |
CN104572416A (zh) * | 2014-12-29 | 2015-04-29 | 北京锐安科技有限公司 | 一种运维数据的处理方法及装置 |
CN107180116A (zh) * | 2017-06-28 | 2017-09-19 | 努比亚技术有限公司 | 一种数据同步处理方法、移动终端以及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
D_R_Y: ""Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)"", 《HTTPS://WWW.CNBLOGS.COM/QIAOYANLIN/P/6706085.HTML》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955653A (zh) * | 2018-09-26 | 2020-04-03 | 阿里巴巴集团控股有限公司 | 一种数据页面的处理方法、装置、设备及计算机系统 |
CN109688207A (zh) * | 2018-12-11 | 2019-04-26 | 北京云中融信网络科技有限公司 | 日志传输方法、装置及服务器 |
CN110719233A (zh) * | 2019-10-11 | 2020-01-21 | 北京百度网讯科技有限公司 | 用于发送信息的方法及装置 |
CN110719233B (zh) * | 2019-10-11 | 2023-10-31 | 北京百度网讯科技有限公司 | 用于发送信息的方法及装置 |
CN111240952A (zh) * | 2020-02-28 | 2020-06-05 | 北京百度网讯科技有限公司 | 日志采集方法和装置 |
CN111240952B (zh) * | 2020-02-28 | 2023-07-21 | 北京百度网讯科技有限公司 | 日志采集方法和装置 |
CN112306827A (zh) * | 2020-03-25 | 2021-02-02 | 北京沃东天骏信息技术有限公司 | 日志采集装置、方法和计算机可读存储介质 |
CN112084265A (zh) * | 2020-09-11 | 2020-12-15 | 北京金山云网络技术有限公司 | 一种日志数据同步方法、装置、服务器及存储介质 |
CN112231288A (zh) * | 2020-09-30 | 2021-01-15 | 北京金山云网络技术有限公司 | 日志存储方法和装置、介质 |
CN112698789A (zh) * | 2020-12-29 | 2021-04-23 | 广州鼎甲计算机科技有限公司 | 数据缓存方法、装置、设备及存储介质 |
CN112698789B (zh) * | 2020-12-29 | 2022-03-15 | 广州鼎甲计算机科技有限公司 | 数据缓存方法、装置、设备及存储介质 |
CN113111137A (zh) * | 2021-04-30 | 2021-07-13 | 深圳壹账通智能科技有限公司 | 分布式系统日志实时展示方法、装置、设备及存储介质 |
CN114401289A (zh) * | 2021-12-31 | 2022-04-26 | 深圳市麦谷科技有限公司 | 任务分批上传方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399186A (zh) | 一种数据采集方法及装置 | |
CN110502494B (zh) | 日志处理方法、装置、计算机设备及存储介质 | |
CN106815254B (zh) | 一种数据处理方法和装置 | |
CN108090079B (zh) | 一种即时聊天工具的聊天记录处理方法及装置 | |
CN101557427A (zh) | 提供分流信息、实现客户端分流的方法、系统及服务器 | |
CN104333501B (zh) | 一种联系人列表的显示方法及装置 | |
CN105072139B (zh) | 推荐方法和装置 | |
CN107092628B (zh) | 时间序列数据的处理方法和装置 | |
CN104915359B (zh) | 主题标签推荐方法及装置 | |
CN104346458B (zh) | 数据存储方法和存储设备 | |
CN110334059A (zh) | 用于处理文件的方法和装置 | |
CN108763044A (zh) | 一种日志处理方法及装置 | |
CN104584524A (zh) | 聚合中介系统中的数据 | |
CN112214390B (zh) | 一种测试用例生成方法、装置、系统、设备及介质 | |
CN106844744B (zh) | 点击模型应用方法、装置及搜索系统 | |
CN107193869A (zh) | 工业物联网云平台中数据存取的方法及装置 | |
CN112765152A (zh) | 用于合并数据表的方法和装置 | |
CN108694188A (zh) | 一种索引数据更新的方法以及相关装置 | |
CN109981715A (zh) | 一种会话管理的方法及装置 | |
CN109857802A (zh) | 日志数据同步方法、装置、设备及计算机可读存储介质 | |
CN106294345A (zh) | 应用程序的日志内容的处理方法和装置 | |
US9131005B2 (en) | Broker designation and selection in a publish-subscription environment | |
CN108710687A (zh) | 一种业务标识序列的获取方法和装置 | |
CN114402313A (zh) | 标签更新方法、装置、电子设备及存储介质 | |
CN115809119A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180814 |
|
RJ01 | Rejection of invention patent application after publication |