媒体高速存储方法与流程

文档序号:15347512发布日期:2018-09-04 22:56阅读:253来源:国知局

本发明涉及视频存储,特别涉及一种媒体高速存储方法。



背景技术:

智能交通监控网络每时每刻会产生大量不同格式、不同体积的视频文件。这些数据往往需要长期存储。因此,如何有效的管理这些文件就成为一个重要问题。现有技术利用近年来兴起的大数据相关的监控系统云盘数据库来进行视频文件管理。监控系统云盘数据库通过计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库,并将文件以视频块的形式存储在数据存储单元中。监控系统云盘数据库在存储时,将小型视频文件文件组合成更大的视频块存储。但是,由于在对大型视频文件的存储过程中,还需要对视频块进行频繁的分割和合并,无法同时满足智能交通监控系统对不同体积视频文件存储的实时性需求。



技术实现要素:

为解决上述现有技术所存在的问题,本发明提出了一种媒体高速存储方法,包括:

接收视频存储请求并判断视频流数据的体积;

如果所述视频流数据的体积小于第一阈值,则将视频文件提交至监控系统云盘数据库存储;

如果视频流数据的体积大于第二阈值,则将视频文件存储在文件服务器集群。

优选地,在接收到视频存储请求后,进一步包括:

对视频存储请求进行权限验证,根据视频存储请求的来源判断是否允许将数据存储于相应的存储区域;

当权限验证通过时,则继续数据存储流程。

优选地,当权限验证不通过时,结束数据存储流程。

优选地,所述当所述待存储监控视频流的体积大于第二阈值时,将所述待存储监控视频流存储至文件服务器集群,进一步包括:

将第一配置信息存储至所述监控系统云盘数据库,所述第一配置信息包括第一url,所述第一url为所述待存储监控视频流在所述文件服务器集群中的url;

当需读取超大视频文件时,首先从监控系统云盘数据库的块数据索引表中获得其url,再根据该url,直接从文件服务器集群的文件目录中读取该视频文件。

优选地,所述视频文件的配置信息包括:文件名称、视频格式、文件描述、视频块的顺序和文件url。

本发明相比现有技术,具有以下优点:

本发明提出了一种媒体高速存储方法,既能满足对海量小视频文件的存储需求,还能保证对超大视频文件的处理效率,提高了智能交通数据存储的性能。

附图说明

图1是根据本发明实施例的媒体高速存储方法的流程图。

具体实施方式

下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。

本发明的一方面提供了一种媒体高速存储方法。图1是根据本发明实施例的媒体高速存储方法流程图。

本发明将视频流数据文件按照体积分为三个级别。当视频流数据的体积小于第一阈值时,作为小视频文件将其提交至监控系统云盘数据库存储;当视频流数据的体积大于第二阈值时,则作为超大视频文件存储在文件服务器集群;当视频流数据的体积处于第一和第二阈值之间时,则按照预定义策略进行分割,以视频块的方式存储在监控系统云盘数据库中。以下具体描述方法的步骤:

接收视频存储请求,所述视频存储请求携带有待存储监控视频流;为保证数据存储的安全性,在接收到视频存储请求后进行权限验证,根据视频存储请求的来源判断是否允许将数据存储于相应的存储区域。当权限验证通过时,则继续进行后续步骤;当权限验证不通过时,则结束数据存储流程。

权限验证通过后,将视频存储请求所携带的待存储监控视频流添加至缓存后,按照先进先出的顺序处理缓存中待存储监控视频流的存储请求。

获取所述待存储监控视频流的体积;当所述待存储监控视频流的体积小于第一阈值时,将所述待存储监控视频流存储至监控系统云盘数据库中用于存储块数据索引表的区域。

当所述待存储监控视频流的体积大于第二阈值时,将所述待存储监控视频流存储至文件服务器集群,并将第一配置信息存储至所述监控系统云盘数据库,所述第一配置信息包括第一url,所述第一url为所述待存储监控视频流在所述文件服务器集群中的url;

当需读取超大视频文件时,首先从监控系统云盘数据库的块数据索引表中获得其url,再根据该url,直接从文件服务器集群的文件目录中读取该视频文件。这样,在后续操作中,无需对超大视频文件进行分割组合。

当所述待存储监控视频流的体积大于所述第一阈值且所述待存储监控视频流的体积小于所述第二阈值时,根据预定义策略,将所述待存储监控视频流分割成多个视频块后,分别将每个视频块存储至监控系统云盘数据库,并按照所述每个视频块在所述待存储监控视频流中的排列顺序,将所述每个视频块的第二配置信息存储至所述监控系统云盘数据库,所述第二配置信息包括第二url,所述第二url为该视频块在所述监控系统云盘数据库中的url。

当需读取大视频文件时,首先从监控系统云盘数据库的块数据索引表中获取其每个视频块的url,再根据url按顺序从监控系统云盘数据库的视频块表中获取每个视频块,组合成大视频文件。大视频文件的配置信息包括其文件名称、视频格式、文件描述、视频块的顺序和文件url。

由于存储操作的事务处理不能简单依赖服务器本身,故而需设计缓存的机制,用于存储不同场景的视频文件目录以及数据信息。即该方法还包括:

生成临时url和第一流地址缓存,并将所述临时url路径添加至所述第一流地址缓存;当所述待存储监控视频流的体积大于或等于所述第一阈值时,将所述待存储监控视频流写入所述临时url存储;当所述待存储监控视频流未成功写入所述临时url时,执行仲裁机制,下文将详细描述。在执行后续的具体存储步骤时,直接从第一流地址缓存中获取该监控视频流的url,并以此为依据从临时url中读取该监控视频流。

当所述待存储监控视频流未成功存储至所述监控系统云盘数据库时,生成第二流地址缓存;判断所述待存储监控视频流是否成功存储在所述文件服务器集群;如果是,则获取所述第一url,并将所述第一url添加至第二流地址缓存;如果否,则执行仲裁机制;

当待存储监控视频流未成功存储在文件服务器集群时,则不再执行后续存储步骤,在执行仲裁机制并清除缓存中的待存储监控视频流后,结束存储流程。此时,服务器集群恢复到执行该待存储监控视频流的存储步骤之前的状态。

判断所述第一配置信息是否成功存储至所述监控系统云盘数据库;如果是,则删除所述临时url中存储的待存储监控视频流;如果否,则执行仲裁机制;当第一配置信息也成功存储时,该待存储监控视频流即成功存储在服务器集群中。此时,即可删除对应的临时url。

当第一配置信息未成功存储在监控系统云盘数据库时,执行仲裁机制并清除缓存中的待存储监控视频流后,结束存储流程。

该方法还包括,生成第三流地址缓存;判断所述每个视频块是否成功存储在所述监控系统云盘数据库;如果是,则获取所述每个视频块的第二url,并按照所述每个视频块在所述待存储监控视频流中的排列顺序,将所述每个视频块的第二url添加至第三流地址缓存;如果否,则执行仲裁机制;

当每个视频块成功存储在监控系统云盘数据库中后,可直接从第三流地址缓存中获取每个视频块的第二url,再按顺序存储在监控系统云盘数据库的块数据索引表中。当某一个视频块或某几个视频块未成功存储在监控系统云盘数据库时,则不再执行后续存储步骤,在执行仲裁机制并清除缓存中的待存储监控视频流后,结束存储流程。

判断每个视频块的第二配置信息是否成功存储至所述监控系统云盘数据库;如果是,则删除对应的临时url;如果否,则执行仲裁机制。

当第二配置信息也成功存储时,该待存储监控视频流即成功存储在服务器集群中。此时,即可删除临时url中的该待存储监控视频流。此外,当第二配置信息未成功存储在监控系统云盘数据库时,则执行仲裁机制并清除缓存中的待存储监控视频流后,结束存储流程。

对于上述仲裁机制,下面将详细说明其具体步骤:

1:检查当前视频文件是否为小于第一阈值的小视频文件;如果是,则执行步骤2;如果否,则执行步骤3;

2:执行所述监控系统云盘数据库的rollback,结束仲裁机制;当小视频文件存储失败时,撤销存储步骤,删除小视频文件中已存储在数据库中的部分数据。

3:检查第一流地址缓存中是否存在需要清理的临时url;如果是,则按照所述第一流地址缓存中的临时url,删除所述临时url;

当大视频文件写入临时url失败时,删除用于存储大视频文件的临时url,以防止临时url占用系统存储空间。

其中,当事务面向的对象不是小视频文件时,所述仲裁机制还包括:

4:检查第二流地址缓存中是否存在需要清理的第一url;如果是,则根据所述第二流地址缓存中的第一url,删除所述文件服务器集群中存储的待存储监控视频流;

5:检查第三流地址缓存中是否存在需要清理的第二url;如果是,则根据所述第三流地址缓存中的第二url,删除所述监控系统云盘数据库中存储的视频块。

通过上述步骤,分别根据第一至第三流地址缓存中的url删除相应存储区域中对应的数据后,即可使服务器恢复到执行方法之前的状态,使得保证视频流数据存储操作的完整性。

在根据预定义策略将所述待存储监控视频流分割成至少一个视频块后,分别将每个视频块存储至监控系统云盘数据库之后,本发明进一步包括:

对获取的视频文件进行寻址以获取视频块对应的存储单位。所述获取视频块对应的存储单位,包括:

通过散列函数计算视频块id的散列值,以获取视频块id对应的伪随机值;将获取的视频块id对应的伪随机值和掩码按位相与运算,以获取视频块对应的存储单位标识。

寻址获取的视频块对应的存储单位最终保证各个存储单位中存储的对象的总数据量近似均匀,提升了实时存储效率和系统性能。

对获取的视频块对应的存储单位进行寻址以获取存储单位对应的监控云盘节点。多个监控云盘节点共同负责存储和维护对应的存储单位中所有的块。

在本实施例中,每个存储单位配置三个对应的监控云盘节点,实现用户存储文件的三重备份,同时所述监控云盘节点配置固态硬盘实现数据的快速读写操作。

在获取到存储单位对应的监控云盘节点后,将获取的视频文件写入获取的存储单位对应的监控云盘节点。所述视频文件写入监控云盘节点,包括:

步骤1:将获取的视频文件写入获取的存储单位对应的第一监控云盘节点。

步骤2:将第一监控云盘节点写入的视频文件对象分别写入第二监控云盘节点和第三监控云盘节点。

步骤3:向视频采集终端发送视频文件成功存储信息。

在三个监控云盘节点都完成写操作后,控制向视频采集终端发送存储文件成功存储信息,最终实现视频采集终端存储文件在云存储系统服务器的三个监控云盘节点中的三重安全存储。

其中在接收到视频存储请求后,依据视频存储请求中携带的监控视频流信息将视频流数据存储到监控云盘节点,还包括:将最近使用的数据看作热数据,将最近未使用的数据看作冷数据,将热数据存储在高速硬件设备中,而将冷数据存储在非活动存储节点中。每个新写入数据均被视为热数据,会直接存储到监控云盘节点中,为下一次能够直接在监控云盘节点中找到目标数据做准备。可以通过将来自不同存储应用的视频存储请求基于统一的转化标准,转化为标准请求,使得来自于不同的存储应用的视频存储请求均可以被应用本发明的方法进行缓存的系统识别,进而提升了本缓存方法的通用性。

作为优选地实施方式,本发明还包括:更新缓存管理信息。计算监控云盘节点的已存数据量与监控云盘节点的容量的比值。判断比值是否大于或等于阈值,如果是,则利用lru算法,依据缓存管理信息将监控云盘节点中的冷数据依次移除,直至比值小于阈值。为了不丢失数据,可以在将较冷数据依次从监控云盘节点中删除之前,将该较冷数据备份至非活动存储节点。作为优选的实施方式,依据缓存管理信息将监控云盘节点中的冷数据依次移除具体包括:将冷数据依次存储至非活动存储节点,并删除已存储至非活动存储节点的、且存储于监控云盘节点中的冷数据。

当监控系统云盘数据库的存储过程遇到错误而终止时,本发明进一步通过以下方法确认故障位置进而正确重试写操作并执行数据复原。设监控系统云盘数据库至少包括m个存储节点和q个纠错节点。则基于bmsr编码的存储过程如下:

步骤1,存储节点确定第一存储请求,所述第一存储请求中携带有待存储监控视频流和第一更新标记,其中所述第一更新标记用于表明视频采集终端存储的被所述待存储监控视频流进行更新的视频块的更新标记,所述待存储监控视频流的数据量小于一个bmsr编码组的数据量;

步骤2,存储节点响应所述第一存储请求,获取第二更新标记,所述第二更新标记用于表明自身存储的所述视频视频块的更新标记。

步骤3,根据所述第一更新标记与第二更新标记之间的对应结果,对所述待存储监控视频流进行处理,并且进一步包括:

步骤31,存储节点判断第一更新标记与第二更新标记是否相同,如果相同,则第一更新标记与第二更新标记对应,如果不相同,则第一更新标记与第二更新标记不对应。第二更新标记是最新的更新标记,如果第二更新标记早于第一更新标记,则说明在某一次存储节点没有更新完成而视频采集终端却以为更新完成,因而视频采集终端更新了自身的更新标记,无论是第二更新标记晚于或早于第一更新标记,只要二者不对应,存储节点都会向存储系统或者视频采集终端发出报错信息。

步骤32,存储节点根据所述第一判断值对所述待存储监控视频流进行处理。在本发明的进一步实施例中,步骤32还包括:

步骤321,如果所述第一判断值表明所述第一更新标记与所述第二更新标记不对应,发送第一更新应答,所述第一更新应答中携带有更新失败结果;

步骤322,丢弃所述待存储监控视频流。

步骤323,如果所述第一判断值表明所述第一更新标记与所述第二更新标记对应,根据待存储监控视频流和所述视频块确定纠错增量的更新视频块集合{δp1,δp2,...,δpg,...,δpq},其中,δpg为第g个纠错节点的纠错增量,1≤g≤q,q为与一个bmsr编码相对应的校验视频块的数量;

步骤324,将第g个纠错节点的纠错增量δpg携带于第二存储请求中,将所述第二存储请求发送给第g个纠错节点,所述第二存储请求用于触发所述第g个纠错节点根据所述纠错增量δpg对自身存储的校验数据进行更新,并更新所述第g个纠错节点自身存储的版本向量。

所述根据第一判断值对所述待存储监控视频流进行处理,还包括:如果所述第一判断值表明所述第一更新标记与所述第二更新标记对应,利用所述待存储监控视频流对所述视频块进行更新;对所述视频块更新完成后,对所述第二更新标记进行更新。

对所述视频块更新完成后,发送第一更新应答,所述第一更新应答中携带有更新成功结果,所述更新成功结果用于触发视频采集终端更新所述第一更新标记。此外,可以设置计时器,在规定的时间内如果未更新成功,则视频采集终端可以重新发起存储请求。

存储节点对每个初始视频块维护一个更新标记,当有写操作时,存储节点首先会判断接收到的数据的更新标记和自身存储的更新标记是否对应,对应时,存储节点才会对存储请求中的数据进行更新,从而避免当存储过程遇到错误而终止。

在所述bmsr编码中,假设视频文件的体积为m,将该视频文件分割为多个视频块,每k个视频块组合成一个卷,bmsr编码的编码操作在每个卷中相互独立。为了最大化数据的可靠性,编码后的n个块(包括k个视频块和n-k个编码块)存储在n个不同的监控云盘节点中。

在监控系统云盘数据库运行过程中,当r个节点故障时,需要寻找另外r个替代节点以复原故障的数据。本发明采用(n,k,r)来表示的复原模型。源节点完成数据分割、编码与分发任务。x1,x2,…,xn-r表示活动的存储节点,y1,y2,…,yr表示r个替代节点。目标节点读取任意k个节点以完成初始数据的重构。

具体而言,运行过程包括3个步骤,初始化、数据复原和下载。初始化时,体积为m初始视频文件被分割成多个视频块,每k个视频块组成一个卷。假设视频文件m分割为k个视频块。k个视频块通过编码生成n-k个编码块。假设k个视频块表示为(d1,d2,…,dk),每个块的体积为m/k,k个视频块通过编码生成n-k个编码块(p1,p2,…,pn-k)。

其中,每个编码块pi(1≤i≤n-k)都是通过k个视频块编码生成,αi,j是pi来自第j个视频块dj的编码系数。最后,编码完成后,n个块(k个视频块和n-k个编码块)分别存储到n个存储节点(x1,x2,…,xn),每个节点存储的数据量都为m/k。即编码块pi的复原数据pi为

其中1≤i≤n-r

当r个存储节点xn-r+1,xn-r,…,xn故障后,为了保证数据原有的冗余度,重新选择r个替代节点完成数据的复原y1,y2,…,yr。复原过程中,在r个替代节点中,会选择一个主节点ymain。该节点同时连接所有者节点与其余替代节点。具体而言,包括:

首先,从活动的存储节点中选择k个所有者节点,并从其他的可用节点中选择r个替代节点;同时从r个替代节点中推选出一个主节点ymain。其次,主节点ymain从k个提供者中读取k个视频块并通过该k个视频块复原r个故障的块。最后,ymain将对应的复原视频块存储在本地,同时将其余的r-1个复原视频块分别发送到相应r-1个替代节点中。其余替代节点将接收到的数据存储在本地,完成复原过程。

复原完成以后,初始n-r个活动节点x1,x2,…,xn-r和r个替代节点y1,y2,…,yr组成新的n个存储节点组合提供视频存储服务,数据的访问请求可以通过其中任意k个节点来重建初始数据。

替代节点在选定后,选择与其他替代节点拓扑距离最小的替代节点为主节点。假设活动节点xi与提供者yj之间的拓扑距离表示为distancei,j,则从n-r个活动节点中选择k个到r个替代节点中总拓扑距离最短的节点作为提供者。活动节点xi与提供者yj之间总的拓扑距离为:

在选择过程中,将n-r个总拓扑距离采用升序的方式排列,最后取前k个具有最小总拓扑距离的节点作为提供者x1,x2,…,xk。

主节点的选择需要同时考虑与两者之间的拓扑距离。假设替代节点yi到yj的拓扑距离为distance’i,j,则替代节点yi到其他r-1个替代节点的拓扑距离总和为

选择与其他替代节点及提供者最小总拓扑距离的节点作为主节点ymain。

distancemain=min1≤i≤rdistance’i)

在选定替代节点和提供者后,提供者与主节点之间、主节点与其他提供者之间实现数据传输。在提供者与主节点之间,所有的k个提供者x1,x2,…,xk与主节点ymain连接,并向其传输数据。每个提供者向主节点传输一个体积为m/k的视频块。主节点在接收到提供者的数据后通过编码与解码操作完成r个故障块的复原操作。

在主节点与其他提供者之间,主节点在完成r个故障块的构建工作后,首先将对应的块存储在本地,同时将其余的r-1个块分别发送到对应的替代节点中。

其他替代节点在收到替代节点的数据后存储在本地。在所有替代节点完成数据接收和存储操作后,复原过程结束。

主节点ymain在具体的计算过程中,根据故障的数据是视频块还是编码块的具体情况,对应做不同的计算操作。假设r个无效视频块中的视频块数目和编码块数目分别为r1和r2,r=r1+r2。r1个故障的视频块表示为d1,d2…,dr1,r2个故障的编码块表示为p1,p2…,pr2,替代节点从k个提供者中读取的数据为b=(b1,b2,…,bk),则视频块di与编码块pj的计算如下:

1)读取的k个视频块向量b=(b1,b2,…,bk)能够通过解码操作直接复原出该无效视频块。假设编码矩阵为p,则编码过程可以表示为p*d=c,其中,d为视频块;c为视频块与编码块对应的矩阵。如果从c中抽出的k个视频块为b=(b1,b2,…,bk),对应的矩阵为矩阵p’,则通过矩阵运算可以得到矩阵d=p’-1*b。而矩阵d中包含所有的视频块,因此,di的复原操作可以表示为:

di=(λ1,λ2,…,λk)t*(b1,b2,…,bk)

其中,λi是p’-1中di对应的向量。

2)编码块的复原操作即在解码的基础上再作一次对应位置的编码操作。具体而言,如果从c中抽出的k个视频块为向量b=(b1,b2,…,bk),对应的矩阵为矩阵p’,解码操作可以表示为d=p’-1*b。而pj的计算过程可以表示为pj=βj*d,其中向量βj是pj对应的向量,则pj的计算过程可以表示为:

pj=(β1,β2,…βk)*p’-1*(b1,b2,…,bk)

在完成所有r个块(r1个视频块和r2个编码块)的复原后,主节点将这些复原的视频块发送到对应的替代节点中。读取一份数据通过不同的参数同时构建r个视频块,同时,替代节点中的计算采用多线程技术,增加了计算过程的并行度。

综上所述,本发明提出了一种媒体高速存储方法,既能满足对海量小视频文件的存储需求,还能保证对超大视频文件的处理效率,提高了智能交通数据存储的性能。

显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1