著录项信息
专利名称 | 一种云上传方法及系统、调度设备、客户端 |
申请号 | CN201310547408.6 | 申请日期 | 2013-11-06 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2014-02-05 | 公开/公告号 | CN103561100A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/08 | IPC分类号 | H;0;4;L;2;9;/;0;8查看分类表>
|
申请人 | 乐视网信息技术(北京)股份有限公司 | 申请人地址 | 北京市海淀区中关村南大街2号1区689号楼1153
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 乐视云计算有限公司 | 当前权利人 | 乐视云计算有限公司 |
发明人 | 胡勇;薛伟;陈翔;王国强;魏泽涛;张清柱 |
代理机构 | 北京集佳知识产权代理有限公司 | 代理人 | 王宝筠 |
摘要
本发明的云上传方法及系统、调度设备、客户端,方法为:调度中心接收至少一个客户端发送的文件上传请求,该请求包括待文件指纹;根据文件指纹查询数据中心,判断待上传文件的状态:若为未完成上传,则从数据中心获取待上传文件的当前上传进度及分片信息,并为每个客户端分配一个上传节点,将当前上传进度、分片信息及分配的上传节点发送给对应的客户端;每个客户端执行:显示当前上传进度;根据分片信息通过上传节点进行文件片上传;每个上传节点执行:根据客户端上传的文件片更新数据中心的当前上传进度;读取数据中心汇总后的更新进度发送给客户端显示;若为已完成上传,则向客户端返回上传成功的信息。缩短了文件上传时间,提高了云上传效率。
1.一种云上传方法,其特征在于,所述方法包括:
调度中心接收至少一个客户端发送的文件上传请求,所述请求包括待上传文件的文件指纹;
所述调度中心根据所述文件指纹查询数据中心,判断所述待上传文件的状态:
如果所述状态为未完成上传,则所述调度中心从所述数据中心获取所述待上传文件的当前上传进度以及分片信息,并为所述至少一个客户端中的每个客户端分别分配一个上传节点,将所述当前上传进度、分片信息以及分配的上传节点发送给对应的客户端;
所述至少一个客户端中的每个客户端分别执行:显示所述当前上传进度;并根据所述分片信息,向被分配的上传节点发送文件片上传请求,所述请求包含申请上传文件片的数目;通过该客户端被分配的上传节点进行所述被分配的待上传文件的文件片上传;分配给所述至少一个客户端的上传节点中的每个上传节点分别执行:接收客户端发送的所述请求,查询所述数据中心,若所述数据中心存在处于未分配状态的文件片,则从所述处于未分配状态的文件片中选取出满足所述客户端申请数目的待上传文件片分配给所述客户端;根据与该上传节点所对应的客户端上传的所述待上传文件的文件片,更新所述数据中心保存的所述当前上传进度;读取所述数据中心汇总后的所述待上传文件的更新进度,并将所述更新进度发送给对应的客户端,由所述客户端显示所述更新进度;
如果所述状态为已完成上传,则所述调度中心向所述至少一个客户端返回上传成功的信息。
2.根据权利要求1所述的方法,其特征在于,形成所述文件指纹的方式包括:
判断所述待上传文件的文件大小是否大于预设值:
如果否,则对所述待上传文件的文件内容、文件大小以及文件类型进行哈希运算获得所述文件指纹;
如果是,则将所述待上传文件划分为预设个数的文件段,并从每个文件段中提取预设字节,对所述预设字节、文件大小以及文件类型进行哈希运算获得所述文件指纹。
3.根据权利要求1所述的方法,其特征在于,为所述至少一个客户端中的每个客户端分别分配一个上传节点,包括:
针对所述至少一个客户端中的每个客户端分别执行:
根据该客户端的IP地址和预设上传节点集合中的上传节点的IP地址,为该客户端分配一个上传节点;或
根据该客户端的IP地址所属网段的信息和预设上传节点集合中的上传节点的IP地址分别所属网段的信息,为该客户端分配一个上传节点。
4.一种云上传方法,其特征在于,所述方法包括:
客户端向调度中心发送文件上传请求,所述请求包括待上传文件的文件指纹,以使所述调度中心根据所述文件指纹查询数据中心,判断所述待上传文件的状态;
所述客户端在所述调度中心判断所述待上传文件未完成上传时,接收所述调度中心发送的所述待上传文件的当前上传进度、分片信息以及为该客户端分配的上传节点;
所述客户端显示所述当前上传进度,并根据所述分片信息,向被分配的上传节点发送文件片上传请求,所述请求包含申请上传文件片的数目;接收所述上传节点分配的满足所述客户端申请数目的、被分配的待上传文件片的信息,通过该客户端分配的上传节点进行所述待上传文件的文件片上传;
所述客户端接收并显示所述上传节点发送的更新进度,所述更新进度由所述数据中心汇总,并由所述上传节点从所述数据中心读取;
所述客户端在所述调度中心判断所述待上传文件已完成上传时,接收所述调度中心返回的上传成功的信息。
5.根据权利要求4所述的方法,其特征在于,所述客户端形成所述文件指纹的方式包括:
判断所述待上传文件的文件大小是否大于预设值:
如果否,则对所述待上传文件的文件内容、文件大小以及文件类型进行哈希运算获得所述文件指纹;
如果是,则将所述待上传文件划分为预设个数的文件段,并从每个文件段中提取预设字节,对所述预设字节、文件大小以及文件类型进行哈希运算获得所述文件指纹。
6.一种客户端,其特征在于,所述客户端包括:
发送单元,用于向调度中心发送文件上传请求,所述请求包括待上传文件的文件指纹,以使所述调度中心根据所述文件指纹查询数据中心,判断所述待上传文件的状态;
接收单元,用于在所述调度中心判断所述待上传文件未完成上传时,接收所述调度中心发送的所述待上传文件的当前上传进度、分片信息以及为本客户端分配的上传节点;
显示单元,用于显示所述当前上传进度;
上传单元,用于根据所述分片信息,通过所述上传节点进行所述待上传文件的文件片上传;
所述显示单元,还用于接收并显示所述上传节点发送的更新进度,所述更新进度由所述数据中心汇总,并由所述上传节点从所述数据中心读取;
所述接收单元,还用于在所述调度中心判断所述待上传文件已完成上传时,接收所述调度中心返回的上传成功的信息;
其中,所述上传单元包括:
上传请求发送单元,用于向所述上传节点发送文件片上传请求,所述请求包含申请上传文件片的数目;
文件片接收单元,用于接收所述上传节点分配的满足所述客户端申请数目的、被分配的待上传文件片的信息;
上传子单元,用于将所述被分配的待上传文件片上传到所述上传节点。
7.根据权利要求6所述的客户端,其特征在于,所述客户端还包括:
文件大小判断单元,用于判断所述待上传文件的文件大小是否大于预设值:
哈希运算单元,用于在所述待上传文件的大小不大于所述预设值时,对所述待上传文件的文件内容、文件大小以及文件类型进行哈希运算获得所述文件指纹;
提取单元,用于在所述待上传文件的大小大于所述预设值时,将所述待上传文件划分为预设个数的文件段,并从每个文件段中提取预设字节;
所述哈希运算单元,还用于对所述预设字节、文件大小以及文件类型进行哈希运算获得所述文件指纹。
8.一种云上传系统,其特征在于,所述系统包括调度中心、数据中心、至少一个上传节点,所述数据中心分别与所述调度中心、所述至少一个上传节点相通信;
所述数据中心,用于保存文件的上传进度、分片策略及调度策略;
所述调度中心,用于接收至少一个客户端发送的文件上传请求,并根据所述请求中包含的待上传文件的文件指纹查询该待上传文件在所述数据中心的状态:
如果所述状态为已完成上传,则所述调度中心向所述至少一个客户端返回上传成功的信息;
如果所述状态为未完成上传,则所述调度中心从所述数据中心获取所述待上传文件的当前上传进度以及分片信息,并利用调度策略为所述至少一个客户端中的每个客户端分别分配一个上传节点,将所述当前上传进度、分片信息以及分配的上传节点发送给对应的客户端,由所述客户端显示所述当前上传进度;
所述上传节点,用于接收所述客户端发送的文件片上传请求,所述请求包含申请上传文件片的数目;并查询所述数据中心,若所述数据中心存在处于未分配状态的文件片,则从所述处于未分配状态的文件片中选取出满足所述客户端申请数目的待上传文件片分配给所述客户端,由所述客户端将所述上传节点分配的待上传文件片上传到所述上传节点;接收对应的客户端上传的所述待上传文件的文件片,并根据接收到的文件片更新所述数据中心保存的所述当前上传进度;
所述数据中心,还用于汇总每个上传节点更新的进度,并通过所述上传节点将更新进度发送给对应的客户端,由所述客户端显示所述更新进度。
9.根据权利要求8所述的系统,其特征在于,在形成所述文件指纹时,
所述客户端,用于在所述待上传文件的文件大小不大于预设值时,对所述待上传文件的文件内容、文件大小以及文件类型进行哈希运算获得所述文件指纹;或者,所述客户端,用于在所述待上传文件的文件大小大于预设值时,将所述待上传文件划分为预设个数的文件段,并从每个文件段中提取预设字节,对所述预设字节、文件大小以及文件类型进行哈希运算获得所述文件指纹。
10.根据权利要求8所述的系统,其特征在于,所述调度策略为:根据客户端和上传节点的IP地址和/或网段信息为客户端分配上传节点。
一种云上传方法及系统、调度设备、客户端\n技术领域\n[0001] 本发明涉及通信技术领域,具体涉及一种云上传方法及系统、调度设备、客户端。\n背景技术\n[0002] 随着计算机技术的不断发展,云服务以其可靠性和通用性被人们广泛接受和使用,用户可根据自身的需求使用云服务,如进行云查询、云存储、云计算、云安全等。\n[0003] 目前,各大云服务提供商都能为用户提供文件上传服务,以此实现文件的云存储,方便用户随时随地进行文件下载。现有技术中,为了提高文件上传的效率,主要采用以下两种手段:\n[0004] 一是,为了使文件上传适应于互联网不稳定的环境,通过在客户端前端浏览器内置插件的方式,实现了文件的断点续传。也就是说,如果文件在上传过程中中断,无需再次重新提交上传,而是可以接续中断前的进度继续上传,如此就可节省时间成本,提高上传效率。\n[0005] 二是,为了充分使用客户端的上行带宽,通过文件分片的方式,实现了多片文件同时上传,这也在很大程度上节省了上传时间,提高了上传效率。\n[0006] 虽然现有技术通过文件分片以及断点续传的方式在一定程度上提高了上传效率,但是,考虑到互联网本身所具有的特性,上传文件的客户端用户之间的信息互通性较差,这就可能会出现多个用户同时上传一个文件的情况,尤其是当前的热门文件,这就会导致上传资源的浪费;另外,针对同一个文件,云服务平台可能需要保存多份,这还会造成云服务平台存储空间的浪费。\n发明内容\n[0007] 本发明实施例的云上传方法及系统、调度设备、客户端,用以解决现有技术同一文件多次上传导致的传输资源和存储资源浪费的问题。\n[0008] 为此,本发明实施例提供如下技术方案:\n[0009] 一种云上传方法,所述方法包括:\n[0010] 调度中心接收至少一个客户端发送的文件上传请求,所述请求包括待上传文件的文件指纹;\n[0011] 所述调度中心根据所述文件指纹查询数据中心,判断所述待上传文件的状态:\n[0012] 如果所述状态为未完成上传,则所述调度中心从所述数据中心获取所述待上传文件的当前上传进度以及分片信息,并为所述至少一个客户端中的每个客户端分别分配一个上传节点,将所述当前上传进度、分片信息以及分配的上传节点发送给对应的客户端;\n[0013] 所述至少一个客户端中的每个客户端分别执行:显示所述当前上传进度;并根据所述分片信息,通过该客户端被分配的上传节点进行所述待上传文件的文件片上传;\n[0014] 分配给所述至少一个客户端的上传节点中的每个上传节点分别执行:根据与该上传节点所对应的客户端上传的所述待上传文件的文件片,更新所述数据中心保存的所述当前上传进度;读取所述数据中心汇总后的所述待上传文件的更新进度,并将所述更新进度发送给对应的客户端,由所述客户端显示所述更新进度;\n[0015] 如果所述状态为已完成上传,则所述调度中心向所述至少一个客户端返回上传成功的信息。\n[0016] 此外,本发明还提供一种调度中心侧的云上传方法,所述方法包括:\n[0017] 调度中心接收至少一个客户端发送的文件上传请求,所述请求包括待上传文件的文件指纹;\n[0018] 所述调度中心根据所述文件指纹查询数据中心,判断所述待上传文件的状态:\n[0019] 如果所述状态为已完成上传,则所述调度中心向所述至少一个客户端返回上传成功的信息;\n[0020] 如果所述状态为未完成上传,则所述调度中心从所述数据中心获取所述待上传文件的当前上传进度以及分片信息,并为所述至少一个客户端中的每个客户端分别分配一个上传节点,将所述当前上传进度、分片信息以及分配的上传节点发送给对应的客户端。\n[0021] 相应地,本发明还提供一种调度设备,所述设备包括:\n[0022] 接收单元,用于接收至少一个客户端发送的文件上传请求,所述请求包括待上传文件的文件指纹;\n[0023] 判断单元,用于根据所述文件指纹查询数据中心,判断所述待上传文件的状态;\n[0024] 返回单元,用于在所述状态为已完成上传时,向所述至少一个客户端返回上传成功的信息;\n[0025] 获取单元,用于在所述状态为未完成上传时,从所述数据中心获取所述待上传文件的当前上传进度以及分片信息;\n[0026] 分配单元,用于为所述至少一个客户端中的每个客户端分别分配一个上传节点;\n[0027] 发送单元,用于将所述当前上传进度、分片信息以及分配的上传节点发送给对应的客户端。\n[0028] 此外,本发明还提供一种客户端侧的云上传方法,所述方法包括:\n[0029] 客户端向调度中心发送文件上传请求,所述请求包括待上传文件的文件指纹,以使所述调度中心根据所述文件指纹查询数据中心,判断所述待上传文件的状态;\n[0030] 所述客户端在所述调度中心判断所述待上传文件未完成上传时,接收所述调度中心发送的所述待上传文件的当前上传进度、分片信息以及为该客户端分配的上传节点;\n[0031] 所述客户端显示所述当前上传进度,并根据所述分片信息,通过该客户端分配的上传节点进行所述待上传文件的文件片上传;\n[0032] 所述客户端接收并显示所述上传节点发送的更新进度,所述更新进度由所述数据中心汇总,并由所述上传节点从所述数据中心读取;\n[0033] 所述客户端在所述调度中心判断所述待上传文件已完成上传时,接收所述调度中心返回的上传成功的信息。\n[0034] 相应地,本发明还提供一种客户端,所述客户端包括:\n[0035] 发送单元,用于向调度中心发送文件上传请求,所述请求包括待上传文件的文件指纹,以使所述调度中心根据所述文件指纹查询数据中心,判断所述待上传文件的状态;\n[0036] 接收单元,用于在所述调度中心判断所述待上传文件未完成上传时,接收所述调度中心发送的所述待上传文件的当前上传进度、分片信息以及为本客户端分配的上传节点;\n[0037] 显示单元,用于显示所述当前上传进度;\n[0038] 上传单元,用于根据所述分片信息,通过所述上传节点进行所述待上传文件的文件片上传;\n[0039] 所述显示单元,还用于接收并显示所述上传节点发送的更新进度,所述更新进度由所述数据中心汇总,并由所述上传节点从所述数据中心读取;\n[0040] 所述接收单元,还用于在所述调度中心判断待上传文件已完成上传时,接收所述调度中心返回的上传成功的信息。\n[0041] 此外,本发明还提供一种云上传系统,所述系统包括调度中心、数据中心、至少一个上传节点,所述数据中心分别与所述调度中心、所述至少一个上传节点相通信;\n[0042] 所述数据中心,用于保存文件的上传进度、分片策略及调度策略;\n[0043] 所述调度中心,用于接收至少一个客户端发送的文件上传请求,并根据所述请求中包含的待上传文件的文件指纹查询该待上传文件在所述数据中心的状态:\n[0044] 如果所述状态为已完成上传,则所述调度中心向所述至少一个客户端返回上传成功的信息;\n[0045] 如果所述状态为未完成上传,则所述调度中心从所述数据中心获取所述待上传文件的当前上传进度以及分片信息,并利用调度策略为所述至少一个客户端中的每个客户端分别分配一个上传节点,将所述当前上传进度、分片信息以及分配的上传节点发送给对应的客户端,由所述客户端显示所述当前上传进度;\n[0046] 所述上传节点,用于接收对应的客户端上传的所述待上传文件的文件片,并根据接收到的文件片更新所述数据中心保存的所述当前上传进度;\n[0047] 所述数据中心,还用于汇总每个上传节点更新的进度,并通过所述上传节点将更新进度发送给对应的客户端,由所述客户端显示所述更新进度。\n[0048] 本发明的云上传方法及系统、调度设备、客户端,通过使请求上传同一文件的各客户端共享该文件的上传进度和上传文件的方式,解决同一文件多次上传导致的传输资源和存储资源浪费的问题。另外,本发明方案还会协调各客户端相互配合进行文件分片上传,这就可缩短文件上传时间,提高云上传效率和用户体验。\n附图说明\n[0049] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其它的附图。\n[0050] 图1是本发明云上传系统的构成示意图;\n[0051] 图2是本发明云上传方法的流程图;\n[0052] 图3是本发明中形成文件指纹的流程图;\n[0053] 图4是本发明实施例中文件片上传的流程图;\n[0054] 图5是本发明实施例中更新当前上传进度的流程图;\n[0055] 图6是本发明实施例调度中心侧的云上传方法;\n[0056] 图7本发明实施例调度设备的示意图;\n[0057] 图8是本发明实施例客户端侧的云上传方法;\n[0058] 图9是本发明实施例客户端的示意图。\n具体实施方式\n[0059] 为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。\n[0060] 为了解决现有技术中,针对同一文件可能会多次重复上传导致的传输资源和存储资源浪费的问题,本发明实施例提供了一种新的云上传系统,使上传同一文件的多个客户端可以共享该文件的上传进度。如果文件已完成上传,则直接向请求上传文件的客户端返回上传成功的消息,实现文件秒传;如果文件未完成上传,则控制上传文件的各客户端协同合作进行文件分片上传,同时使各客户端共享文件上传的进度和上传的文件。如此,不仅能解决传输资源和存储资源浪费的问题,还能提高文件上传速度以及用户体验。\n[0061] 参见图1,示出了本发明实施例中的云上传系统的示意图,所述系统用于接收客户端发送的请求,并控制各客户端相互配合进行文件上传。所述系统包括调度中心101、数据中心102、至少一个上传节点103,所述数据中心分别与所述调度中心、所述至少一个上传节点相通信。\n[0062] 下面分别对系统各部件进行解释说明。\n[0063] 1.数据中心可以是诸如mysql、redis、couchbase等存储设备。用于保存文件的上传进度、分片策略及调度策略。其中,\n[0064] (1)文件的上传进度可分为三种情况:一种是文件已被其它客户端完整上传,对应的上传进度为100%;一种是文件正在被其它客户端上传,对应的上传进度为其它客户端上传的实时进度,如37%;一种是文件未被上传,对应的上传进度为0%。对应文件的不同上传进度,本发明提供了不同的上传方案,对此将在下文进行详述。\n[0065] (2)分片策略用于表示文件的切片方式,或者理解为表示切片后每个文件片的大小,如策略可体现为将1G的文件切为100个文件片。客户端可以根据分片策略形成的分片信息进行文件上传,同时,在网络环境不稳定的情况下,还可支持文件片的断点续传。\n[0066] (3)调度策略用于限定调度中心为客户端分配上传节点的方式,调度策略可以体现为根据IP地址和/或网段信息为客户端分配上传节点。如,调度中心根据就近原则,将IP地址最接近的上传节点A分配给客户端A,这样,在调度中心将该分配信息通知客户端A之后,客户端A就可通过上传节点A进行文件分片上传。或者,调度中心还可根据联通、电信等对应的网段信息为客户端分配上传节点。不论调度中心采用哪种调度策略分配上传节点,其目的都是为了实现文件的快速上传。\n[0067] 2.调度中心可以体现为一台计算机。具体用于实现以下功能:\n[0068] (1)接收至少一个客户端发送的文件上传请求,并根据所述请求中包含的待上传文件的文件指纹查询该待上传文件在所述数据中心的状态。\n[0069] (2)根据查询结果进行区分处理:\n[0070] 如果数据中心保存的待上传文件的上传进度为100%,即文件状态为已完成上传,则所述调度中心向所述至少一个客户端返回上传成功的信息,实现秒传。对应这种情况,请求文件上传的客户端就无需再浪费传输资源,重新进行文件上传,如此就可减少对传输资源的浪费。对应地,云服务平台针对同一文件只需保存一份,还能节省存储资源。\n[0071] 如果数据中心保存的待上传文件的上传进度不是100%,即文件状态为未完成上传,则所述调度中心从所述数据中心获取所述待上传文件的当前上传进度(如上文所做介绍,该当前上传进度可能为正在上传的实时进度,也可能是0%)以及分片信息(通过分片策略获得),并利用调度策略为每个客户端分配一个上传节点,再将所述当前上传进度、分片信息以及分配的上传节点发送给对应的客户端。\n[0072] 3.可与客户端、数据中心相通信的上传节点,用于接收对应的客户端上传的文件片,并根据接收到的文件片更新所述数据中心保存的所述当前上传进度;此外,作为能与客户端通信的设备,上传节点还用于从数据库读取待上传文件的更新进度反馈给客户端,从而使各客户端共享同一文件的上传进度。\n[0073] 下面对利用图1所示系统实现云上传的过程进行解释说明。\n[0074] 参见图2,示出了本发明实施例云上传方法的流程图,可包括:\n[0075] 步骤201,调度中心接收至少一个客户端发送的文件上传请求,所述请求包括待上传文件的文件指纹。\n[0076] 在客户端用户有上传文件的需要时,即可通过客户端向调度中心的调度接口提交文件上传请求,具体地,客户端可以get方式提交上述请求,也可以post方式提交,本发明对此可不做限定。特别地,如果待上传文件大于1K,本发明优选采用post方式提交文件上传请求。\n[0077] 客户端提交的文件上传请求中主要包含待上传文件的文件指纹,文件指纹可视为是文件的身份信息,每个文件都对应有各自唯一的文件指纹,本发明中的客户端优选通过文件内容(文件的二进制码流)、文件大小、文件类型(文件的扩展名,优选统一为大写形式或者小写形式)形成文件指纹,具体过程可参见图3所示示意图,包括:\n[0078] 步骤301,判断所述待上传文件的文件大小是否大于预设值,如果否,则执行步骤\n302,如果是则执行步骤303、304;\n[0079] 步骤302,对所述待上传文件的文件内容、文件大小以及文件类型进行哈希运算获得所述文件指纹;\n[0080] 步骤303,将所述待上传文件划分为预设个数的文件段,并从每个文件段中提取预设字节;\n[0081] 步骤304,对所述预设字节、文件大小以及文件类型进行哈希运算获得所述文件指纹。\n[0082] 为了降低文件指纹形成过程中的计算量,本发明先确定一个限定文件大小的预设值,如果文件较小,不超过该预设值,则利用文件的全部内容,再结合文件大小以及类型,形成文件指纹。如果文件较大,超过了预设值,则从文件内容中提取一部分,再结合文件大小和类型,形成文件指纹。\n[0083] 作为本发明提取部分文件内容的一种实现方式,可将文件分段后,从每段中提取一部分内容,然后整合从各段提取的内容作为形成文件指纹的文件内容使用。具体地,先设置一个限定文件划分段数的值(即步骤303中的预设个数),再将待上传文件平均切分为预设个数的文件段,最后提取每个文件段最前面的预设字节(当然,也可从其它约定的位置提取预设字节,作为一种最简便的实现方式,本发明优选提取每个文件段最前面的预设个数的字节)。\n[0084] 作为本发明方案的一种实现方式,限定文件大小的预设值可为512KB,限定文件段的预设个数可为8段,从每个文件段中提取出的预设字节可为64KB。\n[0085] 步骤202,所述调度中心根据所述文件指纹查询数据中心。\n[0086] 步骤203,判断所述待上传文件的状态是否为完成上传,如果是,则执行步骤204;\n如果否,则执行步骤205。\n[0087] 在调度中心接收到客户端发送的上传文件请求之后,即可知晓客户端当前想要对具有该指纹的文件进行云上传,为了解决现有技术同一文件多次上传带来的问题,本发明的调度中心接收到客户端的请求之后,并不立即控制客户端进行文件上传,而是先通过文件指纹查询下该待上传文件在数据中心的状态,并根据查询结果进行区别处理。\n[0088] 步骤204,如果所述状态为已完成上传,则所述调度中心向所述至少一个客户端返回上传成功的信息。\n[0089] 如果数据中心保存的待上传文件的状态为已完成上传,即说明在步骤101中的客户端用户请求进行文件上传之前,已有其它客户端用户将该文件上传并实现了云存储。对应于此,为了避免文件重复上传造成的传输资源和存储资源浪费,本发明的调度中心直接向请求进行文件上传的客户端返回上传成功的信息,此时客户端的上传进度条迅速从0%增长到100%,实现文件秒传,在解决本发明问题的同时,还提高了用户体验。\n[0090] 如,请求上传文件的是客户端A,且在客户端A请求上传之前客户端B和C已按照本发明方法完成了文件的上传与存储,在这种情况下,可认为客户端A共享了客户端B和C的上传进度和上传文件。\n[0091] 步骤205,如果所述状态为未完成上传,则所述调度中心从所述数据中心获取所述待上传文件的当前上传进度以及分片信息,并为所述至少一个客户端中的每个客户端分别分配一个上传节点,将所述当前上传进度、分片信息以及分配的上传节点发送给对应的客户端。\n[0092] 如果数据中心保存的待上传文件的状态为未完成上传,如前文所做介绍,当文件正在上传或者文件不存在时,其状态均会体现为未完成上传,此时调度中心会协调请求进行文件上传的客户端(如果是文件正在上传的情况,还会协调正在进行文件上传的客户端)进行文件分片上传。\n[0093] 具体地,调度中心协调各客户端进行文件分片上传的过程中,涉及以下三个信息:\n[0094] 1.待上传文件的当前上传进度\n[0095] 调度中心从数据中心获取该信息,是为了使客户端明确知晓文件当前的上传情况。如果文件不存在,则反馈到客户端的当前上传进度为0%;如果文件正在被其它客户端上传,则当前上传进度即为其它客户端的实时进度,如上文中所举示例37%,此时请求进行文件上传的客户端的上传进度条迅速从0%增长到37%,实现了该客户端对其它客户端部分上传进度和上传文件的共享。\n[0096] 2.待上传文件的分片信息\n[0097] 调度中心从数据中心获取该信息,是为了使客户端明确知晓文件的切分方式,这样客户端才知道待上传文件被切分为多少文件片、每个文件片的切分位置等信息,客户端才可根据上传节点的要求进行文件片的准确上传,而不会出现错传、重传、漏传等情况。\n[0098] 对于文件正在被其它客户端上传的情况,数据中心已根据分片策略为待上传文件进行了切片,此时调度中心可直接从数据中心读取对应的分片信息反馈给客户端即可。\n[0099] 对于文件不存在的情况,数据中心要结合待上传文件的大小,利用分片策略对待上传文件进行切片,如此处理之后调度中心才可获取到分片信息。需要说明的是,文件大小这一信息可以是在调动中心查询发现文件不存在时,通知客户端提交;也可以包含于文件上传请求中与文件指纹一起发送给调度中心。为了提高本发明方案的处理效率,减少上传过程中各设备间的交互次数,优选将文件大小包含于步骤101中的上传文件请求中,对应于此,如果文件不存在,则利用文件大小进行文件分片;如果文件为已完成上传或正在上传,则不使用该信息。\n[0100] 3.为客户端分配的上传节点\n[0101] 调度中心从数据中心获取调度策略,并根据调度策略为每个请求上传文件的客户端分配一个上传节点,尽量保证文件的快速上传。如根据客户端IP地址,为客户端A分配上传节点A,为客户端B分配上传节点B。\n[0102] 步骤206,显示所述当前上传进度;并根据所述分片信息,通过该客户端被分配的上传节点进行所述待上传文件的文件片上传。\n[0103] 在调度中心为每个客户端分配一个上传节点之后,所述至少一个客户端中的每个客户端即可分别执行本步骤,通过其对应的上传节点进行文件片上传。相应地,上传节点可与数据中心相通信,在上传节点接收到客户端上传的文件片后,即可查询数据中心,如果该文件片已上传,则通知客户端上传下一文件片,否则接收该文件片并持久化,同时还要更新文件在数据中心的上传进度。\n[0104] 对于文件片上传和进度更新的过程,此处暂不详述。\n[0105] 步骤207,所述上传节点根据与其对应的客户端上传的所述待上传文件的文件片,更新所述数据中心保存的所述当前上传进度;读取所述数据中心汇总后的所述待上传文件的更新进度,并将所述更新进度发送给所述客户端。\n[0106] 在每个上传节点更新一次文件上传进度之后,数据中心都要进行一次汇总,以便在上传节点读取文件更新进度时,可以将所有上传节点对该文件综合更新后的进度反馈给上传节点,进而显示给客户端用户。如此,客户端用户查看到的进度条不仅是其自身上传结果的体现,还包含其它客户端的上传结果,也即客户端还共享了其它客户端的上传进度和上传文件片。如客户端A上传了文件的30%,客户端B协同合作上传了文件的20%,那么客户端A上传进度条体现的即为文件已上传50%,这其中的20%就是因为客户端A共享了客户端B的进度。如此,不仅能解决文件上传重复导致的传输资源和存储资源浪费,还能缩短文件的上传时间,提高上传效率以及用户体验。\n[0107] 参见图4,示出了本发明中文件片上传的流程图,可包括:\n[0108] 步骤401,所述客户端向对应的上传节点发送文件片上传请求,所述请求包含申请上传文件片的数目。\n[0109] 客户端接收到调度中心发送的信息(当前上传进度、分片信息、上传节点)之后,将当前上传进度显示给客户端用户查看,并根据自身的处理能力向上传节点发送文件片上传请求,该请求中包含客户端申请进行文件片上传的数目。如果客户端只能进行单线程处理,则可向上传节点申请进行1个文件片上传;如果客户端能进行多线程并行处理,则可向上传节点申请进行多个文件片上传,如,客户端可并行处理10个线程,则在其向上传节点发送请求时,上传节点就能知晓该客户端的处理能力,会为其分配10个待上传文件片。\n[0110] 步骤402,所述上传节点从所述数据中心读取未上传文件片的信息,并从中选取出满足所述客户端申请数目的待上传文件片分配给所述客户端。\n[0111] 步骤403,所述客户端将所述待上传文件片上传到所述上传节点。\n[0112] 一般情况下,数据中心会保存各文件片的状态信息,如文件片已上传、文件片已分配、文件片未分配,故在上传节点接收到客户端发送的请求之后,即可查询数据中心,判断该待上传文件(主要通过文件指纹区分)对应的分片中是否存在处于未分配状态的文件片:\n[0113] (1)如果存在未分配文件片,则从中选取满足客户端需要数目的待上传文件片,分配给客户端。如,客户端A申请上传4个文件片,数据中心当前处于未分配状态的文件片有5、\n6、8、10、11、12、13共计7个,则上传节点可将其中的文件片5、6、8、10分配给客户端A处理。\n[0114] (2)如果不存在未分配文件片,则判断待上传文件对应的分片中是否存在处于已分配状态的文件片:\n[0115] (21)如果存在已分配文件片,则可从中选取满足客户端需要数目的待上传文件片,分配给客户端。如,客户端A申请上传2个文件片,数据中心当前只有处于已分配状态的文件片5、6共计2个,且这2个文件片先前已分配给客户端B,则上传节点可再将这2个节点分配给客户端A处理。这样,在其中上传快的客户端完成这2个文件片的上传之后,即可将上传进度更新为100%,此时就相当于上传慢的客户端共享了上传快的客户端的上传进度和上传文件片。\n[0116] (22)如果不存在已分配文件片,则说明具有该指纹的待上传文件已全部上传完成,上传节点可通知客户端当前上传进度为100%。\n[0117] 参见图5,示出了本发明中更新当前上传进度的流程图,可包括:\n[0118] 步骤501,所述上传节点判断接收到的文件片是否为已上传,如果是,则执行步骤\n502,如果否,则执行步骤503。\n[0119] 步骤502,所述上传节点重新为所述客户端分配待上传文件片的信息。\n[0120] 步骤503,所述上传节点保存所述文件片,并更新所述当前上传进度。\n[0121] 上传节点在接收到客户端上传的文件片之后,要先判断下该文件片是否已上传,如图4处所做介绍,虽然在先前的处理过程中上传节点B将处于未分配状态的文件片5、6分配给了对应的客户端B,但因客户端B的上传速度较慢,可能在客户端A向其对应的上传节点A申请待上传文件片时,上传节点A会将状态为已分配的文件片5、6分配给客户端A进行上传,若客户端A的上传速度比客户端B快,先于客户端B将文件片5上传完成,并更新了文件片\n5在数据中心的状态为已上传,则在客户端B向上传节点B上传了文件片5之后,上传节点B查询数据中心时得到的结果就是文件片5已上传,对应于此,上传节点B就会丢弃客户端B上传的文件片5,并通知客户端B继续进行文件片6的上传。\n[0122] 对应于客户端A来说,在其将文件片5上传给上传节点A之后,上传节点A查询数据中心时得到的结果就是文件片5的状态为已分配,对应于此,上传节点A就会保存该文件片\n5,并将其在数据中心的状态更新为已上传,实现文件上传进度的更新。也就是说,本发明方案中的上传进度主要是通过一个文件切成的所有文件片中,处于已上传状态的文件片数占总的文件片数的百分比,如果数据中心保存的该文件的所有文件片均为已上传状态,则向客户端显示上传进度就是100%。\n[0123] 另外,需要说明的是,对应上文对文件指纹形成过程的介绍,本发明中的客户端还应具备以下功能。客户端,用于在所述待上传文件的文件大小不大于预设值时,对所述待上传文件的文件内容、文件大小以及文件类型进行哈希运算获得所述文件指纹;或者,客户端,用于在所述待上传文件的文件大小大于预设值时,将所述待上传文件划分为预设个数的文件段,并从每个文件段中提取预设字节作为文件内容,对所述文件内容、文件大小以及文件类型进行哈希运算获得所述文件指纹。\n[0124] 对应上文对文件片上传过程的介绍,图1所示的云上传系统中的上传节点还应具备以下功能。上传节点,用于接收所述客户端发送的文件片上传请求,所述请求包含申请上传文件片的数目;并从所述数据中心读取未上传文件片,从中选取出满足所述客户端申请数目的待上传文件片分配给所述客户端。对应地,客户端,用于将所述上传节点分配的待上传文件片上传到所述上传节点。\n[0125] 对应上文对更新当前上传进度过程的介绍,图1所示的云上传系统中的上传节点还应具有以下功能。上传节点,用于在接收到的文件片为已上传文件片时,重新为所述客户端分配待上传文件片;并在接收到的文件片为未上传文件片时,保存所述文件片并更新所述当前上传进度。\n[0126] 此外,本发明还提供了一种调度中心侧的云上传方法,具体可参见图6所示流程图,可包括:\n[0127] 步骤601,调度中心接收至少一个客户端发送的文件上传请求,所述请求包括待上传文件的文件指纹;\n[0128] 步骤602,所述调度中心根据所述文件指纹查询数据中心;\n[0129] 步骤603,判断所述待上传文件的状态,如果所述状态为已完成上传,则执行步骤\n604;如果所述状态为未完成上传,则执行步骤605;\n[0130] 步骤604,所述调度中心向所述至少一个客户端返回上传成功的信息;\n[0131] 步骤605,所述调度中心从所述数据中心获取所述待上传文件的当前上传进度以及分片信息,并为所述至少一个客户端中的每个客户端分别分配一个上传节点,将所述当前上传进度、分片信息以及分配的上传节点发送给对应的客户端。\n[0132] 其中,步骤605中为了给每个客户端分配一个上传节点,调度中心可针对所述至少一个客户端中的每个客户端分别执行:\n[0133] 根据该客户端的IP地址和预设上传节点集合中的上传节点的IP地址,为该客户端分配一个上传节点;或\n[0134] 根据该客户端的IP地址所属网段的信息和预设上传节点集合中的上传节点的IP地址分别所属网段的信息,为该客户端分配一个上传节点。\n[0135] 对应于此,本发明还提供一种调度设备(即上文中的调度中心),具体可参见图7所示示意图,可包括:\n[0136] 接收单元701,用于接收至少一个客户端发送的文件上传请求,所述请求包括待上传文件的文件指纹;\n[0137] 判断单元702,用于根据所述文件指纹查询数据中心,判断所述待上传文件的状态;\n[0138] 返回单元703,用于在所述状态为已完成上传时,向所述至少一个客户端返回上传成功的信息;\n[0139] 获取单元704,用于在所述状态为未完成上传时,从所述数据中心获取所述待上传文件的当前上传进度以及分片信息;\n[0140] 分配单元705,用于为所述至少一个客户端中的每个客户端分别分配一个上传节点;\n[0141] 发送单元706,用于将所述当前上传进度、分片信息以及分配的上传节点发送给对应的客户端。\n[0142] 其中,所述分配单元,具体用于根据该客户端的IP地址和预设上传节点集合中的上传节点的IP地址,为该客户端分配一个上传节点;或,所述分配单元,具体用于根据该客户端的IP地址所属网段的信息和预设上传节点集合中的上传节点的IP地址分别所属网段的信息,为该客户端分配一个上传节点。\n[0143] 此外,本发明还提供了一种客户端侧的云上传方法,具体可参见图8所示流程图,可包括:\n[0144] 步骤801,客户端向调度中心发送文件上传请求,所述请求包括待上传文件的文件指纹,以使所述调度中心根据所述文件指纹查询数据中心,判断所述待上传文件的状态;\n[0145] 步骤802,所述客户端在所述调度中心判断所述待上传文件未完成上传时,接收所述调度中心发送的所述待上传文件的当前上传进度、分片信息以及为该客户端分配的上传节点;\n[0146] 步骤803,所述客户端显示所述当前上传进度,并根据所述分片信息,通过该客户端分配的上传节点进行所述待上传文件的文件片上传;\n[0147] 步骤804,所述客户端接收并显示所述上传节点发送的更新进度,所述更新进度由所述数据中心汇总,并由所述上传节点从所述数据中心读取;\n[0148] 步骤805,所述客户端在所述调度中心判断所述待上传文件已完成上传时,接收所述调度中心返回的上传成功的信息。\n[0149] 其中,步骤801中的文件指纹可按以下方式形成:\n[0150] 判断所述待上传文件的文件大小是否大于预设值:\n[0151] 如果否,则对所述待上传文件的文件内容、文件大小以及文件类型进行哈希运算获得所述文件指纹;\n[0152] 如果是,则将所述待上传文件划分为预设个数的文件段,并从每个文件段中提取预设字节,对所述预设字节、文件大小以及文件类型进行哈希运算获得所述文件指纹。\n[0153] 其中,步骤803中通过上传节点进行文件片上传的过程可体现为:\n[0154] 所述客户端向对应的上传节点发送文件片上传请求,所述请求包含申请上传文件片的数目;\n[0155] 所述客户端接收所述上传节点分配的满足所述客户端申请数目的待上传文件片的信息;\n[0156] 所述客户端将所述待上传文件片上传到所述上传节点。\n[0157] 对应于此,本发明还提供一种客户端,具体可参见图9所示示意图,可包括:\n[0158] 发送单元901,用于向调度中心发送文件上传请求,所述请求包括待上传文件的文件指纹,以使所述调度中心根据所述文件指纹查询数据中心,判断所述待上传文件的状态;\n[0159] 接收单元902,用于在所述调度中心判断所述待上传文件未完成上传时,接收所述调度中心发送的所述待上传文件的当前上传进度、分片信息以及为本客户端分配的上传节点;\n[0160] 显示单元903,用于显示所述当前上传进度;\n[0161] 上传单元904,用于根据所述分片信息,通过所述上传节点进行所述待上传文件的文件片上传;\n[0162] 所述显示单元903,还用于接收并显示所述上传节点发送的更新进度,所述更新进度由所述数据中心汇总,并由所述上传节点从所述数据中心读取;\n[0163] 所述接收单元902,还用于在所述调度中心判断所述待上传文件已完成上传时,接收所述调度中心返回的上传成功的信息。\n[0164] 其中,所述上传单元包括:\n[0165] 上传请求发送单元,用于向所述上传节点发送文件片上传请求,所述请求包含申请上传文件片的数目;\n[0166] 文件片接收单元,用于接收所述上传节点分配的满足所述客户端申请数目的待上传文件片的信息;\n[0167] 上传子单元,用于将所述待上传文件片上传到所述上传节点。\n[0168] 另外,为了形成所述文件指纹,所述客户端还包括:\n[0169] 文件大小判断单元,用于判断所述待上传文件的文件大小是否大于预设值:\n[0170] 哈希运算单元,用于在所述待上传文件的大小不大于所述预设值时,对所述待上传文件的文件内容、文件大小以及文件类型进行哈希运算获得所述文件指纹;\n[0171] 提取单元,用于在所述待上传文件的大小大于所述预设值时,将所述待上传文件划分为预设个数的文件段,并从每个文件段中提取预设字节;\n[0172] 所述哈希运算单元,还用于对所述预设字节、文件大小以及文件类型进行哈希运算获得所述文件指纹。\n[0173] 以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及系统;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
法律信息
- 2018-10-26
未缴年费专利权终止
IPC(主分类): H04L 29/08
专利号: ZL 201310547408.6
申请日: 2013.11.06
授权公告日: 2017.02.01
- 2017-02-01
- 2016-01-13
专利申请权的转移
登记生效日: 2015.12.24
申请人由乐视网信息技术(北京)股份有限公司变更为乐视云计算有限公司
地址由100089 北京市海淀区学院南路68号19号楼六层6184号房间变更为100080 北京市海淀区中关村南大街2号1区689号楼1153
- 2014-03-12
实质审查的生效
IPC(主分类): H04L 29/08
专利申请号: 201310547408.6
申请日: 2013.11.06
- 2014-02-05
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
2009-06-18
| | |
2
| |
2010-03-03
|
2008-08-28
| | |
3
| |
2009-08-26
|
2009-02-17
| | |
4
| |
2009-10-07
|
2008-04-02
| | |
5
| |
2008-07-23
|
2007-01-19
| | |
6
| |
2013-01-02
|
2012-09-25
| | |
7
| |
2011-04-27
|
2009-09-28
| | |
8
| |
2012-07-25
|
2012-03-27
| | |
9
| |
2013-07-03
|
2011-12-27
| | |
10
| |
2011-11-23
|
2011-08-24
| | |
11
| |
2013-03-27
|
2012-11-26
| | |
12
| |
2012-12-05
|
2012-06-19
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |