CN102456076A - 海量片段数据汇聚的系统和方法 - Google Patents
海量片段数据汇聚的系统和方法 Download PDFInfo
- Publication number
- CN102456076A CN102456076A CN2011103751672A CN201110375167A CN102456076A CN 102456076 A CN102456076 A CN 102456076A CN 2011103751672 A CN2011103751672 A CN 2011103751672A CN 201110375167 A CN201110375167 A CN 201110375167A CN 102456076 A CN102456076 A CN 102456076A
- Authority
- CN
- China
- Prior art keywords
- fragment
- data
- file
- fragment data
- module
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明针对两种海量片段数据分别公开了海量片段数据汇聚的系统,包括客户端的片段上传模块,服务器端的缓存模块、验证库模块、文件存储模块、片段接收模块、片段处理模块、片段合并模块、片段汇聚模块;相应的本发明还分别公开了海量片段数据汇聚的方法。本发明采用消息队列服务、内存库、文件型数据库及守护进程等多种技术,能够高效的处理和合并海量片段数据。并采用严谨的合并策略,保证合并的正确性。
Description
技术领域
本发明涉及计算机数据库领域,尤其涉及一种对海量片段数据进行处理,对其合并和汇聚的系统和方法。
背景技术
在计算机领域中有这样一类文件,称其为片段,它们是某个整体文件或数据的一部分。且分为两种:
1、片段自身无独立意义,必须完全合并后,组成的整体才有意义。例如多媒体文件:图片、视频、音乐。当上传时,为了上传速度快,以及少占用网络带宽,将其拆分为若干个小文件片段,然后分别上传这个文件片段,服务器端接收片段后,将其按照一定的规则合并。将合并后的完整文件保存在服务器端。
此类片段是:
先有整体——切割为个体——上传到服务器端——服务器端将其重新汇聚为整体
2、片段自身可以有独立意义,合并成后的完整文件也有意义。如包含数据信息的文本文件(xml格式等),这些文本文件可以单独产生,可以单独阅读和使用,而将其合并后,合并后的完整文本则是其它信息的合集。可以整体使用。
此类片段是:
先有个体——上传到服务器端——服务器端将其汇聚为整体
以上两种片段文件的数量都是不定的,由于上传片段的客户端不同,以及网络延时等原因,服务器端也是无序接收到这些片段的。
因此对于此类文件,不仅其片段需要统计分析和保存,还需将其按照一定规则进行合并。对合并后的最终结果再进行相应处理和保存。
当海量该类无序片段数据需要处理时,不仅需要处理的单个片段多,而且涉及到片段的合并规则,合并后的二次分析、统计以及保存,并且需要保证合并的正确性,单个片段需要验重,保证相同的片段只能被合并一次。不能将不是一个整体的片段合并为一体,因此这是一个复杂的处理过程,因此需要一种高效、快速、逻辑清晰的方法或框架。
发明内容
为了解决上述技术问题,本发明提供了一种海量片段数据汇聚的系统和方法,本发明采用消息队列服务、内存库、文件型数据库及守护进程等多种技术,能够高效的处理和合并海量片段数据。并采用严谨的合并策略,保证合并的正确性。
首先是针对第一种(片段自身无独立意义)海量片段数据的处理:
1、由于片段是某一文件的一部分,因此要带有此文件的唯一标识,好能通过此唯一标识识别出此片段属于哪个文件。本文称其为父ID,将父ID作为上传的片段文件名,每个片段上传时都带有此父ID。此ID将伴随片段数据走完整个处理流程。
2、对于第一种片段(片段自身无独立意义),即被切割为片段的,将被切割的原始文件的MD5值作为文件的唯一标识, 即片段的父ID
3、服务器端接收到片段后,按照片段的MD5值到片段缓存库中进行验重,如果此片段在缓存库中已有,则不处理。即节省了服务器资源,又保证了不重复合并。合并时按照父ID进行合并,即将具有相同父ID的片段合并在一起。
对于第一种海量片段数据,本发明提供了一种海量片段数据汇聚的系统,包括客户端的片段上传模块,服务器端的缓存模块、验证库模块、文件存储模块、片段接收模块、片段处理模块、片段合并模块、片段汇聚模块;
所述片段上传模块将片段数据上传到服务器端,所述片段数据带有片段数据信息,包括片段数据的父ID,所述片段数据的父ID为片段数据所属文件的HASH值;
其中,此模块部署在客户端,按照策略,每个片段都带有父ID,然后将片段上传到服务器端。
所述缓存模块包括3个消息队列,片段数据队列、待合并片段队列和合并结果待处理队列;所述消息队列采用后进先出的原则。
其中,
片段数据队列:片段数据队列存放接收后未作任何处理的片段数据,队列采用后进先出的原则。
待合并片段队列:待合并片段队列存放验重后,等待合并操作的片段数据。队列采用后进先出的原则。
合并结果待处理队列:队列存放已合并后的数据信息,队列采用后进先出的原则。
为了提高队列的读取和写入速度,此处可使用内存级缓存库。
所述验证库模块存放已接收片段数据的HASH值;
其中,此处存放的是验重后的。数据不会有冗余。
所述文件存储模块包括三部分,文件位置库、文件缓存库和文件最终存储库;
所述文件位置库记录已接收到的片段数据信息,以及合并后的文件存放的位置是在文件缓存库中或者在文件最终存储中;文件缓存库存放尚未包含所有片段的文件;文件最终存储库保存包含所有片段的文件;
其中,片段最终处理结果都是文件,互相之间都是独立的,没有复杂的关系,且是海量级别的数据,因而不适合存储在传统的关系型数据库中。所以将其存储于文件型数据库中。
文件可以按访问频度分为两种,一种是尚未合并完全部片段的文件,这样的文件在之后的处理过程中会被经常的读取和更新,通常称之为热数据。另一种是合并完全部片段的文件,以后读取和更新的频度较低,称之为冷数据。
热数据在所有文件数据中所占的比率较低,且读写频繁,所以将其存放在速度较快但空间有限的缓存库中较好。
冷数据比率较高,读写次数有限,所以将其存放在速度一般但空间充足的文件级存储中较好。
因此文件存储模块分三部分:文件位置库、文件缓存库和文件最终存储。
文件位置库记录已接收到的文件的片段信息,以及合并后的文件存放的位置,是存放在文件缓存库中还是文件最终存储中。
文件缓存库存放尚未包含所有片段的文件,即热数据。
文件最终存储上保存包含所有片段的文件,即冷数据。
所述片段接收模块接收客户端上传的片段数据并存入片段数据队列队尾;
也就是说,片段接收模块主要是接收上传的片段, 接收的片段的接口可以采用http、https、ssh、ftp、smb等服务。服务接收到片段后,将此片段存入片段数据队列队尾。片段接收模块不做其它工作,保证接收模块的高效性,能够实时接收所有其它服务传送过来的片段,将其放入队列中缓存并等待被处理。不会造成因为片段处理不过来,而无法接收新的片段。
所述片段处理模块从片段数据队列队头获取片段数据,并计算所述片段数据的HASH值,验证所述HASH值是否已经存放在验证库模块中,如果是则丢弃所述片段数据,否则将所述片段数据的HASH值存入验证库模块,并将所述片段数据存入待合并片段队列队尾;
例如,从片段数据队列队头获取片段,并对片段数据做MD5,将其MD5值向片段验证库验证该片段是否已经接收过,如果片段验证库中有此MD5值,则此片段已经接收过,则不再重复处理此片段。减少冗余数据对系统的压力。若无此MD5值,则此片段没有接收过,先将此片段的MD5值存入片段验证库,以便下次验证,然后将此片段存入待合并片段队列队尾。
所述片段合并模块从待合并片段队列队头获取片段数据,如果所获取的片段数据父ID未存在于文件位置库中,则将所述片段数据存入文件缓存库、文件位置库记录所述片段数据信息;否则从文件缓存库中取出与所述片段数据父ID相同的文件数据和所述片段数据进行合并,并将合并后的文件数据存入合并结果待处理队列队尾;
也就是说,从待合并片段队列队头获取数据,先从文件位置库(内存库)查看此片段的父ID是否存在,若不存在,则表明此文件的片段第一次来,因而此文件只有一个片段,不需要合并操作,将片段作为初始文件存入文件缓存库。若此片段的父ID存在,则从文件缓存库中将此文件已合并的结果取出,并和刚从队列取出的片段进行合并,并将结果存入合并结果待处理队列队尾。
所述片段汇聚模块从合并结果待处理队列队头获取文件数据,计算所述文件数据的HASH与文件数据的父ID进行对比,若所述文件数据的HASH与文件数据的父ID不相等,则将所述文件数据存入文件缓存库;否则若所述文件数据的HASH与文件数据的父ID相等,则将所述文件数据存入文件最终存储库,并更新所述文件数据在文件位置库中的位置信息。
例如,从合并结果待处理队列队头获取数据,将合并结果数据做MD5运算,然后跟父ID进行对比,若此MD5值和父ID不相等,则说明还有片段没有合并,所以此文件合并尚未完成,将此数据存入文件缓存库。若MD5值跟父ID相同,则表明文件的所有片段都以合并完成,将此数据存入文件最终存储库,并将最终结果数据存入数据库。并更新文件位置库中该父文件的位置。
相应的本发明还提供了一种海量片段数据汇聚的方法,适用上述的系统,所述方法包括:
片段上传模块将片段数据上传给片段接收模块,所述片段数据带有片段数据信息,包括片段数据的父ID,所述片段数据的父ID为片段数据所属文件的HASH值;
片段接收模块接收片段上传模块上传的片段数据并存入片段数据队列队尾;
片段处理模块从片段数据队列队头获取片段数据,并计算所述片段数据的HASH值,验证所述HASH值是否已经存放在验证库模块中,如果是则丢弃所述片段数据,否则将所述片段数据的HASH值存入验证库模块,并将所述片段数据存入待合并片段队列队尾;
片段合并模块从待合并片段队列队头获取片段数据,如果所获取的片段数据父ID未存在于文件位置库中,则将所述片段数据存入文件缓存库、文件位置库记录所述片段数据信息;否则从文件缓存库中取出与所述片段数据父ID相同的文件数据和所述片段数据进行合并,并将合并后的文件数据存入合并结果待处理队列队尾;
片段汇聚模块从合并结果待处理队列队头获取文件数据,计算所述文件数据的HASH与文件数据的父ID进行对比,若所述文件数据的HASH与文件数据的父ID不相等,则将所述文件数据存入文件缓存库;否则若所述文件数据的HASH与文件数据的父ID相等,则将所述文件数据存入文件最终存储库,并更新所述文件数据在文件位置库中的位置信息。
进一步的,所述消息队列采用后进先出的原则。
进一步的,所述文件存储模块为文件型数据库。
进一步的,所述片段接收模块接收片段上传模块上传的片段数据的接口采用的服务包括http、https、ssh、ftp、smb。
其次针对第二种(片段自身可以有独立意义,合并成后的完整文件也有意义)海量片段数据的处理:
1、由于片段是某一文件的一部分,因此要带有此文件的唯一标识,好能通过此唯一标识识别出此片段属于哪个文件。本文称其为父ID,将父ID作为上传的片段文件名,每个片段上传时都带有此父ID。此ID将伴随片段数据走完整个处理流程。
2、对于第二种片段(片段自身可以有独立意义,合并成后的完整文件也有意义),是先有片段后有整体文件的,可以按照一定策略来生成父ID,例如浪型时间或者其它能保证唯一性的HASH值。同时有独立意义的片段也有其片段标识,例如xml格式的片段,其内容是文件的基本信息,可将此类片段的片段标识 命名为identify_hash,因此一个文件可能包含有若干个片段标识为identify_a,identify_b。。。identify_n的片段。
此片段文件上传时也许将此片段标识信息附带上传。
同时一个文件可能上传了多个具有相同片段标识的片段,此时可以根据预定的重复片段处理策略来处理这些具有相同片段标识的片段,重复片段处理策略有以下三种:
A、 覆盖:新来片段的片段标识和已有的重复,则覆盖掉原有的片段,保证每个片段标识的片段在每个文件中唯一。
B、过滤:新来片段的片段标识和已有的重复,直接丢弃,不处理。
C、合并:新来片段的片段标识和已有的重复,将新片段也合并到文件中,这样一个文件中可能具有多个具有相同片段标识的片段
3、服务器端接收到片段后,按照片段的片段标识到片段缓存库中进行验重,同时根据验重策略进行处理 。可以灵活处理多种情况,保证最终合并结果的正确性。合并时按照父ID进行合并,即将具有相同父ID的片段合并在一起。
为此本发明提供了一种海量片段数据汇聚的系统,包括客户端的片段上传模块,服务器端的缓存模块、验证库模块、文件存储模块、片段接收模块、片段处理模块、片段合并模块、片段汇聚模块;
所述片段上传模块将片段数据上传到服务器端,所述片段数据带有片段数据信息,包括片段数据的父ID和片段数据标识,所述片段数据的父ID为片段数据可形成的整体文件的HASH值,所述数据片段标识为每个整体文件中包含的片段数据的唯一标识;
其中,此模块部署在客户端,按照策略,每个片段都带有父ID,然后将片段上传到服务器端。
所述缓存模块包括3个消息队列,片段数据队列、待合并片段队列和合并结果待处理队列;
其中,
片段数据队列:片段数据队列存放接收后未作任何处理的片段数据,队列采用后进先出的原则。
待合并片段队列:待合并片段队列存放验重后,等待合并操作的片段数据。队列采用后进先出的原则。
合并结果待处理队列:队列存放已合并后的数据信息,队列采用后进先出的原则。
为了提高队列的读取和写入速度,此处可使用内存级缓存库。
所述验证库模块存放已接收片段数据的片段数据标识以及片段数据标识合集,所述合集是指一定数量的可合并为完整的整体文件的片段数据的片段数据标识;
其中,此处存放的是验重后的。数据不会有冗余。验证库还存放所有片段标识的合集,即一个文件应该有多少个不同片段标识的片段才算完整,如果一个文件接收到了片段标识合集里的所有片段,则表明此文件合并完成。
所述文件存储模块包括三部分,文件位置库、文件缓存库和文件最终存储库;
所述文件位置库记录已接收到的片段数据信息,以及合并后的文件存放的位置是在文件缓存库中或者在文件最终存储中;文件缓存库存放尚未包含所有片段的文件;文件最终存储库保存包含所有片段的文件;
其中,片段最终处理结果都是文件,互相之间都是独立的,没有复杂的关系,且是海量级别的数据,因而不适合存储在传统的关系型数据库中。所以将其存储于文件型数据库中。
文件可以按访问频度分为两种,一种是尚未合并完全部片段的文件,这样的文件在之后的处理过程中会被经常的读取和更新,通常称之为热数据。另一种是合并完全部片段的文件,以后读取和更新的频度较低,称之为冷数据。
热数据在所有文件数据中所占的比率较低,且读写频繁,所以将其存放在速度较快但空间有限的缓存库中较好。
冷数据比率较高,读写次数有限,所以将其存放在速度一般但空间充足的文件级存储中较好。
因此文件存储模块分三部分:文件位置库、文件缓存库和文件最终存储。
文件位置库记录已接收到的文件的片段信息,以及合并后的文件存放的位置,是存放在文件缓存库中还是文件最终存储中。
文件缓存库存放尚未包含所有片段的文件,即热数据。
文件最终存储上保存包含所有片段的文件,即冷数据。
所述片段接收模块接收客户端上传的片段数据并存入片段数据队列队尾;
也就是说,片段接收模块主要是接收上传的片段, 接收的片段的接口可以采用http、https、ssh、ftp、smb等服务。服务接收到片段后,将此片段存入片段数据队列队尾。片段接收模块不做其它工作,保证接收模块的高效性,能够实时接收所有其它服务传送过来的片段,将其放入队列中缓存并等待被处理。不会造成因为片段处理不过来,而无法接收新的片段。
所述片段处理模块从片段数据队列队头获取片段数据,并验证片段数据标识是否已经存放在验证库模块中,如果是则根据重复片段数据处理策略,进行相应处理,否则将所述片段数据标识存入验证库模块,并将所述片段数据存入待合并片段队列队尾;
也就是说,从片段数据队列队头获取片段,并将附带的片段标识向片段验证库验证该片段是否已经接收过,如果片段验证库中该父ID的文件有此片段标识,则此片段标识的片段已经接收过,然后根据重复片段处理策略,进行相应处理。若此片段没有接收过,先将此片段的片段标识存入片段验证库,以便下次验证,然后将此片段存入待合并片段队列队尾。
所述片段合并模块从待合并片段队列队头获取片段数据,如果所获取的片段数据父ID未存在于文件位置库中,则将所述片段数据存入文件缓存库、文件位置库记录所述片段数据信息;否则从文件缓存库中取出与所述片段数据父ID相同的文件数据和所述片段数据进行合并,并将合并后的文件数据存入合并结果待处理队列队尾;
也就是说,从待合并片段队列队头获取数据,先从文件位置库(内存库)查看此片段的父ID是否存在,若不存在,则表明此文件的片段第一次来,因而此文件只有一个片段,不需要合并操作,将片段作为初始文件存入文件缓存库。若此片段的父ID存在,则从文件缓存库中将此文件已合并的结果取出,并和刚从队列取出的片段进行合并,并将结果存入合并结果待处理队列队尾。
所述片段汇聚模块从合并结果待处理队列队头获取文件数据,将所述文件数据的所有片段数据标识与验证库模块中的片段标识合集进行对比,若所述文件数据的所有片段数据标识与验证库模块中的片段标识合集不相等,则将所述文件数据存入文件缓存库;否则若所述文件数据的所有片段数据标识与验证库模块中的片段标识合集相等,则将所述文件数据存入文件最终存储库,并更新所述文件数据在文件位置库中的位置信息。
也就是说,从合并结果待处理队列队头获取数据,将该文件的所有片段的片段标识合集跟缓存库中 片段标识合集进行对比,若两者不相等,则说明还有片段没有合并,所以此文件合并尚未完成,将此数据存入文件缓存库。若两者相同,则表明文件的所有片段都以合并完成,将此数据存入文件最终存储库,并将最终结果数据存入数据库。并更新文件位置库中该父文件的位置。
相应的本发明还提供了一种海量片段数据汇聚的方法,适用于上述的系统,所述方法包括:
片段上传模块将片段数据上传给片段接收模块,所述片段数据带有片段数据信息,包括片段数据的父ID和片段数据标识,所述片段数据的父ID为片段数据可形成的整体文件的HASH值,所述数据片段标识为每个整体文件中包含的片段数据的唯一标识;
片段接收模块接收片段上传模块上传的片段数据并存入片段数据队列队尾;
片段处理模块从片段数据队列队头获取片段数据,并验证片段数据标识是否已经存放在验证库模块中,如果是则根据重复片段数据处理策略,进行相应处理,否则将所述片段数据标识存入验证库模块,并将所述片段数据存入待合并片段队列队尾;
片段合并模块从待合并片段队列队头获取片段数据,如果所获取的片段数据父ID未存在于文件位置库中,则将所述片段数据存入文件缓存库、文件位置库记录所述片段数据信息;否则从文件缓存库中取出与所述片段数据父ID相同的文件数据和所述片段数据进行合并,并将合并后的文件数据存入合并结果待处理队列队尾;
片段汇聚模块从合并结果待处理队列队头获取文件数据,将所述文件数据的所有片段数据标识与验证库模块中的片段标识合集进行对比,若所述文件数据的所有片段数据标识与验证库模块中的片段标识合集不相等,则将所述文件数据存入文件缓存库;否则若所述文件数据的所有片段数据标识与验证库模块中的片段标识合集相等,则将所述文件数据存入文件最终存储库,并更新所述文件数据在文件位置库中的位置信息。
进一步的,所述消息队列采用后进先出的原则。
进一步的,所述文件存储模块为文件型数据库。
进一步的,所述片段接收模块接收片段上传模块上传的片段数据的接口采用的服务包括http、https、ssh、ftp、smb。
进一步的,所述重复片段数据处理策略包括覆盖重复的片段数据、丢弃复的片段数据、合并重复的片段数据。
本发明的有益效果是:
本系统的合并策略简单、高效,能够保证海量片段数据汇聚的正确性。
系统各个模块之间通过消息队列来传递数据,不直接通信,当单个模块节点出错或停止工作时,各个模块从消息队列实时读写数据,如果两者处理速度不同,则数据只是暂时积压在消息队列中。这样整个处理流程可以不间断的进行,且读写的各个模块互不干扰,不会影响到其它模块的正常工作。同时可以根据监控各个消息队列的队列信息来获取当前系统的运行情况。
片段处理模块、片段合并模块和片段汇聚模块的数量不是固定的,可以动态增加和减少。通过实时的监控各个消息队列的长度来动态的增加和减少相应模块的数量。增加了系统的灵活性,并可动态提高整个系统的处理性能。
文件存储模块采用位置库记录文件存储位置及相应信息,读写性能高文件缓存库存放热数据,读写性能稍差的文件最终存储存放冷数据。即提升了各个模块读取和写入文件的效率,提升了整个系统的功能,并最大程度上有效的利用了服务器资源。节约了成本。
系统的存储和缓存库都使用非关系型数据库替代传统的关系型数据库,非关系型数据库相比于关系型数据库,读写性能优越很多。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种海量片段数据汇聚的系统示意图;
图2为本发明针对第一种片段数据的海量片段数据汇聚的方法流程图;
图3为本发明针对第二种片段数据的海量片段数据汇聚的方法流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。
如图1所示,为本发明一种海量片段数据汇聚的系统示意图,包括客户端的片段上传模块101,服务器端的缓存模块102、验证库模块103、文件存储模块104、片段接收模块105、片段处理模块106、片段合并模块107、片段汇聚模块108;
其中,文件存储模块104包括三部分,文件位置库1041、文件缓存库1042和文件最终存储库1043。
本说明书中方法的实施例采用递进的方式描述,对于系统实施例而言,由于其基本相似于方法实施例,针对两种海量片段数据的情况,系统的具体内容前文已经阐述的很清楚,所以描述的比较简单,相关之处参见前文的描述和方法实施例的部分说明即可。
下面针对两种海量片段数据的情况,详细说明方法实施例的流程:
如图2所示,为本发明针对第一种片段数据的海量片段数据汇聚的方法实施例流程图,包括:
S201:上传片段:上传模块将带有父ID信息的片段上传给接收模块,可以通过http、https、ssh、ftp、smb等服务上传。
S202:接收片段:接收模块接收到片段后,将此片段存入片段数据队列队尾。
S203:初步处理:片段处理模块从片段数据队列队头获取片段。
S204:片段验证:对片段数据做MD5值计算,将MD5值结果向片段验证库验证该片段是否已经接收过,
如果片段验证库中有此MD5值,则此片段已经接收过,则不再重复处理此片段。转至S212,此片段处理结束,减少冗余数据对系统的压力。
若无此MD5值,则此片段没有接收过,先将此片段的MD5值存入片段验证库,以便下次验证,然后将此片段存入待合并片段队列队尾。
S205:合并片段:片段合并模块从待合并片段队列队头获取数据。
S206:查询父ID是否存在:片段合并模块从文件位置库查看此片段的父ID是否存在。
若不存在,则表明此文件的片段第一次来,因而此文件只有一个片段,不需要合并操作,转至S210。
若此片段的父ID存在,转至S207。
S207:从文件缓存库取数据,进行合并:片段合并模块从文件缓存库中将此文件已合并的结果取出,并和刚从队列取出的片段进行合并,并将结果存入合并结果待处理队列队尾。
S208:片段汇聚:片段汇聚模块从合并结果待处理队列队头获取数据。
S209:判断合并后的MD5值与父ID是否相等:片段汇聚模块将合并结果数据做MD5运算,然后跟父ID进行对比。
若此MD5值和父ID不相等,则说明还有片段没有合并,所以此文件合并尚未完成,转至S210。
若MD5值跟父ID相同,则表明文件的所有片段都以合并完成,转至S211。
S210:存入文件缓存库:将合并完的文件或片段存入文件缓存库。
S211:存入文件最终存储:将此数据存入文件最终存储,并更新文件位置库中该父文件的位置。
S212:片段处理完成.
如图3所示,为本发明针对第二种片段数据的海量片段数据汇聚的方法实施例流程图,具体包括:
S301:上传片段:上传模块将带有父ID信息和片段标识信息的片段上传给接收模块,可以通过http、https、ssh、ftp、smb等服务上传。
S302:接收片段:接收模块接收到片段后,将此片段存入片段数据队列队尾。
S303:初步处理:片段处理模块从片段数据队列队头获取片段。
S304:查询父ID是否存在:片段合并模块从文件位置库查看此片段的父ID是否存在。
若不存在,则表明此文件的片段第一次来,因而此文件只有一个片段,不需要合并操作,转至S312。
若此片段的父ID存在,转至S305。
S305:片段验证:将片段标识信息向片段验证库验证该片段是否已经接收过,若接收过,转至S306。若没有接收过,转至S310。
S306:查看并加载重复片段处理策略:
若策略为合并,则转至S308。若策略为覆盖,则转至S309。若策略为过滤,则转至S314。
S307:合并片段:片段合并模块从待合并片段队列队头获取数据。
S308:从文件缓存库取数据,进行合并:片段合并模块从文件缓存库中将此文件已合并的结果取出,并和刚从队列取出的片段进行合并,并将结果存入合并结果待处理队列队尾。
S309:从文件缓存库取数据,进行覆盖:片段合并模块从文件缓存库中将此文件已合并的结果取出,并用从队列取出的片段替换已合并结果中之前相同片段的信息,并将结果存入合并结果待处理队列队尾。
S310:片段汇聚:片段汇聚模块从合并结果待处理队列队头获取数据。
S311:判断文件是否完全合并:将该文件的所有片段的片段标识合集跟缓存库中 片段标识合集进行对比,若两者不相等,则说明还有片段没有合并,所以此文件合并尚未完成,转至S312。若两者相同,则表明文件的所有片段都以合并完成,转至S313。
S312:存入文件缓存库:将合并完的文件或片段存入文件缓存库。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。
Claims (18)
1.一种海量片段数据汇聚的系统,其特征在于,包括客户端的片段上传模块,服务器端的缓存模块、验证库模块、文件存储模块、片段接收模块、片段处理模块、片段合并模块、片段汇聚模块;
所述片段上传模块将片段数据上传到服务器端,所述片段数据带有片段数据信息,包括片段数据的父ID,所述片段数据的父ID为片段数据所属文件的HASH值;
所述缓存模块包括3个消息队列,片段数据队列、待合并片段队列和合并结果待处理队列;
所述验证库模块存放已接收片段数据的HASH值;
所述文件存储模块包括三部分,文件位置库、文件缓存库和文件最终存储库;
所述文件位置库记录已接收到的片段数据信息,以及合并后的文件存放的位置是在文件缓存库中或者在文件最终存储中;文件缓存库存放尚未包含所有片段的文件;文件最终存储库保存包含所有片段的文件;
所述片段接收模块接收客户端上传的片段数据并存入片段数据队列队尾;
所述片段处理模块从片段数据队列队头获取片段数据,并计算所述片段数据的HASH值,验证所述HASH值是否已经存放在验证库模块中,如果是则丢弃所述片段数据,否则将所述片段数据的HASH值存入验证库模块,并将所述片段数据存入待合并片段队列队尾;
所述片段合并模块从待合并片段队列队头获取片段数据,如果所获取的片段数据父ID未存在于文件位置库中,则将所述片段数据存入文件缓存库、文件位置库记录所述片段数据信息;否则从文件缓存库中取出与所述片段数据父ID相同的文件数据和所述片段数据进行合并,并将合并后的文件数据存入合并结果待处理队列队尾;
所述片段汇聚模块从合并结果待处理队列队头获取文件数据,计算所述文件数据的HASH与文件数据的父ID进行对比,若所述文件数据的HASH与文件数据的父ID不相等,则将所述文件数据存入文件缓存库;否则若所述文件数据的HASH与文件数据的父ID相等,则将所述文件数据存入文件最终存储库,并更新所述文件数据在文件位置库中的位置信息。
2.如权利要求1所述的系统,其特征在于,所述消息队列采用后进先出的原则。
3.如权利要求1所述的系统,其特征在于,所述文件存储模块为文件型数据库。
4.如权利要求1所述的系统,其特征在于,所述片段接收模块接收客户端上传的片段数据的接口采用的服务包括http、https、ssh、ftp、smb。
5.一种海量片段数据汇聚的方法,其特征在于,适用于权利要求1所述的系统,所述方法包括:
片段上传模块将片段数据上传给片段接收模块,所述片段数据带有片段数据信息,包括片段数据的父ID,所述片段数据的父ID为片段数据所属文件的HASH值;
片段接收模块接收片段上传模块上传的片段数据并存入片段数据队列队尾;
片段处理模块从片段数据队列队头获取片段数据,并计算所述片段数据的HASH值,验证所述HASH值是否已经存放在验证库模块中,如果是则丢弃所述片段数据,否则将所述片段数据的HASH值存入验证库模块,并将所述片段数据存入待合并片段队列队尾;
片段合并模块从待合并片段队列队头获取片段数据,如果所获取的片段数据父ID未存在于文件位置库中,则将所述片段数据存入文件缓存库、文件位置库记录所述片段数据信息;否则从文件缓存库中取出与所述片段数据父ID相同的文件数据和所述片段数据进行合并,并将合并后的文件数据存入合并结果待处理队列队尾;
片段汇聚模块从合并结果待处理队列队头获取文件数据,计算所述文件数据的HASH与文件数据的父ID进行对比,若所述文件数据的HASH与文件数据的父ID不相等,则将所述文件数据存入文件缓存库;否则若所述文件数据的HASH与文件数据的父ID相等,则将所述文件数据存入文件最终存储库,并更新所述文件数据在文件位置库中的位置信息。
6.如权利要求5所述的方法,其特征在于,所述消息队列采用后进先出的原则。
7.如权利要求5所述的方法,其特征在于,所述文件存储模块为文件型数据库。
8.如权利要求5所述的方法,其特征在于,所述片段接收模块接收片段上传模块上传的片段数据的接口采用的服务包括http、https、ssh、ftp、smb。
9.一种海量片段数据汇聚的系统,其特征在于,包括客户端的片段上传模块,服务器端的缓存模块、验证库模块、文件存储模块、片段接收模块、片段处理模块、片段合并模块、片段汇聚模块;
所述片段上传模块将片段数据上传到服务器端,所述片段数据带有片段数据信息,包括片段数据的父ID和片段数据标识,所述片段数据的父ID为片段数据可形成的整体文件的HASH值,所述数据片段标识为每个整体文件中包含的片段数据的唯一标识;
所述缓存模块包括3个消息队列,片段数据队列、待合并片段队列和合并结果待处理队列;
所述验证库模块存放已接收片段数据的片段数据标识以及片段数据标识合集,所述合集是指一定数量的可合并为完整的整体文件的片段数据的片段数据标识;
所述文件存储模块包括三部分,文件位置库、文件缓存库和文件最终存储库;
所述文件位置库记录已接收到的片段数据信息,以及合并后的文件存放的位置是在文件缓存库中或者在文件最终存储中;文件缓存库存放尚未包含所有片段的文件;文件最终存储库保存包含所有片段的文件;
所述片段接收模块接收客户端上传的片段数据并存入片段数据队列队尾;
所述片段处理模块从片段数据队列队头获取片段数据,并验证片段数据标识是否已经存放在验证库模块中,如果是则根据重复片段数据处理策略,进行相应处理,否则将所述片段数据标识存入验证库模块,并将所述片段数据存入待合并片段队列队尾;
所述片段合并模块从待合并片段队列队头获取片段数据,如果所获取的片段数据父ID未存在于文件位置库中,则将所述片段数据存入文件缓存库、文件位置库记录所述片段数据信息;否则从文件缓存库中取出与所述片段数据父ID相同的文件数据和所述片段数据进行合并,并将合并后的文件数据存入合并结果待处理队列队尾;
所述片段汇聚模块从合并结果待处理队列队头获取文件数据,将所述文件数据的所有片段数据标识与验证库模块中的片段标识合集进行对比,若所述文件数据的所有片段数据标识与验证库模块中的片段标识合集不相等,则将所述文件数据存入文件缓存库;否则若所述文件数据的所有片段数据标识与验证库模块中的片段标识合集相等,则将所述文件数据存入文件最终存储库,并更新所述文件数据在文件位置库中的位置信息。
10.如权利要求9所述的系统,其特征在于,所述消息队列采用后进先出的原则。
11.如权利要求9所述的系统,其特征在于,所述文件存储模块为文件型数据库。
12.如权利要求9所述的系统,其特征在于,所述片段接收模块接收客户端上传的片段数据的接口采用的服务包括http、https、ssh、ftp、smb。
13.如权利要求9所述的系统,其特征在于,所述重复片段数据处理策略包括覆盖重复的片段数据、丢弃重复的片段数据、合并重复的片段数据。
14.一种海量片段数据汇聚的方法,其特征在于,适用于权利要求9所述的系统,所述方法包括:
片段上传模块将片段数据上传给片段接收模块,所述片段数据带有片段数据信息,包括片段数据的父ID和片段数据标识,所述片段数据的父ID为片段数据可形成的整体文件的HASH值,所述数据片段标识为每个整体文件中包含的片段数据的唯一标识;
片段接收模块接收片段上传模块上传的片段数据并存入片段数据队列队尾;
片段处理模块从片段数据队列队头获取片段数据,并验证片段数据标识是否已经存放在验证库模块中,如果是则根据重复片段数据处理策略,进行相应处理,否则将所述片段数据标识存入验证库模块,并将所述片段数据存入待合并片段队列队尾;
片段合并模块从待合并片段队列队头获取片段数据,如果所获取的片段数据父ID未存在于文件位置库中,则将所述片段数据存入文件缓存库、文件位置库记录所述片段数据信息;否则从文件缓存库中取出与所述片段数据父ID相同的文件数据和所述片段数据进行合并,并将合并后的文件数据存入合并结果待处理队列队尾;
片段汇聚模块从合并结果待处理队列队头获取文件数据,将所述文件数据的所有片段数据标识与验证库模块中的片段标识合集进行对比,若所述文件数据的所有片段数据标识与验证库模块中的片段标识合集不相等,则将所述文件数据存入文件缓存库;否则若所述文件数据的所有片段数据标识与验证库模块中的片段标识合集相等,则将所述文件数据存入文件最终存储库,并更新所述文件数据在文件位置库中的位置信息。
15.如权利要求14所述的方法,其特征在于,所述消息队列采用后进先出的原则。
16.如权利要求14所述的方法,其特征在于,所述文件存储模块为文件型数据库。
17.如权利要求14所述的方法,其特征在于,所述片段接收模块接收片段上传模块上传的片段数据的接口采用的服务包括http、https、ssh、ftp、smb。
18.如权利要求14所述的方法,其特征在于,所述重复片段数据处理策略包括覆盖重复的片段数据、丢弃重复的片段数据、合并重复的片段数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103751672A CN102456076A (zh) | 2011-11-23 | 2011-11-23 | 海量片段数据汇聚的系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103751672A CN102456076A (zh) | 2011-11-23 | 2011-11-23 | 海量片段数据汇聚的系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102456076A true CN102456076A (zh) | 2012-05-16 |
Family
ID=46039264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103751672A Pending CN102456076A (zh) | 2011-11-23 | 2011-11-23 | 海量片段数据汇聚的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102456076A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917029A (zh) * | 2012-09-26 | 2013-02-06 | 东莞宇龙通信科技有限公司 | 云存储的实现方法及云存储系统 |
CN102916844A (zh) * | 2012-11-22 | 2013-02-06 | 南京恩瑞特实业有限公司 | 海量数据融合及实时监视系统 |
CN103646111A (zh) * | 2013-12-25 | 2014-03-19 | 普元信息技术股份有限公司 | 大数据环境下实现实时数据关联的系统及方法 |
CN103685559A (zh) * | 2013-12-27 | 2014-03-26 | 乐视网信息技术(北京)股份有限公司 | 服务器中的数据处理方法及系统 |
CN103701907A (zh) * | 2013-12-27 | 2014-04-02 | 乐视网信息技术(北京)股份有限公司 | 服务器中的数据续传的处理方法及系统 |
CN104967619A (zh) * | 2015-06-17 | 2015-10-07 | 深圳市腾讯计算机系统有限公司 | 文件推送方法、装置和系统 |
CN105989163A (zh) * | 2015-03-04 | 2016-10-05 | 中国移动通信集团福建有限公司 | 数据实时处理方法及系统 |
CN106651079A (zh) * | 2015-11-02 | 2017-05-10 | 财团法人资讯工业策进会 | 整合装置及其整合方法 |
CN106713512A (zh) * | 2017-03-03 | 2017-05-24 | 上海中兴电力建设发展有限公司 | 动态平衡物联网网络带宽的高效数据传输方法及系统 |
CN106921618A (zh) * | 2015-12-25 | 2017-07-04 | 瑞昱半导体股份有限公司 | 接收装置及其封包处理方法 |
CN107247632A (zh) * | 2016-10-20 | 2017-10-13 | 南京莱斯信息技术股份有限公司 | 非结构化数据、碎片化数据汇聚系统 |
CN107707599A (zh) * | 2017-05-26 | 2018-02-16 | 语祯物联科技(上海)有限公司 | 一种物联网通信设备传输文件的方法及装置 |
CN108647243A (zh) * | 2018-04-13 | 2018-10-12 | 中国神华能源股份有限公司 | 基于时间序列的工业大数据存储方法 |
CN108848060A (zh) * | 2018-05-17 | 2018-11-20 | 上海哔哩哔哩科技有限公司 | 一种多媒体文件处理方法、处理系统及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006331076A (ja) * | 2005-05-26 | 2006-12-07 | Hitachi Ltd | データ記憶システム及び記憶方法 |
CN101626389A (zh) * | 2008-07-12 | 2010-01-13 | Tcl集团股份有限公司 | 一种网络节点的管理方法 |
CN102055786A (zh) * | 2009-11-06 | 2011-05-11 | 腾讯科技(深圳)有限公司 | 一种文件下载的方法、服务器、下载端和系统 |
-
2011
- 2011-11-23 CN CN2011103751672A patent/CN102456076A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006331076A (ja) * | 2005-05-26 | 2006-12-07 | Hitachi Ltd | データ記憶システム及び記憶方法 |
CN101626389A (zh) * | 2008-07-12 | 2010-01-13 | Tcl集团股份有限公司 | 一种网络节点的管理方法 |
CN102055786A (zh) * | 2009-11-06 | 2011-05-11 | 腾讯科技(深圳)有限公司 | 一种文件下载的方法、服务器、下载端和系统 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917029B (zh) * | 2012-09-26 | 2015-08-12 | 东莞宇龙通信科技有限公司 | 云存储的实现方法及云存储系统 |
CN102917029A (zh) * | 2012-09-26 | 2013-02-06 | 东莞宇龙通信科技有限公司 | 云存储的实现方法及云存储系统 |
CN102916844A (zh) * | 2012-11-22 | 2013-02-06 | 南京恩瑞特实业有限公司 | 海量数据融合及实时监视系统 |
CN103646111B (zh) * | 2013-12-25 | 2017-02-15 | 普元信息技术股份有限公司 | 大数据环境下实现实时数据关联的系统及方法 |
CN103646111A (zh) * | 2013-12-25 | 2014-03-19 | 普元信息技术股份有限公司 | 大数据环境下实现实时数据关联的系统及方法 |
CN103685559A (zh) * | 2013-12-27 | 2014-03-26 | 乐视网信息技术(北京)股份有限公司 | 服务器中的数据处理方法及系统 |
CN103701907A (zh) * | 2013-12-27 | 2014-04-02 | 乐视网信息技术(北京)股份有限公司 | 服务器中的数据续传的处理方法及系统 |
CN105989163A (zh) * | 2015-03-04 | 2016-10-05 | 中国移动通信集团福建有限公司 | 数据实时处理方法及系统 |
CN104967619A (zh) * | 2015-06-17 | 2015-10-07 | 深圳市腾讯计算机系统有限公司 | 文件推送方法、装置和系统 |
US10805363B2 (en) | 2015-06-17 | 2020-10-13 | Tencent Technology (Shenzhen) Company Limited | Method, device and system for pushing file |
CN104967619B (zh) * | 2015-06-17 | 2018-09-04 | 深圳市腾讯计算机系统有限公司 | 文件推送方法、装置和系统 |
CN106651079A (zh) * | 2015-11-02 | 2017-05-10 | 财团法人资讯工业策进会 | 整合装置及其整合方法 |
CN106651079B (zh) * | 2015-11-02 | 2020-07-17 | 财团法人资讯工业策进会 | 整合装置及其整合方法 |
CN106921618A (zh) * | 2015-12-25 | 2017-07-04 | 瑞昱半导体股份有限公司 | 接收装置及其封包处理方法 |
CN106921618B (zh) * | 2015-12-25 | 2019-11-29 | 瑞昱半导体股份有限公司 | 接收装置及其封包处理方法 |
CN107247632A (zh) * | 2016-10-20 | 2017-10-13 | 南京莱斯信息技术股份有限公司 | 非结构化数据、碎片化数据汇聚系统 |
CN106713512B (zh) * | 2017-03-03 | 2020-07-07 | 上海枫昱能源科技有限公司 | 动态平衡物联网网络带宽的高效数据传输方法及系统 |
CN106713512A (zh) * | 2017-03-03 | 2017-05-24 | 上海中兴电力建设发展有限公司 | 动态平衡物联网网络带宽的高效数据传输方法及系统 |
CN107707599A (zh) * | 2017-05-26 | 2018-02-16 | 语祯物联科技(上海)有限公司 | 一种物联网通信设备传输文件的方法及装置 |
CN108647243A (zh) * | 2018-04-13 | 2018-10-12 | 中国神华能源股份有限公司 | 基于时间序列的工业大数据存储方法 |
CN108647243B (zh) * | 2018-04-13 | 2021-11-23 | 中国神华能源股份有限公司 | 基于时间序列的工业大数据存储方法 |
CN108848060A (zh) * | 2018-05-17 | 2018-11-20 | 上海哔哩哔哩科技有限公司 | 一种多媒体文件处理方法、处理系统及计算机可读存储介质 |
CN108848060B (zh) * | 2018-05-17 | 2021-08-24 | 上海哔哩哔哩科技有限公司 | 一种多媒体文件处理方法、处理系统及计算机可读存储介质 |
US11374995B2 (en) | 2018-05-17 | 2022-06-28 | Shanghai Bilibili Technology Co., Ltd. | Multimedia file processing |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102456076A (zh) | 海量片段数据汇聚的系统和方法 | |
US8904393B2 (en) | Transaction aggregation to increase transaction processing throughput | |
CN103106249B (zh) | 一种基于Cassandra的数据并行处理系统 | |
US9363322B1 (en) | Implementation of a web scale data fabric | |
US9128862B2 (en) | Efficient checksums for shared nothing clustered filesystems | |
CN107436725A (zh) | 一种数据写、读方法、装置及分布式对象存储集群 | |
CN101375241A (zh) | 集群文件系统中的有效数据管理 | |
CN104881466B (zh) | 数据分片的处理以及垃圾文件的删除方法和装置 | |
CN103530388A (zh) | 一种云存储系统中提升性能的数据处理方法 | |
US20160283479A1 (en) | Method and system for manipulating data | |
CN103020257A (zh) | 数据操作的实现方法和装置 | |
US10885085B2 (en) | System to organize search and display unstructured data | |
CN110019873B (zh) | 人脸数据处理方法、装置及设备 | |
CN110502583A (zh) | 分布式数据同步方法、装置、设备及可读存储介质 | |
CN103595571B (zh) | 网站访问日志的预处理方法、装置及系统 | |
CN109145040A (zh) | 一种基于双消息队列的数据治理方法 | |
CN103744975A (zh) | 基于分布式文件的高效缓存服务器 | |
CN105159820A (zh) | 一种系统日志数据传输方法及装置 | |
CN102722450A (zh) | 一种基于位置敏感哈希的删冗块设备存储方法 | |
CN105677579B (zh) | 缓存系统中的数据访问方法和系统 | |
CN106406760A (zh) | 基于云储存的直接纠删码优化方法及系统 | |
CN104933077A (zh) | 基于规则的多文件信息分析方法 | |
CN103399943A (zh) | 集群数据库并行查询的通讯方法和通讯装置 | |
EP3734458B1 (en) | Method and system for prioritizing critical data object storage during backup operations | |
CN109491807A (zh) | 一种数据交换方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent of invention or patent application | ||
CB02 | Change of applicant information |
Address after: 100080 Haidian District City, Zhongguancun, the main street, No. 1 Hailong building, room 1415, room 14 Applicant after: Beijing Antiy Electronic Installation Co., Ltd. Address before: 100084, 2B-521, bright city, No. 1, Nongda South Road, Beijing, Haidian District Applicant before: Beijing Antiy Electronic Installation Co., Ltd. |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120516 |