具体实施方式
本发明实施例提供了一种文件操作方法及其对应的控制器及文件操作系统,主要根据对文件的操作请求,从备选存储池单元的集合中选择用于对所述文件执行对应操作的目标存储池单元,并以所述目标存储池单元信息响应所述操作请求,这样,可当客户端进行文件存储时,通过在备选存储池单元的集合中选择若干目标存储池单元进行文件的分布式存储,可当客户端进行异地文件读取时,可在存储有待读取文件的各备选存储池单元中选择目标存储池单元以提供给客户端进行访问,总之,其以简单的文件操作处理流程,提高了系统对文件操作请求的处理速度及响应速度,提升了用户的满意度,并拓宽了文件管理技术在大流量文件数据流处理领域的应用。
下面通过多个具体实施例对本发明的文件操作方法及其对应的控制器及文件操作系统进行说明。
如图1所示,本发明文件操作方法的第一实施例主要包括如下流程:
101,客户端向集群中的分发器发送对待存储的文件的存储请求,该存储请求中携带有文件的文件标识(Identification,ID);
102,分发器将存储请求转发到集群中的控制器;
103,控制器查询本地预设定的文件ID与存储池单元信息映射表,判断其中是否存在与上述文件ID对应的存储池单元信息,具体的,每个集群中设置有若干存储池单元,各个集群的每个存储池单元均用于存储文件并提供给客户端进行访问操作,可通过在不同集群的存储池单元中存储相同的文件实现不同集群之间的同步,文件在存储池单元存储成功的同时,即在上述文件ID与存储池单元信息映射表中建立了文件ID与其对应存储池单元信息的映射关系,而各集群的控制器可连接到同一集群管理器上,从而各集群的控制器之间可进行文件ID与存储池单元信息映射表共享,例如第一集群中的第一存储池存储有第一文件,则第一集群中的第一控制器的第一文件ID与存储池单元信息映射表则建立了第一文件与其存储池单元信息的第一映射关系,那么,第二集群中的第二控制器可通过与其连接的集群管理器获得第一控制器的第一文件ID与存储池单元信息映射表中的信息,从而第二控制器可判断其所在第二集群中的第二存储池是否存储有待存储的文件,同时也可以判断第一集群中的第一存储池是否存储有待存储的文件;
104,当上述103判断为不存在与上述文件ID对应的存储池单元信息时,则指示待存储的文件没有预先存储到各集群的存储池单元中,那此时控制器根据各备选存储池单元的负载情况,从备选存储池单元的集合中确定用于对文件执行存储操作的目标存储池单元,具体地,集群管理器可从与之相连的各集群的控制器上获得对应集群中存储池单元的负载因素信息(如访问量信息等),这样,集群的控制器既可从其所在集群的存储池单元获得负载因素信息,又可通过集群管理器获得其他集群存储池单元的负载因素信息,并可通过各存储池单元的负载因素信息综合得到各存储池单元的负载情况,由此对各存储池单元进行负载指示值的排序,从而根据各存储池单元的负载指示值排序,确定负载相对较轻或者最轻的备选存储池单元作为目标存储池单元以处理文件存储操作;
105,控制器在文件ID与存储池单元信息映射表中建立上述文件ID与目标存储池单元信息的映射关系;
106,控制器以各目标存储池单元信息(如路径信息)响应客户端的存储操作请求,具体地,目标存储池单元信息可以是目标存储池的runid组,控制器将各目标存储池的runid组依次发送到分发器及客户端;
这样,各客户端、分发器、控制器及存储单元之间即可根据上述响应完成后续的文件存储:
107,分发器向控制器返回该分发器的runid;
108,客户端向分发器发送文件;
109,分发器根据文件的文件ID及目标存储池信息runid组,将文件发送到各目标存储池进行存储。
作为一种实施方式,在上述105与106之间,还可以包括如下步骤:
控制器建立用于标识上述待存储的文件的存储状态的文件状态映射表,具体地,文件的存储状态包括文件在目标存储池中存储成功或失败的状态信息;
这样,当目标存储池单元的文件的存储失败时,控制器从文件ID与存储池单元信息映射表中删除文件ID与目标存储池单元信息的映射关系,并删除上述的文件状态映射表,而当目标存储池单元的文件的存储成功时,删除上述文件状态映射表,具体地,当某一目标存储池单元的文件的存储失败时,该目标存储池单元分别向控制器及分发器返回文件存储失败信息,分发器判断是否所有的目标存储池单元均对文件存储失败,若是则分发器请求控制器重新分配目标存储池单元对文件进行存储,并从文件ID与存储池单元信息映射表中删除各个文件ID与目标存储池单元信息的映射关系,并删除上述的文件状态映射表,最后,只要有一个目标存储池单元对文件存储成功并向控制器返回了存储成功信息,则保留文件ID与存储池单元信息映射表中的文件ID与成功存储文件的目标存储池单元信息的映射关系,并删除上述文件状态映射表。
如图2所示,本发明文件操作方法的第二实施例主要包括如下流程:
201,客户端向集群中的分发器发送对待读取的文件的读取请求,该读取请求中携带有文件的文件标识(Identification,ID);
202,分发器将读取请求转发到集群中的控制器;
203,控制器查询本地预设定的文件ID与存储池单元信息映射表,判断其中是否存在与上述文件ID对应的存储池单元信息,具体的,每个集群中设置有若干存储池单元,各个集群的每个存储池单元均用于存储文件并提供给客户端进行访问操作,可通过在不同集群的存储池单元中存储相同的文件实现不同集群之间的同步,文件在存储池单元存储成功的同时,即在上述文件ID与存储池单元信息映射表中建立了文件ID与其对应存储池单元信息的映射关系,而各集群的控制器可连接到同一集群管理器上,从而各集群的控制器之间可进行文件ID与存储池单元信息映射表共享,例如第一集群中的第一存储池存储有第一文件,则第一集群中的第一控制器的第一文件ID与存储池单元信息映射表则建立了第一文件与其存储池单元信息的第一映射关系,那么,第二集群中的第二控制器可通过与其连接的集群管理器获得第一控制器的第一文件ID与存储池单元信息映射表中的信息,从而第二控制器可判断其所在第二集群中的第二存储池是否存储有待存储的文件,同时也可以判断第一集群中的第一存储池是否存储有待存储的文件;
204,当上述203判断为存在与上述文件ID对应的存储池单元信息时,则指示待存储的文件已预先存储到某集群的存储池单元中,那此时控制器确定与文件ID对应的存储池单元信息所指示的存储池单元为备选存储池单元,根据各备选存储池单元的负载情况,从备选存储池单元的集合中确定用于对文件执行读取操作的目标存储池单元,具体地,集群管理器可从与之相连的各集群的控制器上获得对应集群中存储池单元的负载因素信息(如访问量信息等),这样,集群的控制器既可从其所在集群的存储池单元获得负载因素信息,又可通过集群管理器获得其他集群存储池单元的负载因素信息,并可通过各存储池单元的负载因素信息综合得到各存储池单元的负载情况,由此对各存储池单元进行负载指示值的排序,从而根据各存储池单元的负载指示值排序,确定负载相对较轻或者最轻的备选存储池单元作为目标存储池单元以处理文件读取操作;
205,控制器以各目标存储池单元信息响应客户端的读取操作请求,具体地,目标存储池单元信息可以是目标存储池的runid组,控制器将各目标存储池的runid组依次发送到分发器及客户端;
206,客户端即可向分发器、目标存储池单元发送文件读取指令,完成后续的文件读取。
需要说明的是,本发明实施例的文件操作方法可应用于手机电视服务或云存储服务等具体应用中,例如,当应用于手机电视服务中时,使用者的手机即作为上述客户端,从而依次由集群中的控制器对其提供目标存储单元,从而系统可通过该目标存储单元为手机提供手机电视业务流媒体文件的存储或读取等文件操作。
相应地,本发明实施例还提供了如图4所示的本发明实施例的文件操作系统,下面对其进行具体说明,同时也对本发明实施例的控制器进行具体说明。
参照图3,本发明实施例的文件操作系统主要包括客户端301、若干个集群302以及集群管理器303、集群分发器304,客户端301与集群302无线或有线相连,集群302均分别连接到集群管理器303、集群分发器304上,而集群302包括若干存储池单元3021、分发器3022及控制器3023,存储池单元3021、分发器3022分别与控制器3023相连,其中:
客户端301用于发送对文件的操作请求,具体地,操作请求可以是对文件的存储请求或读取请求等;
集群302用于根据操作请求进行对应的处理,具体可如其所包含的网元所述:
存储池单元3021用于存储文件并提供给客户端301进行访问操作,可通过在不同集群302的存储池单元3021中存储相同的文件实现不同集群302之间的同步;
集群分发器304用于配合分发器3022完成各存储池单元3021之间的文件同步及分布式存储;
分发器3022用于将客户端301发送的操作请求转发到控制器3023,接收控制器3023对操作请求的响应并转发到客户端301;
集群管理器303用于向控制器3023提供各备选的存储池单元的负载情况,具体地,集群管理器303可从与之相连的各集群302的控制器3023上获得对应集群302中存储池单元3021的负载因素信息(如访问量信息等),并将该负载因素信息反馈到控制器3023;
控制器3023用于根据分发器3022从客户端301转发的操作请求,从备选的存储池单元3021的集合中选择用于对文件执行对应操作的目标存储池单元3021,并以目标存储池单元3021信息响应操作请求,具体地,控制器3023既可从其所在集群302的存储池单元3021获得负载因素信息,又可通过集群管理器303获得其他集群302存储池单元3021的负载因素信息,并可通过各存储池单元3021的负载因素信息综合得到各存储池单元3021的负载情况,由此对各存储池单元3021进行负载指示值的排序,从而根据各存储池单元3021的负载指示值排序,确定负载相对较轻或者最轻的备选存储池单元3021作为目标存储池单元3021以处理文件操作。
其中,上述控制器3023可包括如图4所示的结构:
获取单元401用于获得客户端301对文件的操作请求;
选择单元402用于根据所述操作请求,从备选存储池单元3021的集合中选择用于对文件执行对应操作的目标存储池单元3021;
响应单元403用于以目标存储池单元信息响应所述操作请求。
作为一种实施方式,当操作请求为携带有文件的文件ID的存储请求时,上述控制器3023还可以表现为如图5所示的结构:
其中选择单元402包括:
存储单元501用于存储预设定的文件ID与存储池单元信息映射表;
查询单元502用于查询文件ID与存储池单元信息映射表,判断是否存在与文件ID对应的存储池单元信息;
第一确定单元503用于当查询单元502判断为否时,根据备选存储池单元3021的负载情况,从备选的存储池单元3021的集合中确定目标存储池单元3021以进行文件存储;
建立单元504用于在文件ID与存储池单元信息映射表中建立文件ID与目标存储池单元信息的映射关系,
同时,控制器3023还包括:
暂存单元505用于建立用于标识文件的存储状态的文件状态映射表;
处理单元506用于当目标存储池单元3021的文件的存储失败时,从文件ID与存储池单元信息映射表中删除文件ID与目标存储池单元信息的映射关系,并删除文件状态映射表;当目标存储池单元3021的所述文件的存储成功时,删除上述文件状态映射表。
作为一种实施方式,当操作请求为携带有文件的文件ID的读取请求时,上述控制器3023还可以表现为如图6所示的结构:
其中选择单元402包括:
存储单元501用于存储预设定的文件ID与存储池单元信息映射表;
查询单元502用于查询文件ID与存储池单元信息映射表,判断是否存在与文件ID对应的存储池单元信息;
第二确定单元601用于当查询单元502判断为是时,确定与文件ID对应的存储池单元信息所指示的存储池单元3021为所述备选存储池单元3021,并根据备选存储池单元3021的负载情况,从备选存储池单元3021的集合中确定目标存储池单元3021以进行文件读取。
需要说明的有如下几点:
1、采用上述图3所示的分布式存储池单元架构的文件操作系统,可管理海量的文件,文件可通过分布式的方式存储于各个存储池单元3021中,而存储池单元3021中的硬盘只需划分一个分区进行文件存储即可;
2、上述文件操作系统可根据实际业务类型,开发不同的应用服务接口,通过不同的适配器提供不同的服务,能够适配不同的业务,支持个性化的需求;
3、上述文件操作系统为业务应用提供输入输出接口,简化了新产品项目的设计及嵌入。
另外,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。