基于缓冲池的数据缓存排序在线处理方法

文档序号:7749359阅读:244来源:国知局
专利名称:基于缓冲池的数据缓存排序在线处理方法
技术领域
本发明涉及基于缓冲池的数据缓存排序在线处理方法,具体包括数据的缓存、去重和排序方法,属于互联网领域。
背景技术
近年来,随着计算机技术、网络技术、通信技术及多媒体技术的迅猛发展,多媒体 信息的数据量急剧增多,互联网上存在着难以准确估计的大量的多媒体数据,既有以文件 为单位可一次性全部获取的静态多媒体数据,也有以数据流的形式在网络中传输的动态多 媒体数据。在对互联网中的多媒体数据进行分析处理时,需要首先将多媒体数据从互联网 下载,然后分析处理。而且在多媒体数据分析处理中,通常需要具有一定长度的连续数据, 才能解码出相应的视频、音频数据片段,以便进行多媒体数据的内容分析。为叙述方便,以 下将网络中的静态多媒体文件或动态多媒体数据流通称为节目。目前常见的多线程下载软件,如迅雷、FlashGet等,通常采用按下载文件大小直接 在硬盘上创建多媒体文件,而后以向硬盘文件填充的方式下载数据。当遇到下述情况时无 法使用
(1)为了提高效率,采用多用户多线程的下载方式从网络中下载同一节目; 在多用户、多线程下载时,一方面节目的总下载速度快,另一方面每个线程下载的起始 偏移量和速度都可能不同,因此一个节目的下载数据将会以偏移量分布近似随机的形式, 乱序、重复地到达。所以,若采用文件缓存方式下载,同时读写的文件数量多、下载的数据量 大、数据在文件中的写入位置频繁变化,因而硬盘读写速度将比通常情况慢很多,甚至低于 网络媒体数据的下载速度,无法满足系统对下载数据量大的要求。(2)为了提高效率,采用在线分析的方式,要求对接收到的节目数据进行实时分析 处理;
目前以文件方式接收下载数据的软件都是以数据下载为最终目标,不考虑需要尽快做 分析处理的实时操作。但在互联网多媒体数据分析处理系统中,下载数据只是前端环节,下 载后需要尽快分析处理,并且不同多媒体数据分析处理技术对被处理数据的连续长度有不 同要求,采用文件方式接收下载数据无法及早从下载数据中降能处理的连续多媒体数据片 段及早分析处理,即,无法满足系统对下载数据进行实时分析处理的要求,同时也不便于和 系统中的分析处理模块接口。(3)系统从互联网持续、海量地下载大量节目数据。在持续、大量地下载网络媒体数据的情况下,受计算机系统可用内存数量的限制, 无法在内存中缓存整个媒体文件。此外,在采用多用户多线程的下载方式从网络中下载同一节目时,下载数据会存 在大量重复,同时可能有少量丢失,在进行实时分析时也需要考虑采取相应的策略,而目前 还没有较好的处理方法。

发明内容
本发明为了解决从互联网以多用户、多线程方式下载大量多媒体节目数据时,目 前常见的多线程下载软件对于下载数据乱序和重复的节目批量并发下载,不能实现基于内 存的下载数据在线缓存、排序和去重,因而无法支持实时在线的识别、检索等处理的问题, 本发明提供了基于缓冲池对数据进行缓存排序的在线处理方法。本发明在计算机系统内存中设置缓冲池,缓冲池中设置多个缓冲区,所有缓冲区组织成链表集中管理,为每个节目创建下载日志,用于记录节目已下载数据的偏移量范围, 并设置节目的生命周期初始值为k,k为自然数,且k>0,对接收到的节目下载数据进行基于 缓冲池的数据缓存排序在线处理方法,包括以下步骤
步骤一、接收下载模块下载的节目数据包,节目数据包中含有的信息有节目ID、起始地 址、字节数、偏移量,
步骤二、查询节目的下载日志,判断所述节目数据包中的数据是否下载过, 判断结果为是,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数 据包;
判断结果为否,执行步骤三;
步骤三、获取所述节目数据包的信息,并写入下载日志,计算节目数据包中的下载数据 与所有缓冲区的距离中的最小距离iMinDist,最小距离对应的缓冲区命名为PInBuffer ; 步骤四、判断条件iMinDist<0是否成立, 判断结果为是,执行步骤七, 判断结果为否,执行步骤五;
步骤五、判断iMinDist是否大于缓冲区申请阈值,且节目拥有的缓冲区数小于缓冲区 数量上限,
判断结果为是,则执行步骤六;
判断结果为否,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数 据包;
步骤六、申请新的缓冲区,并且做如下赋值=PInBufTer=新申请缓冲区; 步骤七、将所述节目数据包中的新数据存入缓冲区PInBuffer中,并返回缓冲区 PInBuffer中第一块连续数据的字节数、首字节指针,将节目数据包中的下载数据的偏移量 范围记录到该节目的下载日志中,并将节目生命期重新置为初始值k ;
步骤八、调用分析处理程序,从缓冲区PInBuffer中将排好序的连续字节数据取出,分 析处理程序返回取出的字节数m ; 步骤九、判断条件m>0是否成立, 判断结果为是,执行步骤十,
判断结果为否,结束本次操作,返回步骤一接收下一个节目数据包; 步骤十、删除缓冲区PInBuffer中的前m个字节数据,并更新缓冲区PInBuffer的状态 fn息;
重复执行步骤一至步骤十,同时系统周期的将节目的生命周期做减法操作,直至该节 目的生命周期小于等于0,表示该节目下载完毕,释放该节目所占用的缓冲区,完成对该节 目的数据缓存排序的在线处理。
本发明的优点①在系统全局设立缓冲池,内存使用量可控;②每个节目独立管 理,采用多个缓冲区对同一节目的下载数据进行缓存、排序与去重,根据下载数据的到达情 况自动申请增加缓冲区,能自适应于节目的多线程、多用户下载特点;③实时性好,每次接 收到新的数据包都将缓冲区内排好序的数据长度等信息送给实时分析处理模块,以便数据 能被尽早处理;④对数据缺失采取尽最大努力策略等待其到达。


图1是本发明方法流程图。
具体实施例方式具体实施方式
一下面结合图1说明本实施方式,本实施方式在计算机系统内存 中设置缓冲池,缓冲池中设置多个缓冲区,所有缓冲区组织成链表集中管理,为每个节目创 建下载日志,用于记录节目已下载数据的偏移量范围,并设置节目的生命周期初始值为k, k为自然数,且k>0,对接收到的节目下载数据进行基于缓冲池的数据缓存排序在线处理方 法,包括以下步骤
步骤一、接收下载模块下载的节目数据包,节目数据包中含有的信息有节目ID、起始地 址、字节数、偏移量,
步骤二、查询节目的下载日志,判断所述节目数据包中的数据是否下载过, 判断结果为是,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数 据包;
判断结果为否,执行步骤三;
步骤三、获取所述节目数据包的信息,并写入下载日志,计算节目数据包中的下载数据 与所有缓冲区的距离中的最小距离iMinDist,最小距离对应的缓冲区命名为PInBuffer ; 获取所述节目数据包与所有缓冲区的距离中的最小距离iMinDist的过程为 按如下公式计算节目数据包与每个缓冲区块的距离i^si 伪^si=Hiin (数据包偏移量+数据包长度一缓冲区原始偏移量, 数据包偏移量一缓冲区目前偏移量一缓冲区长度), 其中,
缓冲区原始偏移量是指缓冲区刚刚申请到时,所保存的第一个数据包的偏移量,即, 缓冲区获取后保存的第一个字节数据的偏移量;
缓冲区目前偏移量是指目前缓冲区中第一个字节数据对应的偏移量, 将数据包与每个缓冲区块的距离i^si中的最小值做为节目数据包与所有缓冲区的距 离中的最小距离iMinDist。步骤四、判断条件iMinDist<0是否成立, 判断结果为是,执行步骤七,
判断结果为否,执行步骤五;
步骤五、判断iMinDist是否大于缓冲区申请阈值,且节目拥有的缓冲区数小于缓冲区 数量上限,
判断结果为是,则执行步骤六;判断结果为否,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数 据包;
步骤六、申请新的缓冲区,并且做如下赋值=PInBufTer=新申请缓冲区; 步骤七、将所述节目数据包中的新数据存入缓冲区PInBuffer中,并返回缓冲区 PInBuffer中第一块连续数据的字节数、首字节指针,将节目数据包中的下载数据的偏移量 范围记录到该节目的下载日志中,并将节目生命期重新置为初始值k ;
步骤八、调用分析处理程序,从缓冲区PInBuffer中将排好序的连续字节数据取出,分 析处理程序返回取出的字节数m ; 步骤九、判断条件m>0是否成立, 判断结果为是,执行步骤十,
判断结果为否,结束本次操作,返回步骤一接收下一个节目数据包; 步骤十、删除缓冲区PInBufTer中的前m个字节数据,并更新缓冲区PInBufTer的状态 fn息; 重复执行步骤一至步骤十,同时系统周期的将节目的生命周期做减法操作,直至该节 目的生命周期小于等于0,表示该节目下载完毕,释放该节目所占用的缓冲区,完成对该节 目的数据缓存排序的在线处理。采用多缓冲区的方式缓存同一节目的下载数据,并进行缓存排序与去重操作每 个缓冲区对应一个偏移量,接收从该偏移量开始以缓冲区长度为范围区间的数据,并根据 接收数据的偏移量写入缓冲区,即相当于在节目上有多个长度一定的接收窗口,落在接收 窗口内的数据才会被相对应的缓冲区接收、排序,并同时记录在该节目的下载日志中,落在 窗口外的数据则被丢弃。随着数据接收、排序的进行,每当缓冲区接收了新数据后,都返回 缓冲区首部连续数据的长度,若满足处理程序对长度的要求,则移出缓冲区,修正缓冲区的 偏移量,即缓冲区对应的接收窗口在节目上向前移动,移动的长度为从缓冲区中取走的数 据字节数。因为在此过程中对下载的节目数据包都按其自身的在节目中的偏移量在缓冲区 中进行缓存操作,因此,虽然下载的数据可能是随机的形式,是乱序的,但经过缓冲池中处 理过的数据都是排好序的了。考虑数据下载中会存在大量重复,为避免重复处理,在内存中为每个节目创建一 个接收数据的下载日志,用于记录节目已接收到的全部数据的偏移量区间范围。当有下载 数据包到达时,首先搜索该下载日志,对于已接收偏移量范围内的数据丢弃不作任何处理, 对于新数据进行缓冲区重排操作。这样能有效减少对重复的数据的反复重排和处理。步骤一所述的节目数据包由下载模块下载后,在利用多媒体分析处理模块进行数 据处理之前,先利用本发明所述的缓存排序算法进行缓存、排序和去重。本发明的根本思想 是在缓冲池中进行处理,然后再发送给多媒体分析处理模块进行分析处理的实时操作,以 便及时对网络数据做出相应管理操作,或者分析后再存储到硬盘上,这样处理过的数据已 经排好序、去掉了重复数据,可以直接存在硬盘上,避免了在硬盘上频繁操作,读写速度慢 情况的发生。为了控制对内存的消耗,并充分利用系统的内存资源,在系统全局设置缓冲区池 根据系统可用于内存和单个缓冲区大小,创建一定数量的缓冲区,并组织成链表形式集中 管理,作为缓冲池。在节目下载过程中,使用的所有缓冲区均从该缓冲池中申请得到,当下载结束后释放所有缓冲区给缓冲池。关于缓冲池的具体情况如下
(1)缓冲池创建根据系统可用于内存大小,申请一个大的内存区块,在区块内部划分 缓冲区,并将缓冲区组织成链表形式集中管理,作为缓冲池。同时,在系统需要同时处理的 下载节目数量上限确定的情况下,根据缓冲池规模(创建时的缓冲区总数)、缓冲池利用率 动态设置每个节目所能使用的缓冲区数量上限为
嗜憲斜量-^g—创建时缓冲区的数量 ^it双 从“‘系统需要同吋下载节目的数量上限‘
其中是大于ι的系数,在系统运行过程中,根据缓冲池的利用率动态调整其数值。α的动态调整过程为
当缓冲池利用率Π小于阈值卢时,按一定幅度增加α的数值,如5% 50%; 当缓冲池利用率Π超过阈值岸时,按一定幅度减小的数值,如10% 50%; 其中,缓冲池利用率η按如下公式计算
— 目前缓沖池中空闲缓沖区总数 ‘1 = ^创建时缓沖区的数量^ ‘
阈值#的数值取0. 6、. 9。(2)缓冲区申请在节目下载过程中,需要申请新缓冲区时,从缓冲池中缓冲区链 表的头部或尾部取下一个缓冲区作为节目下载数据的新的缓冲区;
(3)节目缓冲区释放当一个节目下载、处理完毕,将其申请的所有缓冲区依次挂到缓 冲池中缓冲区链表的尾部或头部。在缓冲区接收数据时,若接收到的数据存在空白区块,S卩,接收到的数据与已有数 据不连续,则记录空白块的起始位置和长度,并尽最大努力等待空白块内的数据到达。接收 数据时,缓冲区内的空白块可能有多个。若缓冲区即将写满,而缓冲区空白块的数据仍未到 达,这可能是下载数据发生了丢失无法到达,而且空白块之前的数据长度不足,用户无法使 用,此时必须腾出空间接收新下载数据,则将第一个空白块和之前的数据移出缓冲区。具体将所述节目数据包中的新数据存入缓冲区PInBuffer中的过程为
步骤a、判断节目数据包的数据与缓冲区PInBuffer内已有数据是否不连续,即是否存 在空白块,
判断结果为是,则记录空白块的起始位置和长度,然后分别执行步骤b和步骤C, 判断结果为否,则执行步骤d,再执行步骤f,
步骤b、判断节目数据包中的数据与缓冲区PInBuffer内的已有的空白块是否有交叠, 判断结果为是,则修正相应空白块的位置和长度,然后执行步骤d, 判断结果为否,则执行步骤d,
步骤c、判断节目数据包中的数据是否覆盖缓冲区PInBuffer内的已有的空白块, 判断结果为是,删除该空白块,然后执行步骤d, 判断结果为否,执行步骤d,
步骤d、将所述节目数据包写入缓冲区PInBuffer内,
步骤e、在缓冲区PInBuffer中具有空白块的情况下,判断缓冲区PInBuffer的空闲率是否小于空闲率阈值下限<formula>formula see original document page 10</formula>l取50% 85%,
判断结果为是,将第一个空白块和第一块空白块之前的数据移出缓冲区PInBuffer,结 束本次操作,判断结果为否,结束本次操作,
步骤f、在缓冲区PInBuffer中无空白块的情况下,判断缓冲区PInBuffer的空闲率是 否小于空闲率阈值上限^//FWMjwZFWM取90% 95%,
判断结果为是,将缓冲区PInBuffer中的前力个字节数据移除,结束本次操作,判断结 果为否,结束本次操作,
其中,力按如下公式计算 h = cx BiifferSIze ,
上式中的C为比例系数阈值,满足如下关系
<formula>formula see original document page 10</formula>> R络系统的最大传输单元长度M2T;,
BufFulll满足条件
<formula>formula see original document page 10</formula>
权利要求
基于缓冲池的数据缓存排序在线处理方法,在计算机系统内存中设置缓冲池,缓冲池中设置多个缓冲区,所有缓冲区组织成链表集中管理,其特征在于,为每个节目创建下载日志,用于记录节目已下载数据的偏移量范围,并设置节目的生命周期初始值为k,k为自然数,且k>0,对接收到的节目下载数据进行基于缓冲池的数据缓存排序在线处理方法,包括以下步骤步骤一、接收下载模块下载的节目数据包,节目数据包中含有的信息有节目ID、起始地址、字节数、偏移量,步骤二、查询节目的下载日志,判断所述节目数据包中的数据是否下载过, 判断结果为是,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数据包;判断结果为否,执行步骤三;步骤三、获取所述节目数据包的信息,并写入下载日志,计算节目数据包中的下载数据与所有缓冲区的距离中的最小距离iMinDist,最小距离对应的缓冲区命名为PInBuffer;步骤四、判断条件iMinDist<0是否成立,判断结果为是,执行步骤七,判断结果为否,执行步骤五;步骤五、判断iMinDist是否大于缓冲区申请阈值,且节目拥有的缓冲区数小于缓冲区数量上限,判断结果为是,则执行步骤六;判断结果为否,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数据包;步骤六、申请新的缓冲区,并且做如下赋值PInBuffer=新申请缓冲区;步骤七、将所述节目数据包中的新数据存入缓冲区PInBuffer中,并返回缓冲区PInBuffer中第一块连续数据的字节数、首字节指针,将节目数据包中的下载数据的偏移量范围记录到该节目的下载日志中,并将节目生命期重新置为初始值k;步骤八、调用分析处理程序,从缓冲区PInBuffer中将排好序的连续字节数据取出,分析处理程序返回取出的字节数m;步骤九、判断条件m > 0是否成立,判断结果为是,执行步骤十,判断结果为否,结束本次操作,返回步骤一接收下一个节目数据包; 步骤十、删除缓冲区PInBuffer中的前m个字节数据,并更新缓冲区PInBuffer的状态信息;重复执行步骤一至步骤十,同时系统周期的将节目的生命周期做减法操作,直至该节目的生命周期小于等于0,表示该节目下载完毕,释放该节目所占用的缓冲区,完成对该节目的数据缓存排序的在线处理。
2.根据权利要求1所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,获 取所述节目数据包与所有缓冲区的距离中的最小距离iMinDist的过程为按如下公式计算节目数据包与每个缓冲区块的距离伪‘对 伪 对=min (数据包偏移量+数据包长度一缓冲区原始偏移量,数据包偏移量一缓冲区目前偏移量一缓冲区长度), 其中,缓冲区原始偏移量是指缓冲区刚刚申请到时,所保存的第一个数据包的偏移量,即, 缓冲区获取后保存的第一个字节数据的偏移量;缓冲区目前偏移量是指目前缓冲区中第一个字节数据对应的偏移量, 将数据包与每个缓冲区块的距离伪‘对中的最小值作为节目数据包与所有缓冲区的距 离中的最小距离iMinDist。
3.根据权利要求1所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,步 骤五缓冲区数量上限的设置方法为创建时缓冲区的数量缓冲区数量上限=系统需要同时下载节目的数量上限’ 其中《力大于1的系数,并根据缓冲池利用率动态调整其数值。
4.根据权利要求3所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,a 的动态调整过程为当缓冲池利用率n小于阈值声时,按一定幅度增加a的数值,如5% 50%; 当缓冲池利用率n超过阈值声时,按一定幅度减小a的数值,如10% 50% ; 其中,缓冲池利用率n按如下公式计算<formula>formula see original document page 3</formula> 阈值b的数值取0. 6 0.9。
5.根据权利要求1所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,步 骤六申请新的缓冲区的方法为从缓冲池中缓冲区链表的头部或尾部取下一个缓冲区作为节目下载数据的新的缓冲区。
6.根据权利要求1所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,释 放该节目所占用的缓冲区的方法为当一个节目下载、处理完毕,将该节目申请的所有缓冲区依次挂到缓冲池中缓冲区链 表的尾部或头部。
7.根据权利要求1所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,将 所述节目数据包中的下载数据存入缓冲区PInBuffer中的过程为步骤a、判断节目数据包的数据与缓冲区PInBuffer内已有数据是否不连续,即是否存 在空白块,判断结果为是,则记录空白块的起始位置和长度,然后分别执行步骤b和步骤c, 判断结果为否,则执行步骤d,再执行步骤f,步骤b、判断节目数据包中的数据与缓冲区PInBuffer内的已有的空白块是否有交叠, 判断结果为是,则修正相应空白块的位置和长度,然后执行步骤d, 判断结果为否,则执行步骤d,步骤c、判断节目数据包中的数据是否覆盖缓冲区PInBuffer内的已有的空白块,CN 101834801 A权禾丨j 要求书3/3页判断结果为是,删除该空白块,然后执行步骤d, 判断结果为否,执行步骤d,步骤d、将所述节目数据包写入缓冲区PInBuffer内, 步骤e、在缓冲区PInBuffer中具有空白块的情况下,判断缓冲区PInBuffer的空闲率 是否小于空闲率阈值下限^///^WL^z/FwWl取50% 85%,判断结果为是,将第一个空白块和第一块空白块之前的数据移出缓冲区PInBuffer,结 束本次操作,判断结果为否,结束本次操作,步骤f、在缓冲区PInBuffer中无空白块的情况下,判断缓冲区PInBuffer的空闲率是 否小于空闲率阈值上限^//FWM,^///^//2取90% 95%,判断结果为是,将缓冲区PInBuffer中的前力个字节数据移除,结束本次操作,判断结 果为否,结束本次操作,其中,力按如下公式计算h = cxBifferSize ,上式中的C为比例系数阈值,满足如下关系BufFulll满足条件
全文摘要
基于缓冲池的数据缓存排序在线处理方法,属于互联网领域,为了解决目前常见的多线程下载软件对于下载数据乱序和重复的节目批量并发下载,不能实现基于内存的下载数据在线缓存、排序和去重,因而无法支持实时在线的识别、检索等处理的问题。本发明将所有缓冲区组织成缓冲区池,采用多个缓冲区缓存同一节目的下载数据。在接收节目数据包后,先查询节目的下载日志,若无新数据则丢弃不做任何处理,否则首先选择合适的节目已有缓冲区接收数据,若无合适缓冲区且允许的情况下,申请新缓冲区接收数据;然后更新下载日志;最后调用分析处理模块将该缓冲区中排好的数据取走处理。重复上述过程,直至节目下载完成,将节目分配的缓冲区释放到缓冲区池中。
文档编号H04L12/56GK101834801SQ201010177960
公开日2010年9月15日 申请日期2010年5月20日 优先权日2010年5月20日
发明者刘峰, 吴震, 周渊, 姜涛, 张冰, 郑贵滨, 郑铁然, 陈训逊, 韩纪庆 申请人:哈尔滨工业大学;国家计算机网络与信息安全管理中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1