一种基于云存储的文件下载方法及系统
技术领域
本发明涉及云计算的技术领域,尤其涉及一种基于云存储的文件下载方法及系统。
背景技术
近年来,随着互联网的发展,复杂而庞大的数据需要被处理。据互联网数据中心的研究报告显示,未来数据的增长是几何式的,特别是移动终端。因此,海量数据的及时有效处理就成为了亟待解决的问题。云计算技术的兴起,尤其是云存储技术的出现,使多种类型的存储设备连接起来进行信息交互,并实现了协同合作。云计算环境由于数据量大和存储设备和网络设备差异的原因,会导致数据的丢失和出错,而副本技术的出现,能够有效的解决这种问题。通常在存储系统中采用多个副本,这样可以保证存储系统中数据的高可用性和高容错率。在保证了数据的高可用性和高容错率的情况下,云存储系统同时需要考虑满足端侧设备高效快速的访问资源文件。
现有技术中通过改进蚁群的信息素更新策略和结合拉普拉斯概率分布优化副本放置过程,最终实现副本的数量和位置的调整和优化,即在云存储中通过合理的放置副本使得存储服务保持负载均衡。但是该方案在文件访问下载的速度提升的场景下,优化效果有限。
发明内容
本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
鉴于上述现有存在的问题,提出了本发明。
因此,本发明解决的一个技术问题是:最大化的利用端侧的网络带宽以及云存储服务负载均衡策略有效提升用户下载访问文件的速度。
为解决上述技术问题,本发明提供如下技术方案:一种基于云存储的文件下载方法,包括以下步骤,上传客户端向服务器发起上传文件的请求;所述服务器处理所述上传客户端上传的文件,进行分片存储;下载客户端向所述服务器发起下载文件的请求;所述服务器响应所述下载客户端的下载请求并返回分片数据;所述下载客户端完成分片数据的下载,并将分片数据合并为文件。
作为本发明所述的基于云存储的文件下载方法的一种优选方案,其中:所述文件的上传基于HTTP协议或FTP协议实现,且上传文件的请求中包含了需要上传的文件。
作为本发明所述的基于云存储的文件下载方法的一种优选方案,其中:所述服务器包括负载均衡服务器、业务服务器和数据服务器。
作为本发明所述的基于云存储的文件下载方法的一种优选方案,其中:所述处理上传的文件还包括以下步骤,负载均衡服务器接收客户端的上传请求并基于负载均衡调度算法,将上传请求发送到业务服务器;业务服务器基于上传的文件生成上传文件的分片信息表;业务服务器按照分片信息下发到数据服务器,并返回成功结果给上传客户端;接收到分片信息的数据服务器将分片信息复制到其他数据服务器上,业务服务器将文件分片信息表下发到其他的业务服务器上。
作为本发明所述的基于云存储的文件下载方法的一种优选方案,其中:所述业务服务器生成分片信息还包括以下步骤,从上传请求中解析出上传文件的大小;根据配置的分片大小,计算出分片个数;为上传文件生成唯一的文件标识;基于以上数据和配置的数据服务器位置信息生成文件分片信息表。
作为本发明所述的基于云存储的文件下载方法的一种优选方案,其中:所述分片信息包括,文件标识,分片序列号,分片标识,分片大小和分片所在的数据服务的位置。
作为本发明所述的基于云存储的文件下载方法的一种优选方案,其中:所述下载文件的请求携带文件标识,下载客户端从服务器展示的文件地址链接中获取文件标识。
作为本发明所述的基于云存储的文件下载方法的一种优选方案,其中:所述响应下载请求还包括以下步骤,下载请求传输到负载均衡服务器,所述负载均衡服务器将下载请求调度到某一个业务服务器;业务服务器根据文件标识获取文件的分片信息表,并返回给下载客户端;下载客户端基于分片信息表同时发起多路分片下载请求。
本发明解决的另一个技术问题是:提出一种基于云存储的文件下载系统,使上述方法能够依托于本系统实现。
为解决上述技术问题,本发明提供如下技术方案:一种基于云存储的文件下载系统,包括,上传客户端,所述上传客户端用于发起上传文件的请求以及上传文件;服务器,所述服务器与所述上传客户端相连接,能够接收和处理上传的文件并存储;下载客户端,所述下载客户端与所述服务器相连接,能够向所述服务器发起下载文件的请求并进行文件下载。
作为本发明所述的基于云存储的文件下载系统的一种优选方案,其中:所述服务器包括负载均衡服务器、业务服务器和数据服务器,且所述负载均衡服务器与所述业务服务器相连,所述业务服务器与所述数据服务器相连。
本发明的有益效果:本发明提出了一种端到端的云存储文件下载方法,对上传的文件分片基于服务器冗余数量进行冗余存储,下载时基于分片元信息表,同时发起多路下载请求,同时下载文件分片并在下载完成后进行合并,最终完成文件的下载,该方法最大化利用端侧的网络带宽以及云存储服务负载均衡策略有效提升用户下载访问文件的速度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。其中:
图1为本发明第一种实施例所述基于云存储的文件下载方法的整体流程结构示意图;
图2为本发明第一种实施例所述基于云存储的文件下载方法的文件上传流程结构示意图;
图3为本发明第一种实施例所述基于云存储的文件下载方法的文件下载流程结构示意图;
图4为本发明第二种实施例所述基于云存储的文件下载系统的整体模块结构示意图;
图5为本发明第二种实施例所述基于云存储的文件下载系统上传文件时服务器内部结构示意图;
图6为本发明第二种实施例所述基于云存储的文件下载系统的文件下载时的结构示意图;
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明,显然所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
本发明结合示意图进行详细描述,在详述本发明实施例时,为便于说明,表示器件结构的剖面图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本发明保护的范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。
同时在本发明的描述中,需要说明的是,术语中的“上、下、内和外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一、第二或第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
本发明中除非另有明确的规定和限定,术语“安装、相连、连接”应做广义理解,例如:可以是固定连接、可拆卸连接或一体式连接;同样可以是机械连接、电连接或直接连接,也可以通过中间媒介间接相连,也可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
实施例1
云存储是一个以数据存储和管理为核心的云计算系统,能够将需要储存的资源放到云上供使用者存取的一种新兴方案。用户可以在任何时间、任何地方,透过任何可连网的装置连接到云上方便地存取数据。然而随着存储的数据量增大,如何有效提升用户下载访问文件的速度是面临的一大难题。具体的,参照图1~3,在本实施例中提供了一种基于云存储的文件下载方法,包括以下步骤,
上传客户端100向服务器200发起上传文件的请求;服务器200处理上传客户端100上传的文件,进行分片存储;下载客户端300向服务器200发起下载文件的请求;服务器200响应下载客户端300的下载请求并返回分片数据;下载客户端300完成分片数据的下载,并将分片数据合并为文件。
其中,文件的上传基于HTTP协议或FTP协议实现,且上传文件的请求中包含了需要上传的文件。具体的,当上传协议采用HTTP协议时,上传文件的请求包括请求方法、请求头域和请求内容,且需要上传的文件内容包含在请求内容中。
服务器200能够进行文件的存储,其包括负载均衡服务器201、业务服务器202和数据服务器203。其中,上传客户端100和下载客户端300只需要知道负载均衡服务器201的地址,然后将上传文件请求或下载文件请求发送至负载均衡服务器201,负载均衡服务器201根据负载均衡算法把请求转发到业务服务器202,其中负载均衡算法可以为轮询算法,负载均衡服务器201能够避免大量的请求发送到某一台业务服务器202上,减少了业务服务器202的负担;业务服务器202的作用是处理上传客户端100和下载客户端300的上传和下载文件请求,业务服务器202在云计算平台中分布式部署,即云上包括多台业务服务器,理论上不限制数量,而上传客户端100和下载客户端300的请求不会直接发送至业务服务器202,而是通过负载均衡服务器201将请求转发到业务服务器202,具体的,业务服务器202在处理上传请求时对文件进行分片,并将分片的内容转发到数据服务器203;在处理下载请求时,将分片信息发送给下载客户端300;数据服务器203与业务服务器202相连,其作用是存储上传的文件内容,同时也提供下载的服务。
服务器200处理上传的文件还包括以下步骤,负载均衡服务器201接收客户端100的上传请求并基于负载均衡调度算法,将上传请求发送到业务服务器202,其中,负载均衡软件可以采用Ngnix,当请求到达负载均衡服务器201后,Nginx基于轮询的调度规则,将请求转发给业务服务器202。
业务服务器202基于上传的文件生成上传文件的分片信息表,具体的,生成分片信息表包括以下步骤,业务服务器202从上传请求中解析出上传文件的大小;业务服务器202根据配置的分片大小,计算分片个数,分片时需要设定最小分片大小,小于最小分片大小的文件不需要进行分片,大于最小分片大小的文件则进行分片,假设总共分为N个分片,则前N-1个分片的大小均等于最小分片大小,第N个分片的大小需要大于或等于最小分片的大小,在分片过程中,业务服务器202为分片生成分片标识,其计数方式从0开始依次等差递增;业务服务器202为上传文件生成唯一的文件标识,以确保每个上传文件带有的文件标识是唯一的,基于以上数据和配置的数据服务器203位置信息生成文件分片信息表,文件的分片信息表有N条分片,每条分片信息的结构包括文件标识,分片序列号,分片标识,分片大小和分片所在的数据服务器203的位置,其中分片所在的数据服务的位置一般是IP地址加端口号,分片所在的数据服务器203的位置可能不同,该地址由业务服务器202基于配置的数据服务器203信息进行分配,其中,分配策略可以是轮询、随机或其他基于性能负载的策略。
业务服务器202按照分片信息下发到数据服务器203,并返回成功结果给上传客户端100。具体的,业务服务器202根据上传文件的分片信息,将收到的上传客户端100上传的文件按分片信息下发到各个数据服务器203,当上传客户端100上传文件完毕,并且业务服务器202将上传的文件数据按分片信息下发到各个数据服务器203后,返回成功结果给上传客户端100。
接收到分片信息的数据服务器203将分片信息复制到其他数据服务器203上,业务服务器202将文件分片信息表下发到其他的业务服务器202上。具体的,接收到分片信息的数据服务器203基于配置的冗余规则,将分片复制到其他未接收到分片信息的数据服务器203上,同时业务服务器202也将文件分片信息表下发到其他的业务服务器202上,此时完成文件的上传以及分片存储。
下载客户端300向服务器200发起下载文件的请求,其中下载文件的请求需要携带文件标识,下载客户端300从服务器200展示的文件地址链接中获取文件标识,且由于文件标识的唯一性,下载客户端300可以通过文件标识准确获取所需下载的文件。
服务器200响应下载客户端300的下载请求并返回分片数据。具体的,响应下载请求还包括以下步骤,
下载请求传输到负载均衡服务器201,负载均衡服务器201将下载请求调度到某一个业务服务器202,具体的,调度是指负载均衡服务器201采用轮询、随机或是其他策略,把请求转发到业务服务器202;业务服务器202根据文件标识获取文件的分片信息表,并将分片信息表返回给下载客户端300;下载客户端300基于分片信息表同时发起多路分片下载请求。
下载客户端300完成分片数据的下载,并将分片数据合并为文件。具体的,下载客户端300基于分片信息表向数据服务器203发起下载请求,其中下载可以基于HTTP协议实现,分片信息表内包括分片所在的数据服务器203,从各个分片所在的数据服务器203中下载分片文件,下载完成后,下载客户端300将多个分片文件进行合并生成最终的完整下载文件。
相比于传统的采用浏览器进行文件下载的方式,本发明提供的文件下载方法能够显著提升下载的速度,特别是对于大文件的下载,能够节约用户的下载时间,帮助提高工作效率,为了检测下载速度,基本不用的网络带宽、对不同大小的文件分别利用本发明提供的下载方法和http下载方法进行下载,同一大小的文件下载10次后取平均速度作为该文件的下载速度,测试结果如下:
表1:网络带宽为100bps时的下载速度对比
文件大小(MB) |
1 |
50 |
100 |
500 |
1000 |
http下载速度(s) |
<1 |
6.2 |
13.3 |
62.1 |
122.2 |
本发明下载速度(s) |
<1 |
3.2 |
8.5 |
40.3 |
90.6 |
表2:网络带宽为10bps时的下载速度对比
文件大小(MB) |
1 |
50 |
100 |
500 |
1000 |
http下载速度(s) |
1.3 |
57.2 |
110.3 |
580.2 |
1300.9 |
本发明下载速度(s) |
<1 |
41.7 |
90.1 |
403.3 |
980.3 |
通过表1~2的对比,可以看出在不同网络带宽下,本发明提供的下载方法在下载速度上明显优于传统的http下载速度,特别是当下载较大的文件时,本发明能够显著节约文件下载的时间,帮助使用者快速下载需要的文件,节约其工作时间。
实施例2
参照图4~6的示意,为本实施例提出的一种基于云存储的文件下载系统,上述基于云存储的文件下载方法能够依托于本系统实现。具体的,该系统包括上传客户端100、服务器200和下载客户端300。
其中,上传客户端100和下载客户端300均属于客户端,客户端是为客户提供本地服务的程序,需要与服务器互相配合才能使用。在本实施例中,上传客户端100用于发起上传文件的请求以及上传文件,下载客户端300则能够发起下载文件的请求并进行文件下载,且上传客户端100和下载客户端300分别与服务器200相连,与其配合使用,具体的,可以基于TCP/IP协议进行连接,理论上来说,上传客户端100和下载客户端300的个数无限制。
服务器200分别与上传客户端100和下载客户端300相连,既能够接收和处理上传的文件并进行存储,也能够接收并处理下载客户端300下载文件的请求并提供下载文件供下载客户端300下载。
具体的,服务器200包括负载均衡服务器201、业务服务器202和数据服务器203,且负载均衡服务器201与业务服务器202相连,业务服务器202与数据服务器203相连。在本实施例中,负载均衡服务器201可以采用Nginx,能够支支撑5万并发连接,并且CPU、内存等资源消耗非常低,运行十分稳定,负载均衡服务器201是当服务器200的访问量较大时,单台服务器不能满足用户的请求,此时可以使用Nginx做反向代理,且多台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
业务服务器202能够接收负载均衡服务器201的调度,对上传文件的请求和下载文件的请求做出处理,对于上传请求,业务服务器202对文件进行解析、从而生成文件分片信息表;对于下载请求,业务服务器202根据其携带的文件标识获取文件的分片信息表并返回给发起下载请求的下载客户端300。
数据服务器203能够存储文件数据,并按照文件分片信息进行存储,且能够基于配置的冗余规则,将分片数据复制到其他数据服务器203上,数据服务器203能够收到下载客户端300基于分片信息表发起的下载请求后,返回分片数据给下载客户端300,下载客户端300完成所有分片下载,即可将分片合并为原始文件。
应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。