一种多媒体文件云存储平台及使用该云存储平台去冗的方法与流程

文档序号:12271650阅读:307来源:国知局
一种多媒体文件云存储平台及使用该云存储平台去冗的方法与流程

本发明属于信息处理领域,具体是一种多媒体文件云存储平台及使用该云存储平台去冗的方法。



背景技术:

随着云计算技术的广泛应用,越来越多的云平台为用户提供数据存储、查询和计算服务,当应用程序对大量图片、视频和音频等多媒体文件进行存储时,由于这类文件具有存储周期长、访问频繁的特点。运用分布式存储虽然可以提高多媒体文件的访问效率,避免网络传输瓶颈对多媒体文件访问造成的延迟和磁盘存储空间瓶颈对多媒体文件存储造成的吞吐性能下降。但是,很多应用程序向用户提供的多媒体文件上传入口会使云存储平台积累大量重复数据,例如:支持多人同时在线对自己逝去的亲人创建祭祀活动的网络虚拟祭祀平台中,每个亲友圈中的用户都可以为自己的亲人建立缅怀专题,这使得他们上传与同一个亲人相关的并且相同的多媒体文件的概率非常高,而目前的多媒体文件云存储服务又受到很多限制,具体如下:

1、存储成本的限制:摩尔定律的扩展使得存储的消耗越来越快,控制存储的增长不是一件容易的事情,在当前云计算环境下不少企业在开发应用程序对用户文件进行存储的时候,因为投入等多种原因的限制,无法投入过多的资源用于多媒体数据文件的存储;

2、网络传输速度的限制:多媒体文件的上传需要消耗一定时间,网络状态不佳的情况下,如果用户花费很长时间上传了一个云存储平台上已有的文件,一方面会给用户体验造成不好的影响,另一方面会给系统增加额外的存储成本;

3、磁盘存储空间的限制:存储服务器上的磁盘空间是有限的,存储服务器在运行一段时间之后难免出现磁盘空间不足的问题,如果给存储服务器扩容的时候需要停机,那么该段时间内用户将无法通过应用程序上传文件和访问文件,会使用户体验大打折扣。

4、用户数据访问安全的限制:云存储平台为应用程序提供的存储服务需要保证用户数据的访问安全和存储安全,如果没法保证用户文件的安全性,用户就会拒绝使用,甚至会使应用程序的开发商面临被诉讼的风险。云存储平台还需要限制用户文件被网络爬虫按照一定规则窃取,限制第三方应用程序访问保存在云存储平台中的文件。



技术实现要素:

本发明针对现有技术中,应用程序在对冗余度高的多媒体文件进行分布式存储时,导致存储的成本高,为了实现低存储成本条件下对多媒体数据进行存储和高效定位,以及在系统运行时对云存储平台中的存储目录进行高效逻辑扩容,提出了一种多媒体文件云存储平台及使用该云存储平台去冗的方法,实现了云存储平台中多媒体文件的重复数据删除和存储目录的动态逻辑扩容。

所述的多媒体文件云存储平台包括:至少一个存储接口管理子系统,一个集群管理子系统和若干存储管理子系统。

用户将待上传的多媒体文件传输给不同的应用程序,每个应用程序集成一个存储接口管理子系统;存储接口管理子系统给应用程序提供操作数据文件的接口,负责管理应用程序自定义的存储目录树,生成多媒体文件的存储路径和访问路径;负责生成操作指令与集群管理子系统或存储管理子系统进行通信。

当存储接口管理子系统验证多媒体文件是否属于冗余文件时,通过集群管理子系统与不同的存储管理子系统进行通信,当存储服务器的存储负荷达到一定阈值之后,存储接口管理子系统会向集群管理子系统请求对相应的存储目录进行逻辑扩容。当存储接口管理子系统保存多媒体文件时,直接与存储管理子系统进行通信;

每个存储管理子系统分别部署在数据中心的每台存储服务器上,负责管理存储服务器上所有的文件元数据记录信息和文件冗余记录信息,并提供查询文件元数据记录和查询文件冗余信息记录服务,每个存储管理子系统并行查找文件指纹信息所对应的文件元数据记录,并将各自的查找结果传输给集群管理子系统。

集群管理子系统部署在单独的服务器上,负责管理新接入的存储服务器,监控各台存储服务器的运行状态,提供对每个存储服务器上的存储目录进行逻辑扩容的服务,同时还提供文件指纹信息匹配验证服务;集群管理子系统汇总各个存储管理子系统发来的文件元数据查找结果并将结果返回给存储接口管理子系统做后续的业务处理。

存储接口管理子系统具体包括:文件操作模块、目录操作模块、文件指纹验证模块、返回值封装模块、日志管理模块、FTP通信管理模块、socket通信协议封装/解析模块、socket连接管理模块和程序配置管理模块。

文件操作模块负责给应用程序提供操作文件的接口,包括文件上传、文件删除和文件复制等功能;目录操作模块负责给应用程序提供操作目录的接口,包括目录创建和目录删除等功能;文件指纹验证模块负责验证待上传的多媒体文件是否属于冗余文件;返回值封装模块负责将云存储平台返回给应用程序的数据封装成JSON格式;日志管理模块负责记录应用程序在云存储平台中所有的操作日志;FTP通信管理模块负责存储接口管理子系统和存储服务器之间的FTP通信连接的建立和释放等;socket通信协议封装/解析模块负责生成存储接口管理子系统、集群管理子系统和存储管理子系统之间互相通信的指令;socket连接管理模块负责维护存储接口管理子系统、集群管理子系统和存储管理子系统这三个子系统之间的socket长连接;程序配置管理模块负责解析和实例化应用程序自定义的分布式存储目录模型,并对模型做一致性审查确保模型符合建模方案规范。

集群管理子系统具体包括:哈希函数管理模块、文件冗余验证模块、布隆过滤器管理模块、程序配置管理模块、日志管理模块、并行查找文件元数据模块、socket通信协议封装/解析模块、socket连接管理模块、动态加载指纹信息模块和集群管理模块。

哈希函数管理模块负责计算:某个文件的指纹信息映射到布隆过滤器管理的二进制向量空间中的位置;文件冗余验证模块给存储接口管理子系统提供验证某个文件的指纹信息是否存在的服务;布隆过滤器管理模块负责管理云存储平台内的文件指纹信息;并行查找文件元数据模块负责给各个存储管理子系统下达查找文件元数据的指令并汇总查找结果;动态加载指纹信息模块负责集群管理子系统初始化的时候向各个存储管理子系统请求文件指纹信息,并将存储管理子系统返回的文件指纹信息加载到布隆过滤器中;集群管理模块负责监管云存储平台中每个存储服务器的运行状态,并管理新接入的存储服务器,同时提供对每个存储服务器上的存储目录进行逻辑扩容的服务。

存储管理子系统具体包括:文件元数据管理模块,运行状态管理模块、文件冗余信息管理模块、socket通信协议封装/解析模块、socket连接管理模块、程序配置管理模块和日志管理模块。

文件元数据管理模块负责在系统初始化的时候,将存储服务器上全部的文件元数据记录加载到内存中,并提供文件元数据查找服务;运行状态管理模块负责实时生成系统的运行状态,包括CPU占用率、内存占用率和磁盘存储空间利用率等信息;文件冗余信息管理模块负责在系统初始化的时候,将存储服务器上全部的文件冗余信息记录加载到内存中,并提供文件冗余信息查找服务。

一种使用多媒体文件云存储平台去冗的方法,具体步骤如下:

步骤一、针对用户要上传的多媒体文件,通过浏览器计算该多媒体文件的指纹信息并传输给应用程序;

步骤二、应用程序根据该多媒体文件的指纹信息,调用存储接口管理子系统的接口生成验证文件指纹信息指令;

步骤三、存储接口管理子系统把验证文件指纹信息指令发送给集群管理子系统。

步骤四、集群管理子系统判断该多媒体文件的指纹信息是否存在,如果存在,进入步骤五;否则,生成文件指纹信息验证结果,进入步骤七;

步骤五、集群管理子系统发送查找该指纹信息对应的文件元数据指令,给所有的存储管理子系统;

步骤六、每个存储管理子系统收到查找文件元数据的指令,在各自的内存中查找该指纹对应的文件元数据,并将指纹信息验证结果返回给集群管理子系统;

步骤七、集群管理子系统汇总文件指纹信息验证结果,并发送给存储接口管理子系统;

步骤八、存储接口管理子系统获取文件指纹信息验证结果,根据结果判断云存储平台中是否存在相同文件,如果是,进入步骤九;否则,进入步骤十;

步骤九、向存储管理子系统发送添加文件冗余信息指令和文件引用信息指令,并生成文件上传结果;进入步骤十四;

针对存储服务器i中,已经存在文件和用户上传的文件具有相同的指纹信息;则应用程序把保存上传文件的存储目录结点编号传递给存储接口管理子系统,然后存储接口管理子系统向该存储目录结点所在的存储管理子系统发送添加文件冗余信息记录的指令;同时存储接口管理子系统向存储服务器i所在的存储管理子系统发送添加文件引用信息的指令;

步骤十、应用程序获取用户待上传的多媒体文件流,并传输文件流和应用程序指定的存储目录结点编号给存储接口管理子系统;

步骤十一、存储接口管理子系统生成存储目录结点编号对应的存储目录对象,并获取该存储目录的磁盘存储空间利用率,之后根据磁盘存储空间利用率判断该存储目录是否需要扩容,如果是,获取扩容存储目录,生成文件保存路径;否则,直接生成文件保存路径;

具体步骤如下:

步骤1101、存储接口管理子系统发送获取扩容存储目录指令给集群管理子系统;

步骤1102、集群管理子系统收到获取扩容存储目录指令,发送获取服务器运行状态指令给所有的存储管理子系统;

步骤1103、每个存储管理子系统收到获取服务器运行状态指令,将各自的服务器运行状态返回给集群管理子系统;

步骤1104、集群管理子系统汇总所有的存储服务器运行状态,确定空闲的存储服务器并生成扩容存储目录,并保存扩容信息,将扩容存储目录信息返回给存储接口管理子系统;

步骤1105、存储接口管理子系统获取扩容存储目录信息,生成文件保存路径。

步骤十二、存储接口管理子系统对用户待上传的多媒体文件类型进行识别,并判断文件类型是否合法,如果是,生成文件名,进入步骤十三,否则,生成文件上传结果,进入步骤十四;

步骤十三、存储接口管理子系统保存文件,向集群管理子系统发送添加文件指纹信息指令,同时向存储管理子系统发送添加文件元数据指令,并生成文件上传结果;

步骤十四、应用程序获取文件上传结果,并发送文件上传结果给用户;

步骤十五、用户查看结果,将冗余度高的多媒体文件存储到云存储平台中。

本发明的有益效果:

1)、一种多媒体文件云存储平台,解决了存储服务器动态接入云存储平台的问题,只需要在该存储服务器上运行存储管理子系统;这样提高了云平台的扩展性,避免了给存储服务器扩容的时候需要停机的问题。

2)、一种多媒体文件云存储平台,对应用程序屏蔽了复杂的管理分布式存储环境中多媒体文件的工作,给应用程序提供便捷的文件操作接口和目录操作接口,极大简化了应用程序管理分布式存储环境中多媒体文件的过程和应用程序管理多媒体文件的开发成本,同时降低了应用程序中用户文件管理和其他业务逻辑处理之间的耦合性。

3)、一种多媒体文件云存储平台,解决了云存储平台中存储目录的逻辑扩容问题,克服了单台存储服务器磁盘存储空间不足的瓶颈。

4)、一种多媒体文件云存储平台,给应用程序提供一种分布式存储目录的建模方案,应用程序可以根据自己的需求灵活的设置多媒体文件的存储目录树结构,支持对特定的存储目录进行文件删冗,对于未指定删冗状态的存储目录,系统默认不对该存储目录中的文件进行删冗,用户上传的每个文件都会被完整保存。

5)、一种使用多媒体文件云存储平台去冗的方法,解决了云存储平台中多媒体文件的重复数据删除问题,降低了存储服务器的存储负载,同时加快了用户与云存储平台之间传输文件的速度。

6)、一种使用多媒体文件云存储平台去冗的方法,针对大容量的多媒体文件,只需计算文件的指纹信息,即可快速判断存储服务器中是否存在相同的多媒体文件,极大缩短了应用程序保存多媒体文件的平均耗时。

附图说明

图1为本发明多媒体文件云存储平台中应用程序提供的分布式存储目录结构图;

图2为本发明多媒体文件云存储平台的基本架构图;

图3为本发明多媒体文件云存储平台中各个子系统的模块图;

图4为本发明使用多媒体文件云存储平台去冗的方法流程图;

图5为本发明云存储平台中存储接口管理子系统存储目录逻辑扩容流程图。

具体实施方式

下面将结合附图对本发明作进一步的详细说明。

本发明根据应用程序的需求在云存储平台内对用户上传的多媒体文件进行高效的数据去冗,同时支持对云存储平台中的存储目录进行逻辑扩容;具体为:将每个多媒体文件视为一个完整数据块,并使用文件元数据记录对每个多媒体文件的关键信息进行描述,用户通过浏览器访问应用程序页面并上传数据文件,浏览器计算文件的指纹信息并将它上传到云存储平台,云存储平台完成文件指纹信息的匹配工作并将验证结果通过应用程序反馈给用户,加快了用户与云存储平台之间传输文件的平均速度;在云存储平台中存储服务器的磁盘空间利用率达到一定阈值之后,云存储平台会根据当前各台存储服务器的负载情况寻找出一台状态最佳的服务器,对已达到饱和的存储服务器中的存储目录进行逻辑扩容,使得云存储平台的存储效率更加高效并具备了良好的扩展性,同时也给用户与应用程序之间的文件传输带来了良好的体验。

一种多媒体文件云存储平台,架构如图2所示,在socket套接字通信连接的基础上采用三层架构实现,自上而下依次为业务逻辑层、云存储管理层和存储层,包括:至少一个存储接口管理子系统,一个集群管理子系统和若干存储管理子系统。

在业务逻辑层中,由负载均衡服务器把用户访问请求进行分流,用户将待上传的不同多媒体文件分别传输给不同的应用服务器,再由应用程序去调用云存储管理层提供的服务接口去管理用户上传的多媒体文件。应用程序可以根据分布式存储目录建模方案自定义存储目录的层级结构。

如图1所示,分布式存储目录结构图样例由两棵存储目录树构成,每棵存储目录树又由很多存储目录结点和文件结点构成。

文件结点用来描述文件的相关信息;大多数多媒体文件具有固定的数据结构,比如mp3、jpg、png等类型文件二进制流的前缀都是固定的,本发明通过判断文件前缀来确定多媒体文件的文件类型,极大提高了识别多媒体文件的准确性。

存储目录结点用来描述存储服务器上的某个存储目录的信息,它定义为五元组(id,naming,storePath,(parent,Childs)),id表示存储目录结点的编号,naming表示存储目录结点的命名规则,naming定义为三元组(nameType,staticName,dynamicName),nameType∈{static,dynamic}表示存储目录结点的命名方式。staticName表示存储目录结点采用静态命名方式时候的目录文件名是staticName,也就是系统未运行时根据staticName的值确定静态目录结点的值;dynamicName表示存储目录结点采用动态命名方式时,将应用程序传递的dynamicName所对应的参数值作为该存储目录的文件名,storePath表示存储目录结点的祖先结点的磁盘存储路径,祖先结点代表存储服务器结点在初始状态下提供的存储目录,(parent,Childs)表示存储目录结点的直连结点的属性信息,parent表示该存储目录结点的直接父结点,Childs表示该存储目录结点的直接子结点集合;

静态目录结点、动态目录结点和祖先结点都是存储目录结点的一类特殊实例;图中的“图书目录”是“电子书存储服务器”的祖先结点,“场景目录”是“场景存储服务器”的祖先结点。

存储服务器结点是对分布式存储环境中单台存储服务器的抽象,它用来描述该存储服务器的属性信息、访问信息和它所提供的祖先结点信息;定义为四元组(id,property,access,AncestorNodes),id表示存储服务器结点的编号,property定义为(ip,ftpPort,serverPort)表示存储服务器结点的属性,ip表示存储服务器结点的IP地址,ftpPort表示存储服务器结点上FTP协议的访问端口号,serverPort表示存储服务器结点提供的外部TCP协议访问端口号,access定义为(userName,password)表示存储服务器结点的访问信息,AncestorNodes表示该存储服务器结点提供的可以存储文件的祖先结点集合。

分布式存储环境中根据存储目录结点、静态目录结点、动态目录结点、祖先结点、存储服务器结点、文件结点的定义以及这些结点之间的二元关系,进一步给出了存储目录子树、存储目录树和分布式存储目录的概念。

存储目录子树用来描述以node为根结点的存储目录结点及其内部包含的全部子结点;存储目录树用来描述以serverNode为根结点的存储服务器及其提供的全部祖先结点;分布式存储目录用来描述由多棵存储目录树构成的森林。

中间层是云存储管理层,它负责管理云存储平台并向应用程序提供多媒体文件云存储服务,该层由存储接口管理子系统、集群管理子系统和存储管理子系统构成。

每个应用程序各集成一个存储接口管理子系统,存储接口管理子系统以jar文件格式包的形式集成在应用程序中。

存储接口管理子系统给应用程序提供操作数据文件的接口,包括文件操作相关接口和目录操作相关接口等,同时负责生成操作指令与集群管理子系统和存储管理子系统进行通信;还负责管理应用程序自定义的存储目录树,生成多媒体文件的存储路径和访问路径,当存储服务器的存储负荷达到一定阈值之后,存储接口管理子系统会向集群管理子系统请求对相应的存储目录进行逻辑扩容。

每个存储管理子系统分别部署在数据中心的每台存储服务器上,每个存储管理子系统负责管理它所在的存储服务器上的所有文件元数据记录和文件冗余信息记录,并提供查询文件元数据记录和查询文件冗余信息记录等服务。多个存储管理子系统在查找文件指纹信息所对应文件元数据记录的时候是并行运行的,它们将各自的查找结果通过socket传输给集群管理子系统,集群管理子系统汇总各个存储管理子系统发来的查找结果并将结果返回给存储接口管理子系统做后续的业务处理。

当存储接口管理子系统在验证多媒体文件是否属于冗余文件的时候,通过集群管理子系统与不同的存储管理子系统进行通信,当存储接口管理子系统在保存多媒体文件的时候,它直接与存储管理子系统进行通信。

集群管理子系统部署在单独的服务器上,负责管理新接入的存储服务器,监控各台存储服务器的运行状态,提供对每台存储服务器上的存储目录进行逻辑扩容的服务,同时还提供文件指纹信息匹配验证服务。集群管理子系统中实现了一个布隆过滤器负责管理云存储平台内所有的文件指纹信息,在接收到存储接口管理子系统发来的验证文件指纹信息指令之后,通过布隆过滤器判断文件指纹信息的存在性,如果文件指纹信息不存在,集群管理子系统判定用户上传文件不属于冗余文件,否则,就将查找该指纹信息所对应文件元数据记录的指令发送给各个存储管理子系统,进一步确定冗余文件的具体位置。每个存储管理子系统根据指纹信息迅速在内存中匹配出该指纹信息所对应的文件元数据记录,集群管理子系统汇总所有存储管理子系统通过指令发送给它的匹配结果,并把匹配结果反馈给应用程序,由应用程序根据该反馈结果做后续的业务处理。

最底层是存储层,数据中心的每台云存储服务器都开启了FTP访问协议,供存储接口管理子系统操作文件和目录。

应用程序自定义存储目录树的逻辑结构,然后调用存储接口管理子系统提供的文件操作相关接口和目录操作相关接口就可以完成对多媒体文件的分布式存储,存储的过程中云存储平台会根据应用程序的需求对指定的存储目录或者存储服务器中的数据进行去冗,同时当某个存储服务器的磁盘空间利用率在超过一定的阈值之后,云存储平台会自动给该存储服务器中的存储目录进行逻辑扩容,应用程序只管向自定义的存储目录树中的存储目录存放文件即可,不必担心这些存储目录会出现磁盘空间使用不足的情况,本发明为应用程序提供的分布式存储多媒体文件的方法屏蔽了应用程序管理分布式环境中多媒体文件的复杂性,给应用程序提供便捷的管理分布式存储目录的接口,极大简化了应用程序管理分布式存储目录中多媒体文件的过程。

如图3所示,存储接口管理子系统具体包括:文件操作模块、目录操作模块、文件指纹验证模块、返回值封装模块、日志管理模块、FTP通信管理模块、socket通信协议封装/解析模块、socket连接管理模块和程序配置管理模块。

文件操作模块负责给应用程序提供操作文件的接口,包括文件上传、文件删除和文件复制等功能;目录操作模块负责给应用程序提供操作目录的接口,包括目录创建和目录删除等功能;文件指纹验证模块负责验证待上传的多媒体文件是否属于冗余文件;返回值封装模块负责将云存储平台返回给应用程序的数据封装成JSON格式;日志管理模块负责记录应用程序在云存储平台中所有的操作日志;FTP通信管理模块负责存储接口管理子系统和存储服务器之间的FTP通信连接的建立和释放等;socket通信协议封装/解析模块负责生成存储接口管理子系统、集群管理子系统和存储管理子系统之间互相通信的指令;socket连接管理模块负责维护存储接口管理子系统、集群管理子系统和存储管理子系统这三个子系统之间的socket长连接;程序配置管理模块负责解析和实例化应用程序自定义的分布式存储目录模型,并对模型做一致性审查确保模型符合建模方案规范。

集群管理子系统具体包括:哈希函数管理模块、文件冗余验证模块、布隆过滤器管理模块、程序配置管理模块、日志管理模块、并行查找文件元数据模块、socket通信协议封装/解析模块、socket连接管理模块、动态加载指纹信息模块和集群管理模块。

哈希函数管理模块负责计算:某个文件的指纹信息映射到布隆过滤器管理的二进制向量空间中的位置;文件冗余验证模块给存储接口管理子系统提供验证某个文件的指纹信息是否存在的服务;

布隆过滤器管理模块负责管理云存储平台内所有的文件指纹信息,布隆过滤器的算法复杂度低,验证速度非常快;

布隆过滤器由一个很长的比特位数组和N个可以随机映射的哈希函数组成,保存每个文件指纹信息的时候都需要通过N个Hash函数计算出N个存储位置,然后将这N个存储位置在比特位数组中所对应的值全部置为1,判断用户上传文件所对应的指纹信息是否存在的时候,需要通过N个Hash函数计算出该指纹信息所对应的N个存储位置,如果比特位数组中这N个存储位置所对应的值都是1,系统判定用户上传文件的指纹信息存在,同时系统还需要把查找该指纹信息所对应的文件元数据的指令发送给所有的存储管理子系统,并继续进行后续的认证工作,只有找到了文件指纹信息所对应的文件元数据,系统才会认定用户上传文件属于冗余文件;虽然布隆过滤器具有一定的误判概率,但是布隆过滤器的空间效率和时间效率都超过了一般查询算法。

并行查找文件元数据模块负责给各个存储管理子系统下达查找文件元数据的指令并汇总查找结果;动态加载指纹信息模块负责集群管理子系统初始化的时候向各个存储管理子系统请求文件指纹信息,并将存储管理子系统返回的文件指纹信息加载到布隆过滤器中;集群管理模块负责监管云存储平台中每个存储服务器的运行状态,并管理新接入的存储服务器,同时提供对每个存储服务器上的存储目录进行逻辑扩容的服务。

存储管理子系统具体包括:文件元数据管理模块,运行状态管理模块、文件冗余信息管理模块、socket通信协议封装/解析模块、socket连接管理模块、程序配置管理模块和日志管理模块。

文件元数据管理模块负责在系统初始化的时候将存储服务器上全部的文件元数据记录加载到内存中,并提供文件元数据查找服务;

文件元数据记录用来描述某个文件的关键信息,它定义为四元组(fileName,fileType,property,(frequency,flag)),其中fileName表示文件名,fileType表示文件类型,property定义为(fingerPrint,directoryNodeId,filePath,(user,uploadTime))表示文件的属性,fingerPrint表示文件的指纹信息,directoryNodeId表示文件的存储目录结点编号,filePath表示文件的存储目录结点与它的祖先结点之间的相对路径,(user,uploadTime)表示文件的运行时参数,user表示文件所有者,uploadTime表示文件的上传时间,(frequency,flag)表示文件的状态,frequency表示该文件的引用频率,flag表示该文件是否被文件所有者删除。

运行状态管理模块负责实时生成系统的运行状态,包括CPU占用率、内存占用率和磁盘存储空间利用率等信息;

文件冗余信息管理模块负责在系统初始化的时候将存储服务器上全部的文件冗余信息记录加载到内存中,并提供文件冗余信息查找服务。

文件冗余信息记录用来描述某一个存储目录结点引用的文件元数据信息,它定义为三元组(directoryNodeId,essentialStorePath,OtherFileInfo),directoryNodeId表示某个存储目录结点的编号,essentialStorePath表示directoryNodeId所对应的存储目录结点与它的祖先结点之间的相对路径,OtherFileInfo表示编号为directoryNodeId的存储目录结点引用的全部文件元数据记录集合。

一种使用多媒体文件云存储平台去冗的方法,如图4所示,具体步骤如下:

步骤一、针对用户要上传的多媒体文件,通过浏览器计算该多媒体文件的指纹信息并传输给应用程序;

用户访问系统,在通过浏览器访问应用程序上传文件的时候,应用程序提供的浏览器页面上的JavaScript脚本首先计算文件的指纹信息并将它发送给应用程序。

步骤二、应用程序获取到该多媒体文件的指纹信息,调用存储接口管理子系统的接口生成验证文件指纹信息指令;

应用程序通过存储接口管理子系统向集群管理子系统发送验证文件指纹信息指令;应用程序在存储文件和访问文件的时候需要提供云存储平台授权给应用程序的编号,只有经过云存储平台认证才可以进行后续的文件操作,存储接口管理子系统对用户上传的每个文件都生成一个时间戳并分配一个10位长度的随机数存储在文件名中,这种设计可以在不影响云存储平台服务效率的同时保证用户数据的访问安全;

步骤三、存储接口管理子系统把验证文件指纹信息指令发送给集群管理子系统。

步骤四、集群管理子系统在收到验证文件指纹信息指令,判断该多媒体文件的指纹信息是否存在,如果存在,进入步骤五;否则,生成文件指纹信息验证结果,进入步骤七;

如果集群管理子系统通过布隆过滤器判断得出该指纹信息所对应的文件存在于云存储平台中,则系统需要进一步找到该指纹信息所对应的文件元数据,在查找指纹信息所对应的文件元数据过程中,集群管理子系统给每个存储管理子系统发送查找文件元数据的指令,把存储管理子系统返回的查找结果汇总并发送给存储接口管理子系统,否则,生成文件指纹信息验证结果并发送给存储接口管理子系统;

集群管理子系统在找到与用户上传的多媒体文件具有相同指纹信息的文件之后,会把文件元数据记录返回给应用程序,由应用程序根据文件元数据记录进行后续的业务处理,防止用户无法访问到该文件的情况发生;

步骤五、集群管理子系统发送查找该指纹信息对应的文件元数据指令给所有的存储管理子系统;

在查找文件指纹信息所对应文件元数据的过程中,每个存储管理子系统的查找过程是并行的,有效的提高了定位冗余文件的速度,提高了用户体验;

步骤六、每个存储管理子系统收到查找文件元数据指令,在各自的内存中查找该多媒体文件指纹对应的文件元数据,并生成文件指纹信息验证结果返回给集群管理子系统;

步骤七、集群管理子系统汇总文件指纹信息验证结果,并发送给存储接口管理子系统;

步骤八、存储接口管理子系统获取文件指纹信息验证结果,根据结果判断云存储平台中是否存在相同文件,如果是,进入步骤九;否则,进入步骤十;

步骤九、向存储管理子系统发送添加文件冗余信息指令和文件引用信息指令,并生成文件上传结果;进入步骤十四;

存储接口管理子系统根据集群管理子系统发来的消息判断用户上传的文件是否冗余,如果云存储平台中的存储服务器Serveri上已经存在一个文件和用户上传的文件具有相同的指纹信息,则应用程序把它指定的保存该多媒体文件的存储目录结点编号传递给存储接口管理子系统,然后存储接口管理子系统向该存储目录结点所在的存储管理子系统发送添加文件冗余信息记录的指令,之后存储接口管理子系统向Serveri所在的存储管理子系统发送添加文件引用信息的指令,如果云存储平台内已经存在与该指纹相同的其他文件,则中断用户文件的上传过程并提示文件秒传成功,然后终止用户上传文件的过程,减少了用户上传文件花费的平均时间,同时降低了存储服务器的存储负载;

如果用户上传的文件不存在于云存储平台中,则存储接口管理子系统向应用程序请求文件的二进制流;

步骤十、应用程序获取用户待上传的多媒体文件流,并传输文件流和应用程序指定的存储目录结点编号给存储接口管理子系统;

步骤十一、存储接口管理子系统生成存储目录结点编号对应的存储目录对象,并获取该存储目录的磁盘存储空间利用率,之后根据磁盘存储空间利用率判断该存储目录是否需要扩容,如果是,获取扩容存储目录,生成文件保存路径;否则,直接生成文件保存路径;

存储接口管理子系统根据应用程序指定的存储目录编号生成保存文件流的存储目录对象,之后存储接口管理子系统通过该存储目录编号所在存储管理子系统获取该存储目录的磁盘存储空间利用率,如果此时存储接口管理子系统发现该存储目录所在的存储服务器的磁盘空间利用率已经达到指定的阈值,则存储接口管理子系统就向集群管理子系统发送给该存储目录逻辑扩容的指令,然后获取到扩容的存储目录对象,之后存储接口管理子系统就会把文件流保存到扩容存储目录中;

如图5所示,具体步骤如下:

步骤1101、存储接口管理子系统发送获取扩容存储目录指令给集群管理子系统;

步骤1102、集群管理子系统收到获取扩容存储目录指令,发送获取服务器运行状态指令给所有的存储管理子系统;

步骤1103、每个存储管理子系统收到获取服务器运行状态指令,将各自的服务器运行状态返回给集群管理子系统;

步骤1104、集群管理子系统汇总所有的存储服务器运行状态,确定空闲的存储服务器并生成扩容存储目录,并保存扩容信息,将扩容存储目录信息返回给存储接口管理子系统;

集群管理子系统收到所有的存储管理子系统发来的存储服务器运行状态,它根据每台服务器的运行状态确定一个相对空闲的存储服务器,然后在该存储服务器上生成一个存储目录作为扩容存储目录,并记录扩容相关信息,最后把扩容存储目录的信息返回给存储接口管理子系统;

步骤1105、存储接口管理子系统获取扩容存储目录信息,生成文件保存路径。

步骤十二、存储接口管理子系统对用户待上传的多媒体文件类型进行识别,并判断文件类型是否合法,如果是,生成文件名,进入步骤十三,否则,生成文件上传结果,进入步骤十四;

存储接口管理子系统根据文件流识别用户上传多媒体文件的文件类型,如果文件类型合法,则存储接口管理子系统生成一个时间戳并分配一个10位长度的随机数作为文件名;如果文件类型不合法,则生成文件上传结果;

步骤十三、存储接口管理子系统保存文件,向集群管理子系统发送添加文件指纹信息指令,同时向存储管理子系统发送添加文件元数据指令,并生成文件上传结果;

如果应用程序指定的存储目录x没有被扩容,则存储接口管理子系统把用户上传的多媒体文件流保存到应用程序指定的存储目录x中,否则,集群管理子系统会给存储目录x分配一个扩容存储目录y并记录相关扩容信息,然后存储接口管理子系统把用户上传的多媒体文件流保存到扩容后的存储目录y中,文件保存之后存储接口管理子系统向集群管理子系统发送添加文件指纹信息指令,之后存储接口管理子系统向应用程序指定的存储目录x所在的存储管理子系统发送添加文件元数据指令;

步骤十四、应用程序获取文件上传结果,并发送文件上传结果给用户;

存储接口管理子系统生成文件上传结果信息;应用程序获取存储接口管理子系统返回的文件上传结果并把结果返回给用户。

步骤十五、用户查看结果,将冗余度高的多媒体文件存储到云存储平台中。

本发明为了最大限度的提高冗余文件的定位速度,系统在用户上传文件的同时对文件的指纹信息进行快速验证,同时系统执行保存相关的文件冗余信息记录、修改被引用文件的引用频率等操作,保证用户可以在文件上传成功之后顺利访问到该文件。为了快速地在云存储平台上匹配出用户上传文件所对应的指纹信息,将所有的文件元数据记录载入计算机的内存中并在磁盘上做备份效率最为高效,但是考虑到服务器内存大小的限制,以及云存储平台在运行的过程中文件数量会快速增长,所有的文件元数据记录难以完全加载到一台服务器的内存中。每个存储管理子系统都将它所管理的存储服务器上的全部文件元数据记录从磁盘预加载到内存中,并维护文件指纹信息和文件元数据记录之间的映射关系,这样云存储平台上的文件元数据记录都分散存储于各台存储服务器的内存中,充分利用了云存储平台中每台服务器的内存空间,并且在匹配文件指纹信息的过程中多个存储管理子系统的匹配过程是并行执行的,有效的提高了冗余文件的定位速度,提高了用户存储文件的交互体验。

本发明为了提高云存储平台的可扩展性,克服单台存储服务器磁盘存储空间不足的瓶颈,当某台云存储服务器的磁盘空间利用率在达到一定阈值之后,如果应用程序继续向该台存储服务器中的某个存储目录dir1中存储文件,那么云存储平台会根据当前各台存储服务器的负载情况寻找出一台状态最佳的服务器,并在该服务器中生成一个新的存储目录dir2作为dir1的扩容存储目录结点,这样应用程序向存储目录dir1中保存的文件被重定向保存到了dir2中,当dir2所在的存储服务器的磁盘空间利用率也达到一定阈值之后,系统会自动为dir2确定一个扩容存储目录结点,当应用程序需要获取dir1中全部文件访问路径的时候,系统会自动把dir1中存储的文件连同它的扩容存储目录结点中存储的文件全部返回给应用程序,使应用程序在存储文件的时候不必担心某个存储目录会出现磁盘存储空间不足的问题,解决了云存储平台在运行过程中实时地给存储目录逻辑扩容的技术难题,使云存储平台的扩展性得到了很大的提升。

本发明实现的云存储平台中每个存储服务器都由部署在其上的Apache提供多媒体文件的web访问服务,云存储平台为了提高用户文件的存储安全性和访问安全性,避免用户文件被网络爬虫按照一定规则窃取,同时还要保证应用程序通过云存储平台存储的文件不被其他应用程序访问。存储接口管理子系统会对用户上传的每个文件都生成一个时间戳并分配一个10位长度的随机数存储于文件名中,它相当于每个多媒体文件的“私人秘钥”,该秘钥可以保证所有获取文件的请求都是经过云存储平台“批准的”,可以有效防止网络爬虫根据某些已知文件的访问路径通过暴力破解的方式非法获取到其他文件的访问路径。同时,应用程序在系统初始化的时候云存储系统会给它授权一个编号,该编号由一个64位长度的字符串组成,在存储文件和访问文件的时候应用程序需要给云存储平台提供该编号,该编号相当于应用程序的“身份证”,可以有效防止第三方应用程序在知道了存储目录树结构的情况下非法窃取云存储平台上的用户文件。

通过以上几个关键设计思想实现的云存储平台架构,实现了高吞吐量情况下多媒体文件的分布式存储和集中访问,并在降低了存储成本且不影响用户体验的情况下,实现了多媒体文件在云存储平台内的重复数据删除,同时实现了云存储平台中存储目录的逻辑扩容。

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