首页> 中国专利> 基于云存储的文件处理方法、系统及服务器集群系统

基于云存储的文件处理方法、系统及服务器集群系统

摘要

本申请公开了一种基于云存储的文件处理方法、系统及服务器集群系统,该方法包括:WEB服务器接收客户端发送的文件上传请求;WEB服务器向客户端返回服务器集群为待上传新文件生成的文件ID;客户端对新文件进行切片,并为每个切片文件生成唯一的切片ID;客户端将切片文件数据包上传给WEB服务器,切片文件数据包中包含文件ID、每个切片文件的切片ID和每个切片文件的切片数据;WEB服务器将切片文件数据包中的每个切片文件的切片数据发送到服务器集群中的对应服务终端上进行存储。本申请实施例通过对文件进行分片处理并在服务器集群中对切片文件进行分布式存储,从而使得基于服务器集群的云存储性能更加优化。

著录项

  • 公开/公告号CN102833294A

    专利类型发明专利

  • 公开/公告日2012-12-19

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201110164407.4

  • 申请日2011-06-17

  • 分类号H04L29/08(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人陈蕾;逯长明

  • 地址 英属开曼群岛大开曼岛资本大厦一座四层847号邮箱

  • 入库时间 2023-12-18 07:46:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-05-20

    授权

    授权

  • 2013-02-06

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20110617

    实质审查的生效

  • 2012-12-19

    公开

    公开

说明书

技术领域

本发明涉及数据处理技术领域,特别涉及一种基于云存储的文件处理方 法、系统及服务器集群系统。

背景技术

云计算(Cloud Computing)是分布式处理(Distributed Computing)、并 行处理(Parallel Computing)和网格计算(Grid Computing)的发展,通过网 络将庞大的计算处理程序拆分成若干较小的子程序,将这些小程序分别交由 多台服务器所组成的系统进行计算,并输出计算结果。云存储是在云计算概 念上延伸出来的,指通过集群应用、网格技术或分布式文件系统等功能,将 网络中大量不同类型的存储设备通过应用软件集合在一起,实现协同工作, 共同对外提供数据存储和业务访问功能。即当云计算系统运算和处理的核心 是大量数据的存储和管理时,云计算系统就需要配置大量的存储设备,此时 的云计算系统就转变为一个云存储系统,所以云存储系统就是一个以数据存 储和管理为核心的云计算系统。这个存储系统由多个存储设备组成,通过集 群功能、分布式文件系统或类似网格计算等功能联合起来协同工作,并通过 一定的应用软件或应用接口,为用户提供一定类型的存储服务和访问服务。

现有的云存储方案都是基于整个文件进行存储,即应用软件或者用户将 整个文件上传,由于以文件为单位进行存储,这容易造成资源的浪费。例如, 当用户上传了一个较大的文件后,如果只修改了该文件的一小部分,此时仍 需要重传整个文件;又例如,当用户增加了一个文件版本,即使新增加的文 件版本与之前的文件版本差别非常小,用户同样需要将整个新的文件版本上 传。由此可知,现有技术的云存储方式,使得用户需要在每一次对文件的局 部修改后,都重传整个文件,这不但浪费了系统的存储空间和网络带宽,而 且容易导致文件系统的访问速度下降。

发明内容

本发明实施例的目的在于提供一种基于云存储的文件处理方法、系统及 服务器集群系统,以解决现有云存储方式浪费系统的存储空间和网络带宽, 容易导致文件系统的访问速度下降的问题。

为解决上述技术问题,本申请实施例提供一种基于云存储的文件处理方 法,是这样实现的:

一种基于云存储的文件处理方法,包括:

WEB服务器接收客户端发送的文件上传请求,所述文件上传请求用于请 求向服务器集群上传新文件;

WEB服务器向所述客户端返回所述服务器集群为所述新文件生成的文件 ID;

所述客户端对所述新文件进行切片,并为每个切片文件生成唯一的切片 ID;

所述客户端将切片文件数据包上传给WEB服务器,所述切片文件数据包 中包含文件ID、每个切片文件的切片ID和每个切片文件的切片数据;

WEB服务器将所述切片文件数据包中的每个切片文件的切片数据发送到 所述服务器集群中的对应服务终端上进行存储,其中,所述服务器集群保存 所述文件ID与所述切片ID的对应关系。

为解决上述技术问题,本申请实施例还提供一种基于云存储的文件处理 系统,是这样实现的:

一种基于云存储的文件处理系统,包括:客户端、WEB服务器和服务器 集群,

所述WEB服务器,用于接收客户端发送的文件上传请求,所述文件上传 请求用于请求向服务器集群上传新文件,并向所述客户端返回所述服务器集 群为所述新文件生成的文件ID;

所述客户端,用于对所述新文件进行切片,并为每个切片文件生成唯一 的切片ID,将切片文件数据包上传给WEB服务器,所述切片文件数据包中 包含文件ID、每个切片文件的切片ID和每个切片文件的切片数据;

所述WEB服务器,还用于将所述切片文件数据包中的每个切片文件的切 片数据发送到所述服务器集群;

所述服务器集群,用于将所述每个切片文件的切片数据存储到对应的服 务终端上,以及保存所述文件ID与所述切片ID的对应关系。

为解决上述技术问题,本申请实施例还提供一种基于云存储的服务器集 群系统,是这样实现的:

一种基于云存储的服务器集群系统,包括:WEB服务器和服务器集群, 所述服务器集群中包含若干服务终端,

所述WEB服务器,用于接收客户端发送的文件上传请求,所述文件上传 请求用于请求向服务器集群上传新文件,向所述客户端返回所述服务器集群 为所述新文件生成的文件ID,接收所述客户端上传的切片文件数据包,所述 切片文件数据包中包含文件ID、每个切片文件的切片ID和每个切片文件的切 片数据;

所述服务器集群,用于接收所述WEB服务器发送的所述切片文件数据包 中的每个切片文件的切片数据,并将每个切片文件的切片数据发送到所述服 务器集群中的对应服务终端上进行存储,以及保存所述文件ID与所述切片ID 的对应关系。

由以上本发明实施例提供的技术方案可见,本申请实施例中WEB服务器 接收客户端发送的文件上传请求后,向客户端返回服务器集群为新文件生成 的文件ID,客户端对新文件进行切片,并为每个切片文件生成唯一的切片ID, 将切片文件数据包上传给WEB服务器,切片文件数据包中的每个切片文件包 含文件ID、每个切片文件的切片ID和每个切片文件的切片数据,WEB服务 器将切片文件数据包中的每个切片文件的切片数据发送到服务器集群中的对 应服务终端上进行存储。本申请实施例通过对文件进行分片处理并在服务器 集群中对切片文件进行分布式存储,从而使得基于服务器集群的云存储性能 更加优化;应用本申请实施例上传修改后的文件时,由于只需上传用户修改 的文件切片,而无需重传整个文件,因此减少了服务器集群中的冗余数据, 节省了存储空间,减少了客户端上传文件的时间。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实 施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于 本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这 些附图获得其他的附图。

图1为本申请实施例所应用的云存储架构的示意图;

图2为本申请基于云存储的文件处理方法的第一实施例流程图;

图3为本申请基于云存储的文件处理方法的第二实施例流程图;

图4为本申请基于云存储的文件处理方法的第三实施例流程图;

图5为本申请基于云存储的文件处理方法的第四实施例流程图;

图6为本申请基于云存储的文件处理方法的第五实施例流程图;

图7为本申请基于云存储的文件处理方法的第六实施例流程图;

图8为本申请基于云存储的文件处理系统的实施例框图;

图9为本申请基于云存储的服务器集群系统的实施例框图。

具体实施方式

在如下本发明的多个实施例中提供了一种基于云存储的文件处理方法、 系统及服务器集群系统。

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使 本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对 本发明实施例中技术方案作进一步详细的说明。

参见图1,为本申请实施例所应用的云存储架构示意图:

该云存储架构包括:客户端、WEB服务器(WebServer)和服务器集群, 其中,服务器集群进一步包括至少一个服务集群整合端(Service Manager)、 每个集群服务整合端下可以连接若干服务分配端(Service Master)、每个服务 分配端下可以连接若干服务终端(Service Worker)。

需要说明的是,图1中示出的服务器集群由多集群系统组成,多系统集 群中包括若干单集群系统,每个单集群系统为一个服务分配端和其下连接的 若干服务终端,在实际应用时,本申请实施例根据所存储文件的容量大小可 以选择采用由多集群系统组成的服务器集群,也可以选择采用由单集群系统 组成的服务器集群;另外,图1中仅示出了一台WEB服务器,实际应用中与 客户端交互的也可以是WEB服务器集群,此时在接收到某个客户端上传的文 件处理请求时,可以通过负载均衡调度将该处理请求分配到某一台WEB服务 器上进行处理。综上,图1所示出的云存储架构不应视为对本申请实施例存 储架构的限制。

图1中,当用户通过客户端软件对文件进行上传、下载或者删除操作时, 这些操作命令可以转化为http请求,通过WEB服务器上传到服务器集群进行 处理。下面将结合图1示出的系统架构对本申请基于云存储的文件处理实施 例进行描述。

参见图2,为本申请基于云存储的文件处理方法的第一实施例流程图:

步骤201:WEB服务器接收客户端发送的文件上传请求,该文件上传请 求用于请求向服务器集群上传新文件。

步骤202:WEB服务器向客户端返回服务器集群为新文件生成的文件ID。

具体的,WEB服务器向服务器集群发送获取新文件的文件ID的请求, 服务器集群根据该请求为新文件分配文件ID,服务器集群将文件ID返回给 WEB服务器,WEB服务器将文件ID发送给客户端。其中,服务器集群中存 储了海量的文件,并且服务器集群为每个文件分配唯一的文件ID,例如,以 数字进行顺序编号的文件ID。当为上传请求中的文件分配了唯一文件ID后, 服务器集群可以进一步记录该文件ID与上传请求中所包含的信息之间的对应 关系,上传请求中所包含的信息可以包括用户ID、文件名称、文件路径等, 通过上述对应关系服务器集群可以对文件进行管理维护。

步骤203:客户端对新文件进行切片,并为每个切片文件生成唯一的切片 ID。

具体的,客户端可对新文件按照预设长度进行分块,生成若干切片文件, 其中,当分块后的剩余文件块的长度小于预设长度时,将该剩余文件块作为 一个切片文件,根据每个切片文件的文件数据,通过MD5哈希函数等计算每 个切片文件的切片ID,该切片ID可以唯一标识一个切片文件。

步骤204:客户端将切片文件数据包上传给WEB服务器,切片文件数据 包中包含文件ID、每个切片文件的切片ID和每个切片文件的切片数据。

步骤205:WEB服务器将切片文件数据包中的每个切片文件的切片数据 发送到服务器集群中的对应服务终端上进行存储,其中,服务器集群保存文 件ID与切片ID的对应关系。

假设客户端首次向服务器集群上传当前文件,则客户端可首先将当前文 件的文件ID和该文件所有切片文件的切片ID上传给WEB服务器,WEB服 务器将包含该当前文件的文件ID和所有切片文件的切片ID的查询请求发送 到服务器集群,该查询请求用于请求获取存储每个切片文件的服务终端的地 址。服务器集群接收到查询请求后,可以保存该文件ID与切片ID之间的对 应关系(即相当于保存了组成每个文件的切片文件的信息),服务器集群根据 每个切片ID通过一致性哈希算法计算存储每个切片文件的服务终端的地址; 服务器集群将服务终端的地址返回给WEB服务器,WEB服务器将切片文件 数据包中的每个切片文件的切片数据按照对应的服务终端的地址发送到服务 终端上进行存储,其中,服务终端可以存储每个切片文件的切片ID和切片数 据的对应关系。

下面简单描述一下采用一致性哈希算法计算服务终端地址的过程:假设 服务器集群中有N台服务器,将这N台服务器在逻辑上排列成一个环,环上 的每一台服务器按照顺时针方向编号(编号可以取0至N-1),在计算存储某 个切片文件的服务器地址时,可以用该切片文件的切片ID对N取模,假设取 模后得到的余数值为K,则从上述哈希环中编号为0的服务器开始顺时针获 取哈希环上的第K个服务器,则该第K个服务器即为用于存储该切片文件的 服务器。

进一步,客户端在上传文件之前,可以先将重复统计请求发送给WEB服 务器,以便请求统计服务器集群中是否已经存在了该文件中的切片数据,避 免重复上传。即客户端首先对文件进行切片,并通过MD5哈希函数等计算每 个切片文件的切片ID,然后将包含了每个切片文件的切片ID的重复统计请求 上传给WEB服务器,WEB服务器将重复统计请求转发到服务器集群,服务 器集群根据保存的切片ID信息查找是否已经保存过该重复统计请求中所包含 的切片ID,对于已经保存的切片ID,说明服务器集群中已经保存了对应的切 片文件,无需再进行重复上传,因此服务器集群将切片文件是否重复的信息 发送给WEB服务器,WEB服务器将切片文件是否重复的信息发送给客户端, 客户端根据切片文件是否重复的信息,将包含不重复切片文件的切片文件数 据包上传给WEB服务器;后续,WEB服务器只需要向服务器集群请求存储 不重复切片文件的服务终端地址,并依据该地址将不重复切片文件发送到对 应服务终端上进行存储即可。

在对上传文件进行重复统计时,WEB服务器可以进一步保存用户ID和 文件ID之间的对应关系,当不同用户上传同样的文件时,则WEB服务器中 可以保存一个文件ID与多个用户ID之间的对应关系;同时,述服务器集群 为每个切片ID设置引用计数器,每个引用计数器的计数值初始化为零,根据 重复统计结果,当某个切片ID重复时,则将该切片ID的引用计数器的计数 值加一。

参见图3,为本申请基于云存储的文件处理的第二实施例流程图,该实施 例示出了客户端请求上传新文件的过程:

步骤301:客户端向WEBServer发送创建新文件的文件上传请求。

当用户想要上传一个新文件时,客户端生成创建新文件的文件上传请求, 并将该文件上传请求发送到网络中用于处理该文件上传请求的WEBServer 上。

该文件上传请求中可以包括用户ID、文件名称和文件存储路径等。

步骤302:WEBServer向ServiceManager转发文件上传请求。

当本申请实施例中的服务器集群架构为图1中所示的架构时,WEBServer 需要将文件上传请求发送到服务器集群中的ServiceManager。

步骤303:ServiceManager为该新文件进行统一编码,生成文件ID。

服务器集群中包括了海量的文件,并且服务器集群中的ServiceManager 可以为每个文件分配唯一的文件ID,例如,以数字进行顺序编号的文件ID。 当为上传请求中的文件分配了唯一文件ID后,ServiceManager可以进一步记 录该文件ID与上传请求中所包含的信息之间的对应关系,上传请求中所包含 的信息可以包括用户ID、文件名称、文件路径等,通过上述对应关系服务器 集群可以对文件进行管理维护。

步骤304:ServiceManager将该新文件的文件ID返回给WEBServer。

步骤305:WEBServer将新文件的文件ID返回给客户端。

参见图4,为本申请基于云存储的文件处理的第三实施例流程图,由于客 户端请求上传的新文件可能是与原存储文件相比,仅修改了部分内容的新文 件,因此本实施例示出了客户端上传新文件前,获取切片文件重复信息的过 程:

步骤401:客户端对新文件按照预设长度进行切片,生成若干切片文件。

预设长度可以是经过试验计算得到的一个符合系统最优长度的数值,例 如,优选的为128k,将新文件顺序分割成若干长度为128K的切片文件,由 于新文件的长度可能不为128的整数倍,因此对于分割后剩余的不足128K的 数据块,可以将其作为一个切片文件。

步骤402:客户端根据切片文件的切片数据,可通过MD5哈希函数等计 算每个切片文件的切片ID。

对于分割后生成的每个切片文件,可以使用MD5哈希函数根据切片文件 的切片数据生成唯一标识该切片文件的切片ID。

步骤403:客户端向WEBServer发送重复统计请求,该重复统计请求中 包含每个切片文件的切片ID。

由于客户端上传的新文件可能是修改了部分数据的某个已有文件,因此 如果重传所有文件数据将导致服务器集群中产生冗余数据,因此本申请实施 例可以向服务器集群查询新文件中的每个切片文件是否重复。客户端向 WEBServer发送重复统计请求,该重复统计请求中包含每个切片文件的切片 ID。

步骤404:WEBServer向ServiceManager转发重复统计请求。

步骤405:ServiceManager获取用于存储切片文件的ServiceMaster。

由于本申请实施例采用了如图1所示的云存储服务器集群架构,因此在 服务器集群内部,处于上层的ServiceManager可以通过一致性哈希算法获取 用于存储切片文件的ServiceMaster,同理,处于上层的ServiceManager可以 通过一致性哈希算法获取用于存储切片文件的ServiceWorker。

其中,ServiceManager和ServiceMaster根据切片ID,分别通过一致性哈 希算法获取下层的ServiceMaster和ServiceWorker时的过程与步骤205中的描 述一致,在此不再赘述。ServiceManager在向某个ServiceMaster转发重复统 计请求时,该重复统计请求中包含了通过一致性哈希算法计算的由该 ServiceMaster存储的切片数据的对应的切片ID。

步骤406:ServiceManager将重复统计请求转发给获取的ServiceMaster。

步骤407:ServiceMaster通过一致性哈希算法计算存储切片文件的 ServiceWorker的地址。

ServiceMaster在向某个ServiceWorker转发重复统计请求时,该重复统计 请求中包含了通过一致性哈希算法计算的由该ServiceWorker存储的切片数据 的对应的切片ID。

步骤408:ServiceMaster按照ServiceWorker的地址将重复统计请求转发 给相应的ServiceWorker。

步骤409:ServiceWorker查找是否已保存重复统计请求中的切片ID。

如果从ServiceWorker中查找到重复统计请求中的切片ID,则说明该 ServiceWorker中已经保存了与该切片ID对应的切片数据,即该切片ID对应 的切片数据已经重复,无需再上传。

步骤410:ServiceWorker将切片文件是否重复的信息发送给 ServiceMaster。

ServiceWorker可以仅将统计出的不重复的切片文件的切片ID返回给 ServiceMaster,同时返回用于存储该切片文件的ServiceWorker的地址。

步骤411:ServiceMaster将切片文件是否重复的信息转发给 ServiceManager。

步骤412:ServiceManager将切片文件是否重复的信息转发给WEBServer。

WEBServer保存了需要上传的不重复的切片文件的切片ID和对应的 ServiceWorker的地址。

步骤413:WEBServer将切片文件是否重复的信息发送给客户端。

最终,客户端接收到的切片文件是否重复的信息中可以只包括经过重复 统计后的不重复的切片文件的切片ID。

需要说明的是,如果每一次上传新文件时,ServiceManager中都保存已上 传切片文件的切片ID,则每一次判断待上传切片文件是否重复的时候,可以 直接将切片ID发送到ServiceManager中进行查询,如果存在该切片ID,则 对应的切片文件重复,如果不存在该切片ID,则对应的切片文件不重复。

参见图5,为本申请基于云存储的文件处理的第四实施例流程图,该实施 例示出了根据获取的切片文件是否重复的信息上传切片文件的过程:

步骤501:客户端向WEBServer上传不重复的切片文件的切片ID和切片 数据。

在图4示出的第三实施例中,客户端已经获得了待上传新文件中不重复 的切片文件信息,因此本实施例中客户端只需要向WEBServer上传不重复的 切片文件的切片ID和切片数据即可。

步骤502:WEBServer根据接收到的切片文件的切片ID查找用于存储该 切片文件的ServiceWorker的地址。

根据前述第三实施例可知,在WEBServer中保存了服务器集群中的 ServiceWorker返回的待上传的不重复的切片文件的切片ID和对应的 ServiceWorker的地址,因此根据客户端上传的切片文件的切片ID查找存储该 切片文件的切片数据的ServiceWorker的地址。

步骤503:WEBServer按照ServiceWorker的地址将切片文件发送到对应 的ServiceWorker上。

步骤504:ServiceWorker保存接收到的切片文件。

进一步地,在步骤504之后,还可以包括:

步骤505:ServiceWorker向WEBServer返回存储完成的应答消息。

步骤506:WEBServer向客户端转发存储文成的应答消息。

参见图6,为本申请基于云存储的文件处理的第五实施例流程图,该实施 例示出了客户端请求下载文件的过程:

步骤601:客户端向WEBServer发送下载文件的下载请求,该下载请求 中包含所要下载文件的文件ID。

步骤602:WEBServer向ServiceManager转发该下载请求。

该下载请求用于从服务器集群中请求获取组成该下载文件的所有切片文 件的信息。

步骤603:ServiceManager根据一致性哈希算法获取用于存储切片文件的 ServiceMaster。

在服务器集群内部,处于上层的ServiceManager可以通过一致性哈希算 法获取用于存储该新文件的切片文件的ServiceMaster,同理,处于上层的 ServiceMaster可以通过一致性哈希算法获取用于存储切片文件的 ServiceWorker。

具体的,ServiceManager根据文件上传时保存的文件ID与切片ID的对 应关系,获取与该下载请求中的文件ID对应的所有切片ID。本申请实施例按 照切片文件上传时遵循的一致性哈希算法即可根据切片ID获取保存该切片文 件的ServiceMaster,以及该ServiceMaster下的ServiceWorker。

其中,在获取ServiceMaster时,假设服务器集群中ServiceManager下有 N台ServiceMaster,将这N台ServiceMaster在逻辑上排列成一个环,环上的 每一台ServiceMaster按照顺时针方向编号(编号可以取0至N-1),在计算存 储某个切片文件的切片数据的ServiceMaster地址时,可以用该切片文件的切 片ID对N取模,假设取模后得到的余数值为K,则从上述哈希环中编号为0 的ServiceMaster开始顺时针获取哈希环上的第K个ServiceMaster,则该第K 个ServiceMaster即为用于存储该切片文件的切片数据的ServiceMaster。

步骤604:ServiceManager将文件的下载请求转发给获取的ServiceMaster。

步骤605:ServiceMaster通过一致性哈希算法计算存储该文件的每个切片 文件的ServiceWorker的地址。

本步骤中通过一致性哈希算法计算ServiceMaster下的ServiceWorker的地 址的过程与步骤603中计算ServiceManager下的ServiceMaster的过程一致, 在此不再赘述。

步骤606:ServiceMaster将存储每个切片文件的ServiceWorker的地址发 送给ServiceManager。

步骤607:ServiceManager将存储每个切片文件的ServiceWorker的地址 转发给WEBServer。

步骤608:WEBServer根据ServiceWorker的地址向相应的ServiceWorker 请求读取切片文件。

对于服务器集群中的每个ServiceWorker,其可能需要并行处理多个切片 文件的下载请求。因此ServiceWorker可以将每个切片文件的下载请求封装成 任务加入下载队列中,并启动多线程对任务进行处理。

步骤609:ServiceWorker将切片文件返回给WEBServer。

步骤610:WEBServer将接收到的切片文件按照切片顺序组成请求下载的 文件。

ServiceWorker向WEBServer返回的切片文件中包含了每个切片文件的切 片数据、切片ID、切片文件在整个文件的切片顺序以及文件ID,WEBServer 将属于具有同一个文件ID的切片文件按照其切片顺序组成下载文件。

步骤611:WEBServer将请求下载的文件发送给客户端。

客户端向WEBServer发送下载请求时,WEBServer可以记录该客户端的 用户ID,当组成了下载文件后,按照用户ID将下载文件转发到相应的客户端 上。

上述实施例中,服务器集群在完成下载文件操作时,可以采用顺序下载 每个切片文件的方式进行,例如,ServiceManager顺序获取待下载文件的第一 个切片文件,并计算存储该切片文件的ServiceMaster,然后由该ServiceMaster 计算存储该切片文件的ServiceWorker,向该ServiceWorker发送下载第一个切 片文件的请求,以此类推,直到按照切片顺序下载完所有切片文件。

参见图7,为本申请基于云存储的文件处理的第六实施例流程图,该实施 例示出了客户端请求删除文件的过程:

步骤701:客户端向WEBServer发送删除文件的删除请求,该删除请求 中包含所要删除文件的文件ID和用户ID。

在前述实施例中,对于首次上传的切片文件,ServiceManager中可以保存 该切片ID与相应切片文件所属文件的文件ID之间的对应关系,同时为每个 切片ID设置一个引用计数器,该引用计数器的计数值初始化为0,后续该切 片文件每当被重复上传一次,则该计数器的计数值相应加一。

步骤702:WEBServer判断保存了删除请求中的文件ID与用户ID的对 应关系。

如果WEBServer中保存了文件ID与用户ID之间的对应关系,说明客户 端用户上传过与文件ID对应的文件,则用于该客户端用户执行删除操作。

步骤703:WEBServer向ServiceManager转发该删除请求。

该删除请求用于从服务器集群中请求删除组成该删除文件的所有切片文 件的信息。

步骤704:ServiceManager获取与文件ID对应的所有切片ID。

步骤705:ServiceManager判断每个切片ID的计数器的计数值是否为零, 如果不为零,则执行步骤706;否则,执行步骤707。

步骤706:将切片ID的计数器的计数值减一。

如果切片ID的计数器的计数值不为零,则说明该切片ID对应的切片数 据由客户端用户进行过重复上传,因此相应的将切片ID的计数器的计数值减 一即可,表示系统中对于该计数器的计数值的修改少一。将该计数器的计数 值将所述

步骤707:ServiceManager根据一致性哈希算法获取用于存储切片文件的 ServiceMaster。

如果切片ID的计数器的计数值为零,则说明该切片ID对应的切片数据 在系统中仅有一份,没有其它客户端用户对其进行操作,因此可以删除该切 片ID对应的切片数据本身。

在服务器集群内部,处于上层的ServiceManager可以通过一致性哈希算 法获取用于存储该文件的切片文件的ServiceMaster,同理,处于上层的 ServiceMaster可以通过一致性哈希算法获取用于存储切片文件的 ServiceWorker。

步骤708:ServiceManager将文件的删除请求转发给获取的ServiceMaster。

步骤709:ServiceMaster通过一致性哈希算法计算存储该文件的每个切片 文件的ServiceWorker的地址。

本实施例中通过一致性哈希算法计算用于存储每个切片文件的 ServiceWorker的地址的过程与前述第六实施例中的描述一致,在此不再赘述。

步骤710:ServiceMaster根据ServiceWorker的地址向相应的ServiceWorker 发送删除切片文件的请求,该请求中包含了待删除切片文件的切片ID。

步骤711:ServiceWorker根据切片ID删除其上存储的相应切片文件。

上述实施例中,服务器集群在完成删除文件操作时,可以采用顺序删除 每个切片文件的方式进行,例如,ServiceManager顺序获取待删除文件的第一 个切片文件,并计算存储该切片文件的ServiceMaster,然后由该ServiceMaster 计算存储该切片文件的ServiceWorker,向该ServiceWorker发送删除第一个切 片文件的请求,此时可以ServiceWorker可以判断该切片文件是否处于被读写 的状态,如果未处于被读写的状态,则可以执行删除该切片文件的操作,以 此类推,直到按照切片顺序删除完所有切片文件。

与本申请基于云存储的文件处理方法的实施例相对应,本发明还提供了 基于云存储的文件处理系统及服务器集群系统的实施例。

参见图8,为本申请基于云存储的文件处理系统的实施例框图:

该系统包括:客户端810、WEB服务器820和服务器集群830。

其中,所述WEB服务器820,用于接收客户端发送的文件上传请求,所 述文件上传请求用于请求向服务器集群上传新文件,并向所述客户端返回所 述服务器集群为所述新文件生成的文件ID;

所述客户端810,用于对所述新文件进行切片,并为每个切片文件生成唯 一的切片ID,将切片文件数据包上传给WEB服务器820,所述切片文件数据 包中包含文件ID、每个切片文件的切片ID和每个切片文件的切片数据;

所述WEB服务器820,还用于将所述切片文件数据包中的每个切片文件 的切片数据发送到所述服务器集群830;

所述服务器集群830,用于将所述每个切片文件的切片数据存储到对应的 服务终端上,以及保存所述文件ID与所述切片ID的对应关系。

进一步,所述客户端810,还用于将重复统计请求发送给所述WEB服务 器,所述重复统计请求中包含每个切片文件的切片ID;

所述WEB服务器820,还用于将所述重复统计请求转发到所述服务器集 群;

所述服务器集群830,还用于根据所述重复统计请求中的切片ID查找已 保存的切片ID,如果查找到所述重复统计请求中的切片ID,则确定与所述切 片ID对应的切片文件重复,如果未查找到所述重复统计请求中的切片ID,则 确定与所述切片ID对应的切片文件不重复,并将每个切片文件是否重复的信 息发送给所述WEB服务器;

所述WEB服务器820,还用于将所述切片文件是否重复的信息发送给所 述客户端;

所述客户端810,具体用于根据所述切片文件是否重复的信息,将包含不 重复切片文件的切片ID和切片数据的切片文件数据包上传给所述WEB服务 器。

进一步,所述WEB服务器820,还用于向所述服务器集群发送获取存储 切片文件地址的查询请求;

所述服务器集群830,还用于根据每个切片文件的切片ID,通过一致性 哈希算法计算存储每个切片文件的服务终端的地址;

所述WEB服务器820,具体用于将所述切片文件数据包中的每个切片文 件按照对应的服务终端的地址发送到服务终端上进行存储。

进一步,所述客户端810,还用于向所述WEB服务器发送文件下载请求, 所述文件下载请求中包含客户端请求下载文件的文件ID;

所述WEB服务器820,还用于将所述文件下载请求发送给所述服务器集 群;

所述服务器集群830,还用于向所述WEB服务器发送存储与所述文件ID 对应的文件的每个切片文件的服务终端的地址;

所述WEB服务器820,还用于根据所述服务终端的地址从对应的服务终 端上获取每个切片文件,并将所述切片文件按照切片顺序组成所述请求下载 的文件,并将所述文件发送给所述客户端。

进一步,所述WEB服务器820,还用于当所述文件上传请求中还包含所 述客户端的用户ID时,保存所述文件ID与所述用户ID之间的对应关系;

所述服务器集群830,还用于为每个切片ID设置引用计数器,所述引用 计数器的计数值初始化为零,当确定与切片ID对应的切片文件重复时,将所 述切片ID的引用计数器的计数值加一。

进一步,所述客户端810,还用于向所述WEB服务器发送文件删除请求, 所述文件删除请求中包含所述客户端请求删除文件的文件ID和用户ID;

所述WEB服务器820,还用于当保存了所述删除请求中保存的文件ID 和用户ID的对应关系时,将所述文件删除请求发送给所述服务器集群;

所述服务器集群830,还用于根据所述文件ID获取对应的切片ID,并判 断所述切片ID的引用计数器的计数值是否为零;当切片ID的计数器的计数 值为零,所述服务器集群获取存储所述请求删除文件的每个切片文件的服务 终端,服务器集群向对应的服务终端转发所述文件删除请求,接收到所述文 件删除请求的服务终端删除组成所述请求删除文件的切片文件;当切片ID的 计数器的计数值不为零,则将所述切片ID的计数器的计数值减一。

其中,服务器集群830可以包括(图8中未示出):

至少一个服务集群整合端、与每个服务集群整合端相连的若干服务分配 端、以及与每个服务分配端相连的若干服务终端;

所述服务集群整合端用于与WEB服务器进行交互,并将交互数据向下依 次传输到对应的服务分配端,并由服务分配端将交互数据传输到对应的服务 终端。

参见图9,为本申请基于云存储的服务器集群系统的实施例框图:

该服务器集群系统包括:WEB服务器910和服务器集群920,其中服务 器集群920包含若干服务终端921,为了示例方便,图9中仅示出了三个服务 终端921。

其中,所述WEB服务器910,用于接收客户端发送的文件上传请求,所 述文件上传请求用于请求向服务器集群上传新文件,向所述客户端返回所述 服务器集群为所述新文件生成的文件ID,接收所述客户端上传的切片文件数 据包,所述切片文件数据包中包含文件ID、每个切片文件的切片ID和每个切 片文件的切片数据;

所述服务器集群920,用于接收所述WEB服务器发送的所述切片文件数 据包中的每个切片文件的切片数据,并将每个切片文件的切片数据发送到所 述服务器集群中的对应服务终端上进行存储,以及保存所述文件ID与所述切 片ID的对应关系。

进一步,所述WEB服务器910,还用于接收客户端发送的重复统计请求, 所述重复统计请求中包含每个切片文件的切片ID,并将所述重复统计请求转 发到所述服务器集群;

所述服务器集群920,还用于根据所述重复统计请求中的切片ID查找已 保存的切片ID,如果查找到所述重复统计请求中的切片ID,则确定与所述切 片ID对应的切片文件重复,如果未查找到所述重复统计请求中的切片ID,则 确定与所述切片ID对应的切片文件不重复,以及将每个切片文件是否重复的 信息发送给所述WEB服务器;

所述WEB服务器910,还用于将所述切片文件是否重复的信息发送给所 述客户端,以使所述客户端根据所述切片文件是否重复的信息,将包含不重 复切片文件的切片ID和切片数据的切片文件数据包上传给所述WEB服务器。

进一步,所述WEB服务器910,还用于向所述服务器集群发送获取存储 切片文件地址的查询请求;

所述服务器集群920,还用于根据每个切片文件的切片ID,通过一致性 哈希算法计算存储每个切片文件的服务终端的地址,并将所述服务终端的地 址返回给所述WEB服务器;

所述WEB服务器910具体用于将所述切片文件数据包中的每个切片文件 按照对应的服务终端的地址发送到服务终端上进行存储。

进一步,所述WEB服务器910,还用于接收客户端发送的文件下载请求, 所述文件下载请求中包含客户端请求下载文件的文件ID,并将所述文件下载 请求发送给所述服务器集群;

所述服务器集群920,还用于向所述WEB服务器发送存储与所述文件ID 对应的文件的每个切片文件的服务终端的地址;

所述WEB服务器910,还用于根据所述服务终端的地址从对应的服务终 端上获取每个切片文件,并将所述切片文件按照切片顺序组成所述请求下载 的文件,并将所述文件发送给所述客户端。

进一步,所述WEB服务器910,还用于当所述文件上传请求中还包含所 述客户端的用户ID时,保存所述文件ID与所述用户ID之间的对应关系;

所述服务器集群920,还用于为每个切片ID设置引用计数器,所述引用 计数器的计数值初始化为零,当确定与切片ID对应的切片文件重复时,将所 述切片ID的引用计数器的计数值加一。

进一步,所述WEB服务器910,还用于接收所述客户端发送的文件删除 请求,所述文件删除请求中包含所述客户端请求删除文件的文件ID和用户 ID,并保存了所述删除请求中保存的文件ID和用户ID的对应关系时,将所 述文件删除请求发送给所述服务器集群;

所述服务器集群920,还用于根据所述文件ID获取对应的切片ID,并判 断所述切片ID的引用计数器的计数值是否为零;当切片ID的计数器的计数 值为零,所述服务器集群获取存储所述请求删除文件的每个切片文件的服务 终端,服务器集群向对应的服务终端转发所述文件删除请求;当切片ID的计 数器的计数值不为零,则将所述切片ID的计数器的计数值减一;

所述服务终端921,用于接收到所述文件删除请求后,删除组成所述请求 删除文件的切片文件。

其中,服务器集群920可以包括(图9中未示出):

至少一个服务集群整合端、与每个服务集群整合端相连的若干服务分配 端、以及与每个服务分配端相连的若干所述服务终端;

所述服务集群整合端用于与WEB服务器进行交互,并将交互数据向下依 次传输到对应的服务分配端,并由服务分配端将交互数据传输到对应的服务 终端。

通过以上的实施方式的描述可知,本申请实施例中WEB服务器接收客户 端发送的文件上传请求后,向客户端返回服务器集群为新文件生成的文件ID, 客户端对新文件进行切片,并为每个切片文件生成唯一的切片ID,将切片文 件数据包上传给WEB服务器,切片文件数据包中的每个切片文件包含文件 ID、每个切片文件的切片ID和每个切片文件的切片数据,WEB服务器将切 片文件数据包中的每个切片文件的切片数据发送到服务器集群中的对应服务 终端上进行存储。本申请实施例通过对文件进行分片处理并在服务器集群中 对切片文件进行分布式存储,从而使得基于服务器集群的云存储性能更加优 化;应用本申请实施例上传修改后的文件时,由于只需上传用户修改的文件 切片,而无需重传整个文件,因此减少了服务器集群中的冗余数据,节省了 存储空间,减少了客户端上传文件的时间。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件 加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的 技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体 现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、 光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务 器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的 方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同 相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同 之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描 述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何 在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本 发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号