一种实时数据处理方法及系统的制作方法

文档序号:6634202阅读:455来源:国知局
一种实时数据处理方法及系统的制作方法
【专利摘要】本发明公开了一种实时数据处理方法及系统,包括:实时接收数据并将数据放入队列中;循环读取队列中的数据并将读取的数据放入缓存中;判断从队列中读取数据的时间是否超过预设的时间阈值,如果是,则将缓存中的数据进行聚合,并将聚合后的数据持久化。本发明的实时数据处理方法及系统,预设时间阈值,在处理队列数据时,每隔固定的时间间隔跳出处理队列的循环,能够保证定期的持久化,也能够保证将相同维度的数据聚合成尽量少的条数,可以平衡持久化压力、持久化的周期和聚合效果这三者之间的矛盾关系,避免了由于数据量过大或者数据出入队列速度不一致造成的种种不良后果。
【专利说明】一种实时数据处理方法及系统

【技术领域】
[0001]本发明涉及数据持久化【技术领域】,尤其涉及一种实时数据处理方法及系统。

【背景技术】
[0002]在实时数据处理系统中,一方面大量带有维度的数据会按照固定的时间窗口进入队列,另一方面队列在处理数据时,期望能快速的将同一个时间窗口内具有相同维度的数据聚合成尽量少的条数,在维度特别多的情况下,聚合后的条目数量也是巨大的,考虑到持久化聚合后的数据对服务器的压力,也需要尽量减少每次持久化的数据量,也就是说在一个时间窗口内的数据尚未完全放入缓存时,需要先将已经放入缓存中的数据聚合并进行持久化。
[0003]现有的实时数据处理方法为:从队列中取数据后,将取出的数据放入缓存中等待聚合并持久化,如果队列为空,则将缓存中的数据聚合并进行持久化,如果队列不为空,则只将队列中的数据取出后放入缓存中。当从队列中取数据的速度超过数据进入队列的速度时,则现有技术可能会导致每取出一条数据后便立即进行一次聚合并持久化,持久化会特别频繁。而当队列中取数据的速度小于数据进入队列的速度时,可能会导致队列中数据大量积压,队列中数据如果一直取不完的话,则会导致缓存中的一直不能进行聚合并持久化,数据处理结果便不再是实时的,如果队列中的数据在积压很长时间后终于为空了,那么将缓存中的数据聚合后的数据量通常也会更多,一次性存储大量数据对服务器的压力也会瞬间变大。以上这两种情况都不是期望的,所期望的是同一个时间窗口内的相同维度下的数据聚合后的条数尽量少,而且能够尽快的持久化,并且每次存储时的数据尽量少以减轻对服务器的压力。


【发明内容】

[0004]有鉴于此,本发明要解决的一个技术问题是提供一种实时数据处理方法,通过预设时间阈值,在处理队列数据时每隔固定的时间间隔进行数据持久化。
[0005]一种实时数据处理方法,包括:实时接收数据并将所述数据放入队列中;循环读取所述队列中的数据并将读取的数据放入缓存中;判断从所述队列中读取数据的时间是否超过预设的时间阈值,如果是,则将所述缓存中的数据进行聚合,并将聚合后的数据持久化。
[0006]根据本发明的一个实施例,进一步的,所述判断从所述队列中读取数据的时间是否超过预设的时间阈值、如果是、则将所述缓存中的数据进行聚合、并将聚合后的数据持久化包括:将开始循环读取所述队列中数据的当前时间设置为第一时间Tl并记录;在每次从所述队列中取出一条数据并放入所述缓存时,判断当前时间和Tl之间的时间差是否超过所述时间阈值,如果超过所述时间阈值,则跳出读取所述队列中数据的循环,将缓存中的数据进行聚合,并将聚合后的数据持久化;如果未超过所述时间阈值,则继续循环进行从所述队列中读取下一条数据的操作。
[0007]根据本发明的一个实施例,进一步的,所述方法还包括:根据设定的聚合结果的最小更新周期T2和允许持久化的最小时间间隔T3设置所述时间阈值;其中,所述时间阈值小于等于T2,并且大于等于T3。
[0008]根据本发明的一个实施例,进一步的,所述根据设定的聚合结果的最小更新周期T2和允许持久化的最小时间间隔T3设置所述时间阈值包括:将所述时间阈值的分别设置为第一时间阈值和第二时间阈值,并进行所述数据的持久化处理;其中,第一时间阈值的值为T2,第二时间阈值的值为第一时间阈值的一半;分别获取所述时间阈值为第一时间阈值的第一数据持久化结果和所述时间阈值为第二时间阈值时的第二数据持久化结果,并判断所述第一数据持久化结果和所述第二数据持久化结果是否都符合预设的持久化检测策略;所述数据持久化结果包括:聚合程度和存储的行数;如果是,则将第二时间阈值的值赋给第一时间阈值,并将第二时间阈值的值设置为新的第一时间阈值的一半,进行数据的持久化处理并检测数据持久化结果,依此循环执行设置第一时间阈值和第二时间阈值并进行所述数据的持久化处理,直到判断所述第一数据持久化结果和所述第二数据持久化结果不都符合预设的持久化检测策略时,则跳出执行设置第一时间阈值和第二时间阈值并进行所述数据的持久化处理的循环,确定所述时间阈值为此时的第一时间阈值;如果否,则确定所述时间阈值为T2。
[0009]根据本发明的一个实施例,进一步的,将缓存中的数据按照不同的维度进行聚合,将具有相同维度的数据聚合成一条数据,并将聚合完成后的数据存储在数据库或文件中。
[0010]本发明要解决的另一个技术问题是提供一种实时数据处理系统,通过预设时间阈值,在处理队列数据时每隔固定的时间间隔进行数据持久化。
[0011]一种实时数据处理系统,包括:数据接收单元,用于实时接收数据并将所述数据放入队列中;数据缓存单元,用于循环读取所述队列中的数据并将读取的数据放入缓存中;持久化单元,用于判断从所述队列中读取数据的时间是否超过预设的时间阈值,如果是,则将所述缓存中的数据进行聚合,并将聚合后的数据持久化。
[0012]根据本发明的一个实施例,进一步的,所述数据缓存单元包括数据读取记录子模块,用于将开始循环读取所述队列中数据的当前时间设置为第一时间Tl并记录;所述持久化单元包括数据聚合子模块,用于在每次所述数据缓存单元从所述队列中取出一条数据并放入所述缓存时,判断当前时间和Tl之间的时间差是否超过所述时间阈值,如果超过所述时间阈值,则跳出读取所述队列中数据的循环,将缓存中的数据进行聚合,并将聚合后的数据持久化,如果未超过所述时间阈值,则所述数据缓存单元继续循环进行从所述队列中读取下一条数据的操作。
[0013]根据本发明的一个实施例,进一步的,时间阈值设定单元,用于根据设定的聚合结果的最小更新周期T2和允许的持久化的最小时间间隔T3设置所述时间阈值;其中,所述时间阈值小于等于T2,并且大于等于T3。
[0014]根据本发明的一个实施例,进一步的,所述时间阈值设定单元包括:试验阈值设定模块,用于将所述时间阈值的分别设置为第一时间阈值和第二时间阈值,并进行所述数据的持久化处理;其中,第一时间阈值的值为T2,第二时间阈值的值为第一时间阈值的一半;持久化试验模块,用于分别获取所述时间阈值为第一时间阈值的第一数据持久化结果和所述时间阈值为第二时间阈值时的第二数据持久化结果,并判断所述第一数据持久化结果和所述第二数据持久化结果是否都符合预设的持久化检测策略;如果是,则所述试验阈值设定单元将第二时间阈值的值赋给第一时间阈值,并将第二时间阈值的值设置为新的第一时间阈值的一半,进行数据的持久化处理并检测数据持久化结果,依此循环执行设置第一时间阈值和第二时间阈值并进行所述数据的持久化处理,直到判断所述第一数据持久化结果和所述第二数据持久化结果不都符合预设的持久化检测策略时,则跳出执行设置第一时间阈值和第二时间阈值并进行所述数据的持久化处理的循环;确定所述时间阈值为此时的第一时间阈值;如果否,则确定所述时间阈值为T2。
[0015]根据本发明的一个实施例,进一步的,所述持久化单元包括持久处理子模块,用于将缓存中的数据按照不同的维度进行聚合,将具有相同维度的数据聚合成一条数据,并将聚合完成后的数据存储在数据库或文件中。
[0016]本发明的实时数据处理方法及系统,预设时间阈值,在处理队列数据时,每隔固定的时间间隔跳出处理队列的循环,能够保证定期的持久化,也能够保证将相同维度的数据聚合成尽量少的条数,可以平衡持久化压力、持久化的周期和聚合效果这三者之间的矛盾关系,避免了由于数据量过大或者数据出入队列速度不一致造成的种种不良后果。

【专利附图】

【附图说明】
[0017]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0018]图1为根据本发明的实时数据处理方法的一个实施例的流程图;
[0019]图2为根据本发明的实时数据处理系统的一个实施例的示意图。

【具体实施方式】
[0020]下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0021]图1为根据本发明的实时数据处理方法的一个实施例的流程图,如图1所示:
[0022]步骤101,实时接收数据并将数据放入队列中。
[0023]步骤102,循环读取队列中的数据并将读取的数据放入缓存中。
[0024]步骤103,判断从队列中读取数据的时间是否超过预设的时间阈值。
[0025]步骤104,如果是,则将缓存中的数据进行聚合,并将聚合后的数据持久化。
[0026]本发明的实时数据处理方法,通过预设时间阈值的方式,在处理队列数据时,每隔固定的时间间隔跳出处理队列的循环,这样保证将固定时间间隔内的缓存中的数据进行一次聚合并进行持久化,在执行聚合和存储时,不再考虑队列中数据是否处理完,只要设置一个合理的时间阈值即可,既保证了定期的持久化,也能够保证将相同维度的数据聚合成尽量少的条数。
[0027]在一个实施例中,可以启动单线程或多线程完成数据持久化的操作,为了保证处理数据的先后顺序是接收到数据的顺序一致,所以将接收到的数据放入了队列中。将单线程或多线程开始循环读取队列中数据的当前时间设置为第一时间Tl并记录,然后开始读取队列中的数据并将读取到的数据放入缓存集合中。
[0028]在每次从队列中取出一条数据并放入缓存时,判断当前时间和Tl之间的时间差是否超过时间阈值,如果超过时间阈值,则跳出当前从队列中读取数据的循环,将缓存中的数据进行聚合,并将聚合后的数据持久化;如果未超过时间阈值,则继续循环进行从队列中读取下一条数据的操作。
[0029]在一个实施例中,还包括根据设定的聚合结果的最小更新周期T2和允许持久化的最小时间间隔T3设置时间阈值。已知需要聚合结果的最小更新周期是T2(即最小需要每个T都会有数据更新)和所允许的持久化的最小时间间隔Τ3,那么聚合并持久化的时间周期肯定要小于等于Τ2,并且大于等于Τ3。
[0030]在一个实施例中,可以单独启动一个进程或任务,用于自动确定需要设置的时间阈值。启动进程或任务,将时间阈值的分别设置为第一时间阈值和第二时间阈值,并进行数据的持久化处理。第一时间阈值的值为Τ2,第二时间阈值的值为第一时间阈值的一半。
[0031]分别获取时间阈值为第一时间阈值和第二时间阈值时的数据持久化结果,并判断2个数据持久化结果是否都符合预设的持久化检测策略。数据持久化结果包括:聚合程度和存储的行数。
[0032]如果是,则将第二时间阈值的值赋给第一时间阈值,并将第二时间阈值的值设置为新的第一时间阈值的一半,进行数据的持久化处理并检测数据持久化结果,依此循环执行设置第一时间阈值和第二时间阈值并进行数据的持久化处理,直到判断2个数据持久化结果不都符合预设的持久化检测策略时,则跳出循环,确定时间阈值为此时的第一时间阈值;如果否,则确定时间阈值为Τ2。
[0033]在一个实施例中,分两次分别测试将阈值设为Τ2和Τ2的一半,测试此两种情况下最终数据持久化的结果,对比两者存储的行数以及聚合程度(是否将相同维度的数据聚合成一条)差别,如果持久化的压力特别大,那么更看重的是阈值为Τ2的二分之一时持久化的行数有没有成倍的减少,如果是更关注的是聚合效果的话,那么需要分析阈值为Τ2的二分之一时聚合程度是否依然理想。
[0034]阈值越大,聚合的越理想,存储的压力越大;阈值越小,聚合效果越差,存储的压力也越小。如果阈值为Τ2和二分之一 Τ2时聚合效果和持久化的行数都相差不大的话,那么将阈值设为四分之一 Τ2,和二分之一 Τ2的持久化结果进行比较,以此类推....,确定设置的时间阈值的原则,即持久化检测策略可以是:尽量减少一次持久化对服务器的压力,同时保证聚合效果要好,同时因为是实时数据处理,当然也要出结果的速度越快越好。
[0035]启动用于时间阈值设定的程序或进程,设置各种参数,包括:Τ1、Τ2、持久化结果的判定策略,按照以上的测试方法在经过大量测试后,能够自动找到期望的阈值。
[0036]在一个实施例中,将缓存中的数据按照不同的维度进行聚合,将具有相同维度的数据聚合成一条数据,并将聚合完成后的数据存储在数据库或文件中。可以根据具体的应用场景设置多个维度,形成一个维度体系,具备访问和过滤事实的能力,包括一个完整的维度体系编码、关键词以及相关的表示。例如,时间维度包括年、季度、月、日等层次,地区维度包括国家、省、市等层次等等。将缓存中的数据按照不同的维度进行聚合,将聚合完成后的数据持久化,存储方式可以采用现有的技术。
[0037]本发明的实时数据处理方法,能够保证将固定时间间隔内的缓存中的数据进行一次聚合并进行持久化,在执行聚合和存储时,不再考虑队列中数据是否处理完,并能通过自动进行数据持久化的测试设置一个合理的时间阈值,既保证了定期的持久化,也能够保证将相同维度的数据聚合成尽量少的条数。
[0038]如图2所示,本发明提供一种实时数据处理系统,包括:数据接收单元21、数据缓存单元22和持久化单元23。数据接收单元21实时接收数据并将数据放入队列中。数据缓存单元22循环读取队列中的数据并将读取的数据放入缓存中。持久化单元23判断从队列中读取数据的时间是否超过预设的时间阈值,如果是,则将缓存中的数据进行聚合,并将聚合后的数据持久化。
[0039]在一个实施例中,数据缓存单元22的数据读取记录子模块将开始循环读取队列中数据的当前时间设置为第一时间Tl并记录。持久化单元23的数据聚合子模块在每次数据缓存单元从队列中取出一条数据并放入缓存时,判断当前时间和Tl之间的时间差是否超过时间阈值,如果超过时间阈值,则跳出当前从队列中读取数据的循环,将缓存中的数据进行聚合,并将聚合后的数据持久化,如果未超过时间阈值,则数据缓存单元22继续循环进行从队列中读取下一条数据的操作。
[0040]在一个实施例中,时间阈值设定单元24根据设定的聚合结果的最小更新周期T2和允许的持久化的最小时间间隔T3设置时间阈值。时间阈值小于等于T2,并且大于等于T3。
[0041 ] 在一个实施例中,时间阈值设定单元24包括:试验阈值设定模块241和持久化试验模块242。试验阈值设定模块241将时间阈值的分别设置为第一时间阈值和第二时间阈值,并进行数据的持久化处理,第一时间阈值的值为T2,第二时间阈值的值为第一时间阈值的一半。
[0042]持久化试验模块242分别获取时间阈值为第一时间阈值和第二时间阈值时的数据持久化结果,并判断2个数据持久化结果是否都符合预设的持久化检测策略。如果是,则试验阈值设定单元241将第二时间阈值的值赋给第一时间阈值,并将第二时间阈值的值设置为新的第一时间阈值的一半,进行数据的持久化处理并检测数据持久化结果,依此循环执行设置第一时间阈值和第二时间阈值并进行数据的持久化处理,直到判断2个数据持久化结果不都符合预设的持久化检测策略时,则跳出循环;确定时间阈值为此时的第一时间阈值;如果否,则确定时间阈值为T2。
[0043]在一个实时例中,持久化单元241的持久处理子模块将缓存中的数据按照不同的维度进行聚合,将具有相同维度的数据聚合成一条数据,并将聚合完成后的数据存储在数据库或文件中。
[0044]本发明的实时数据处理方法及系统,预设时间阈值,在处理队列数据时,每隔固定的时间间隔跳出处理队列的循环,能够保证定期的持久化,也能够保证将相同维度的数据聚合成尽量少的条数,能够平衡持久化压力、持久化的周期和聚合效果这三者之间的矛盾关系,避免了由于数据量过大或者数据出入队列速度不一致造成的种种不好后果。
[0045]可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
[0046]本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
【权利要求】
1.一种实时数据处理方法,其特征在于,包括: 实时接收数据并将所述数据放入队列中; 循环读取所述队列中的数据并将读取的数据放入缓存中; 判断从所述队列中读取数据的时间是否超过预设的时间阈值,如果是,则将所述缓存中的数据进行聚合,并将聚合后的数据持久化。
2.如权利要求1所述的方法,其特征在于,所述判断从所述队列中读取数据的时间是否超过预设的时间阈值、如果是、则将所述缓存中的数据进行聚合、并将聚合后的数据持久化包括: 将开始循环读取所述队列中数据的当前时间设置为第一时间Tl并记录; 在每次从所述队列中取出一条数据并放入所述缓存时,判断当前时间和Tl之间的时间差是否超过所述时间阈值,如果超过所述时间阈值,则跳出读取所述队列中数据的循环,将缓存中的数据进行聚合,并将聚合后的数据持久化;如果未超过所述时间阈值,则继续循环进行从所述队列中读取下一条数据的操作。
3.如权利要求2所述的方法,其特征在于,所述方法还包括: 根据设定的聚合结果的最小更新周期T2和允许持久化的最小时间间隔T3设置所述时间阈值;其中,所述时间阈值小于等于T2,并且大于等于T3。
4.如权利要求3所述的方法,其特征在于,所述根据设定的聚合结果的最小更新周期T2和允许持久化的最小时间间隔T3设置所述时间阈值包括: 将所述时间阈值的分别设置为第一时间阈值和第二时间阈值,并进行所述数据的持久化处理;其中,第一时间阈值的值为T2,第二时间阈值的值为第一时间阈值的一半; 分别获取所述时间阈值为第一时间阈值的第一数据持久化结果和所述时间阈值为第二时间阈值时的第二数据持久化结果,并判断所述第一数据持久化结果和所述第二数据持久化结果是否都符合预设的持久化检测策略;所述数据持久化结果包括:聚合程度和存储的行数; 如果是,则将第二时间阈值的值赋给第一时间阈值,并将第二时间阈值的值设置为新的第一时间阈值的一半,进行数据的持久化处理并检测数据持久化结果,依此循环执行设置第一时间阈值和第二时间阈值并进行所述数据的持久化处理,直到判断所述第一数据持久化结果和所述第二数据持久化结果不都符合预设的持久化检测策略时,则跳出此执行设置第一时间阈值和第二时间阈值并进行所述数据的持久化处理的循环,确定所述时间阈值为此时的第一时间阈值; 如果否,则确定所述时间阈值为T2。
5.如权利要求1所述的方法,其特征在于,所述将所述缓存中的数据进行聚合、并将聚合后的数据持久化包括: 将缓存中的数据按照不同的维度进行聚合,将具有相同维度的数据聚合成一条数据,并将聚合完成后的数据存储在数据库或文件中。
6.一种实时数据处理系统,其特征在于,包括: 数据接收单元,用于实时接收数据并将所述数据放入队列中; 数据缓存单元,用于循环读取所述队列中的数据并将读取的数据放入缓存中; 持久化单元,用于判断从所述队列中读取数据的时间是否超过预设的时间阈值,如果是,则将所述缓存中的数据进行聚合,并将聚合后的数据持久化。
7.如权利要求6所述的系统,其特征在于: 所述数据缓存单元包括数据读取记录子模块,用于将开始循环读取所述队列中数据的当前时间设置为第一时间Tl并记录; 所述持久化单元包括数据聚合子模块,用于在每次所述数据缓存单元从所述队列中取出一条数据并放入所述缓存时,判断当前时间和Tl之间的时间差是否超过所述时间阈值,如果超过所述时间阈值,则跳出读取所述队列中数据的循环,将缓存中的数据进行聚合,并将聚合后的数据持久化,如果未超过所述时间阈值,则所述数据缓存单元继续循环进行从所述队列中读取下一条数据的操作。
8.如权利要求7所述的系统,其特征在于,还包括: 时间阈值设定单元,用于根据设定的聚合结果的最小更新周期T2和允许的持久化的最小时间间隔T3设置所述时间阈值;其中,所述时间阈值小于等于T2,并且大于等于T3。
9.如权利要求8所述的系统,其特征在于: 所述时间阈值设定单元包括: 试验阈值设定模块,用于将所述时间阈值的分别设置为第一时间阈值和第二时间阈值,并进行所述数据的持久化处理;其中,第一时间阈值的值为T2,第二时间阈值的值为第一时间阈值的一半; 持久化试验模块,用于分别获取所述时间阈值为第一时间阈值的第一数据持久化结果和所述时间阈值为第二时间阈值时的第二数据持久化结果,并判断所述第一数据持久化结果和所述第二数据持久化结果是否都符合预设的持久化检测策略;如果是,则所述试验阈值设定单元将第二时间阈值的值赋给第一时间阈值,并将第二时间阈值的值设置为新的第一时间阈值的一半,进行数据的持久化处理并检测数据持久化结果,依此循环执行设置第一时间阈值和第二时间阈值并进行所述数据的持久化处理,直到判断所述第一数据持久化结果和所述第二数据持久化结果不都符合预设的持久化检测策略时,则跳出此执行设置第一时间阈值和第二时间阈值并进行所述数据的持久化处理的循环;确定所述时间阈值为此时的第一时间阈值;如果否,则确定所述时间阈值为T2。
10.如权利要求6至9任意一项所述的系统,其特征在于: 所述持久化单元包括持久处理子模块,用于将缓存中的数据按照不同的维度进行聚合,将具有相同维度的数据聚合成一条数据,并将聚合完成后的数据存储在数据库或文件中。
【文档编号】G06F17/30GK104317958SQ201410645385
【公开日】2015年1月28日 申请日期:2014年11月12日 优先权日:2014年11月12日
【发明者】郭涛, 王鹏 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1