一种分发文件的方法及系统与流程

文档序号:12008171阅读:253来源:国知局
一种分发文件的方法及系统与流程
本发明涉及计算机技术领域,尤其涉及一种分发文件的方法及系统。

背景技术:
分布式存储系统,是将数据分散存储在多台独立的设备上,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。在分布式存储系统中,为了更好地为用户提供服务,分片服务器将文件分成若干数据片,然后分发存储在若干存储节点上。数据片的信息包括本片的基本信息,如本分片的序列号、本分片的时间长度、本分片所需要的平均网络带宽,此外还包括数据片校验和及数据片的私有信息。由于网络的状态是变化波动的,为了适应不同的环境,如电影内容的热门程度、访问频率,以及各存储节点的负载均衡和系统容错性,分片服务器上具有多种分片和存储策略。现有技术的缺陷是,一旦主分片服务器在分片和分发过程中出现故障,其备用分片服务器不得不将重新进行分片和分发,浪费了大量的资源。

技术实现要素:
本发明实施例提供了一种分发文件的方法及系统,用于当分片服务器在分片和分发过程中出现故障时,使用备用服务器继续进行分片和分发,避免了备用服务器重新进行分片和分发,提高系统工作效率。本发明实施例提供的一种分发文件的方法包括:第一分片服务器将待分发文件按选择的分片策略划分数据片,并按序分发给各存储节点,以及根据数据片的分发进程向各存储节点发送动态分发表,所述动态分发表中至少包含已分发的各数据片与各存储节点之间的对应关系;当任一存储节点确定数据片接收失败时,根据所述动态分发表,确定最后一条记录对应的前存储节点,并向所述前存储节点发送用于指示数据片接收失败的消息,该消息中至少包括所述文件的标识;所述前存储节点根据所述文件的标识将对应文件最新接收的数据片发送给第二分片服务器;第二分片服务器解析接收的数据片,确定出所述文件标识对应的数据片序号,采用对应的分片策略将所述文件划分数据片;以及,从所述数据片序号的后一个数据片开始,接替所述第一分片服务器向各存储节点发送后续各数据片。本发明实施例提供的一种分发文件的系统包括:第一分片服务器,第二分片服务器,至少两个存储节点;第一分片服务器用于将待分发文件按选择的分片策略划分数据片,并按序分发给各存储节点,以及根据数据片的分发进程向各存储节点发送动态分发表,所述动态分发表中至少包含已分发的各数据片与各存储节点之间的对应关系;所述存储节点用于当确定数据片接收失败时,根据所述动态分发表,确定最后一条记录对应的前存储节点,并向所述前存储节点发送用于指示数据片接收失败的消息,该消息中至少包括所述文件的标识;所述存储节点还用于当接收到用于指示数据片接收失败的消息时,根据所述文件的标识将对应文件最新接收的数据片发送给第二分片服务器;第二分片服务器用于解析接收的数据片,确定出所述文件标识对应的数据片序号,采用对应的分片策略将所述文件划分数据片;以及,从所述数据片序号的后一个数据片开始,接替所述第一分片服务器向各存储节点发送后续各数据片。通过以上技术方案可知,本发明中通过上一个已经分发成功的存储节点向第二分片服务器反馈数据片,第二分片服务器从该数据片解析出分片策略和数据片序号等信息,并接替第一分片服务器分送数据片;避免了第二分片服务器在系统中重新进行分片和分发,提高了系统工作效率。附图说明图1为本发明实施例提供的分发文件的方法的流程示意图;图2为本发明实施例提供的分发文件的系统的结构示意图;图3为本发明实施例提供的分发文件的系统的另一结构示意图。具体实施方式本发明实施例提供了一种分发文件的方法及系统,用于当主分片服务器在分片和分发过程中出现故障时,使用备用服务器继续进行分片和分发,避免了备用服务器重新进行分片和分发,提高系统工作效率。参见图1,本发明实施例提供的一种分发文件的方法包括:S101、第一分片服务器将待分发文件按选择的分片策略划分数据片,并按序分发给各存储节点,以及根据数据片的分发进程向各存储节点发送动态分发表,所述动态分发表中至少包含已分发的各数据片与各存储节点之间的对应关系;S102、当任一存储节点确定数据片接收失败时,根据所述动态分发表,确定最后一条记录对应的前存储节点,并向所述前存储节点发送用于指示数据片接收失败的消息,该消息中至少包括所述文件的标识;S103、所述前存储节点根据所述文件的标识将对应文件最新接收的数据片发送给第二分片服务器;S104、第二分片服务器解析接收的数据片,确定出所述文件标识对应的数据片序号,采用对应的分片策略将所述文件划分数据片;以及,从所述数据片序号的后一个数据片开始,接替所述第一分片服务器向各存储节点发送后续各数据片。较佳的,每一数据片中包括:分片和分片策略对应的标识符,数据片序号,以及所述文件的文件名。较佳的,各个分片服务器预先存储相同的分片策略表。本发明提供的系统中至少存在两个分片服务器,各个分片服务器的主备用关系随着设备的工作状态可能发生变化。本发明中的第一分片服务器指的是当前进行分片、分发工作的主分片服务器,第二分片服务器指的是接替当前主分片服务器的备用分片服务器。主分片服务器上存储有一张分片策略表,描述了各种可执行的分片策略,且每种策略均有一个唯一的标识符;备用分片服务器上同步有一张完全相同的分片策略表。分片服务器在进行数据分片时,一般会根据带宽、数据类型等选择一种策略,例如各片大小相同或者各片大小按顺序呈指数增长。分片服务器在进行文件分片时,生成的数据片中携带分片策略对应的标识符,分片后各数据包被顺序分发给各存储节点。备用分片服务器只有知道主分片服务器采用的是哪种策略,在接替主分片服务器再次进行分片时,才可能避免重新进行分片和分发。此外,备用分片服务器还需要确定数据片序号,才能找到对应的策略下主分片服务器分发失败的那个数据片。较佳的,步骤S102中,所述根据数据片的分发进程向各存储节点发送动态分发表,包括:当确定任一数据片开始发送时,或经过预设周期,根据数据片的分发进程向各存储节点发送动态分发表。较佳的,所述根据数据片的分发进程向各存储节点发送动态分发表,还包括:当第一分片服务器确定任一尚未完成数据片接收的存储节点发生故障时,第一分片服务器重新确定用于接收该存储节点对应的数据片的存储节点,并根据重新确定的存储节点更新动态分发表;向各存储节点发送动态分发表。主分片服务器在开始进行分片时,根据分片策略和被分片内容大小以及当前带宽和传输速度计算出一张分发表,即预测每一个数据片到达的存储节点,以及开始/到达的时间,并将该数据发送给各存储节点,随着分片和分发的持续进行,不断地修正分发表数据并发送给各存储节点。分发表内容包括存储节点编码、数据片序号,也可以包括开始传输的时间等信息。分片服务器在进行数据片的分发时,对于最终是哪个存储节点接收到了哪个数据片,需要根据实际情况和分发策略动态决定。也就是说,对于任一接收失败的存储节点而言,它无法预知其前存储节点,因此动态分发表则起到了用于查询前存储节点的作用。而动态分发表的及时更新,保障了各个存储节点能够获取及时、准确的分发信息,这样当分发结果发生变化如原本需要接收一数据片的存储节点发生故障时,之后的存储节点依然能够准确找到其发生变更的前存储节点。正在接收数据片的存储节点在发现数据片接收失败,即与分片服务器的数据传输断掉达到一定时间门限值时,判断主分片服务器发生故障;存储节点则开始查询动态分发表。在找到前存储节点之后,接收失败的存储节点将接收失败的消息发送给前存储节点,该消息中至少包括所述文件的标识。这里的标识,既可能是数据片的文件名,也可能是所述文件的文件名,数据片的文件名与文件的文件名预先设置有公知的对应规则。所述前存储节点根据消息中的标识,找到所存储的众多数据片中对应的数据片,将其封装发送给备用服务器。S104中,备用分片服务器收到封装的数据片后,解析抽取出该数据片中携带的分片策略的标识符、数据片序号,以及文件的标识等信息,找到该文件并按照标识符对应的分片策略进行重新分片,并分发刚才收到的数据片序号之后的数据片。后续对各个数据片分发采用的策略,既可能与先前主分片服务器采用的策略相同,也可能不同。本发明中,存储节点发现断线接收失败时,已经接收到的数据片是不全的,甚至可能只有首先传递的文件名,无法从中解析出分片策略信息,因此,只能通过这个文件名,从动态分发表中找到前一个存储节点,通过前存储节点来告知备用分片服务器哪个文件分发出了故障,该文件是如何分片,分发到哪个数据片了。参见图2,本发明实施例提供的一种分发文件的系统包括:第一分片服务器21,第二分片服务器22和至少两个存储节点;第一分片服务器21用于将待分发文件按选择的分片策略划分数据片,并按序分发给各存储节点,以及根据数据片的分发进程向各存储节点发送动态分发表,所述动态分发表中至少包含已分发的各数据片与各存储节点之间的对应关系;所述存储节点23用于当确定数据片接收失败时,根据所述动态分发表,确定最后一条记录对应的前存储节点,并向所述前存储节点发送用于指示数据片接收失败的消息,该消息中至少包括所述文件的标识;所述存储节点23还用于当接收到用于指示数据片接收失败的消息时,根据所述文件的标识将对应文件最新接收的数据片发送给第二分片服务器;第二分片服务器22用于解析接收的数据片,确定出所述文件标识对应的数据片序号,采用对应的分片策略将所述文件划分数据片;以及,从所述数据片序号的后一个数据片开始,接替所述第一分片服务器向各存储节点发送后续各数据片。第一分片服务器21用于根据数据片的分发进程向各存储节点发送动态分发表时,包括:动态分发表更新单元,用于当确定任一数据片开始发送时,或经过预设周期,根据数据片的分发进程向各存储节点发送动态分发表。第一分片服务器21用于根据数据片的分发进程向各存储节点发送动态分发表时,还包括:存储节点故障处理单元,用于当确定任一尚未完成数据片接收的存储节点发生故障时,第一分片服务器重新确定用于接收该存储节点对应的数据片的存储节点,并根据重新确定的存储节点更新动态分发表;参见图3,较佳的,该系统还包括:文件服务器25,用于向第一分片服务器或第二分片服务器提供所述文件。综上所述,由于备用分片服务器分片及分发策略与主分片服务器相同,因此其与主分片服务器分片的结果是一样的,又由于备用分片服务器收到的消息中,包含了已经正常分发的数据片的序列号,并从之后的进行分发,该序号及排在其前面的数据片不需要再重新分发,因此与现有技术相比,主分片服务器出现故障时,主备分片服务器实现了无缝衔接。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1