一种数据下载方法及装置的制作方法

文档序号:7748821阅读:145来源:国知局
专利名称:一种数据下载方法及装置的制作方法
技术领域
本发明涉及互联网技术领域,尤其涉及一种数据下载方法及装置。
背景技术
随着网络技术的发展和网络影响的扩大,硬件错误和网络错误的发生日益普遍, 大量数据的存储和计算成为对网络系统性能的挑战。对于网络系统而言,一个适用于大规模分布式数据的、处理相关应用的、可扩展的、安全可靠的NFS (Network File System,网络文件系统)十分重要。该分布式文件系统基于普通的硬件设备,实现容错的设计,并为大量客户端提供极高的聚合处理能力,可以大幅度的提高系统的安全性、并发计算能力以及吞吐能力,对提高各个应用系统的服务质量起到至关重要作用。如图1所示,NFS系统由一个的NFS Master (NFS主控程序)和一个kheduler Master (异步扫描主控程序)以及若干Node Server (节点服务器)和kheduler Client (异步扫描客户端)组成。此外,网络中的NFS Client (NFS客户端)也可以访问 NFS系统。在NFS系统中,每个文件都拆分成固定大小的Node(节点)。针对每个节点, NFS Mas t er根据节点创建的时间产生一个全局唯一的且以后不会改变的64位的No de handle (节点标识)。Node Server在本地磁盘上用Linux文件系统保存上述节点,并且根据Node handle和字节区间,通过Linux文件系统读写节点的数据。出于可靠性的考虑,每一个节点都会在不同的Node krver上保存备份。缺省情况下,可以保存2个备份,用户也可以对不同的文件指定不同的复制级别。NFS Master负责管理所有的文件的元数据,包括名空间、访问控制信息、文件到 Node的映射关系、当前Node的位置以及Node的分配管理等等信息。NFS Master和Node Server之间通过定期的心跳报文进行通讯,该心跳报文可以传递信息和Node Server的状态。每个Node krver可以是一个普通的Linux计算机,计算机上运行一个用户级别的服务器进程,用普通的文件来存储数据。Client上传和下载数据时,直接与Node krver通讯。kheduler Master负责异步扫描、负载均衡、机器变更、Node krver之间的Node镜像管理以及冗余垃圾节点的回收等。各个Node krver上可以分别运Scheduler Client, 负责数据的校验、备份、上报机器状态和负载等,Scheduler Master调度kheduler Client 完成上述任务。各个应用系统的NFS客户端的代码中包含文件系统的 API (ApplicationProgramming Interface,应用程序编程接口 ),并与 NFS Master 禾口 Node krver进行通讯,代表应用程序进行读写数据的操作。NFS客户端和NFS Master进行元数据的操作,但NFS客户端的所有和数据相关的通讯都是直接和Nodekrver进行的。现有技术中,NFS客户端通过API或者命令行工具下载数据时,首先向NFS Master 请求下载的数据所在的Node节点信息,根据获取的Node节点信息直接与Node Server通讯,并下载数据。发明人在实现本发明的过程中,发现现有技术至少存在以下缺陷
Node krver接收到NFS客户端的下载请求后,直接从磁盘中读取相应的数据并将该数据返回给NFS客户端,然后等待NFS客户端的下一次下载请求;在下一次下载请求到来时,Node krver重复上一次的响应方式,从磁盘中读取相应的数据并将该数据返回给NFS客户端,响应速度慢。另外,在两次下载请求之间,Node krver—直处于等待阶段, 造成CPU (Central ProcessingUnit,中央处理单元)、磁盘I/O anput/Output,输入输出端口)和网络带宽的浪费。

发明内容
本发明提供了一种数据下载方法及装置,用于提高下载数据的速度。本发明提供了一种数据下载方法,应用于包括节点服务器和客户端的网络文件系统中,所述节点服务器中缓存有预读取的数据,所述预读取的数据为所述节点服务器根据对用户下载日志的分析结果从磁盘中预先读取的数据,所述方法还包括以下步骤所述节点服务器接收来自所述客户端的数据下载请求;当所述预读取的数据符合所述数据下载请求对应的读取要求时,所述节点服务器将所述预读取的数据发送给所述客户端。优选地,所述的方法,还包括所述节点服务器判断所述客户端在当前TCP连接之后是否第一次请求下载数据, 当所述客户端在当前TCP连接之后第一次请求下载数据且所述预读取的数据符合所述数据下载请求对应的读取要求时,所述节点服务器将所述预读取的数据发送给所述客户端。优选地,所述的方法,还包括当所述客户端是第一次请求下载数据和/或所述预读取的数据不符合所述数据下载请求对应的读取要求时,所述节点服务器从所述磁盘中读取所述数据下载请求对应的数据,并将所述数据发送给所述客户端。优选地,所述的方法,还包括优选地,所述文件网络系统还包括主控程序,所述方法还包括所述主控程序获取对用户下载日志的分析结果,并根据所述分析结果调整所述文件网络系统中的各个文件的备份因子。本发明还提供了一种节点服务器,应用于包括节点服务器和客户端的网络文件系统中,所述节点服务器包括读取模块,用于根据对用户下载日志的分析结果,从磁盘中预读取数据;缓存模块,用于缓存所述读取模块预读取的数据;接收模块,用于接收来自所述客户端的数据下载请求;发送模块,用于在所述缓存模块缓存的数据符合所述接收模块接收到的数据下载请求对应的读取要求时,将所述预读取的数据发送给所述客户端。优选地,所述的节点服务器,还包括判断模块,用于根据所述接收模块接收到的数据下载请求,判断所述客户端在当前TCP连接之后是否第一次请求下载数据,供所述发送模块使用;所述发送模块,用于在所述客户端不是第一次请求下载数据且所述读取模块预读取的数据符合所述数据下载请求对应的读取要求时,将所述预读取的数据发送给所述客户端。优选地,所述读取模块,还用于在所述客户端是第一次请求下载数据和/或所述预读取的数据不符合所述数据下载请求对应的读取要求时,从所述磁盘中读取所述数据下载请求对应的数据;所述发送模块,还用于将所述数据发送给所述客户端。优选地,所述的节点服务器,还包括生成模块,用于生成与所述发送模块发送给所述客户端的数据对应的用户下载日
ο与现有技术相比,本发明具有以下优点本发明通过分析用户的数据读取行为的趋势,从磁盘预读取该数据,并在预读取的数据符合读取要求时,直接返回预读取的数据给客户端,从而缩短了从磁盘读取数据的时间,加快了下载数据的速度,能够更快地向用户提供更好的下载服务。


为了更清楚地说明本发明或现有技术中的技术方案,下面将对本发明或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中的NFS系统结构示意图;图2为本发明中的一种数据下载方法流程图;图3为本发明应用场景中的数据下载系统架构示意图;图4为本发明应用场景中的数据下载方法流程图;图5为本发明中的一种节点服务器的结构示意图。
具体实施例方式在NFS系统中,Node krver对NFS客户端的响应时间包括接收请求数据的时间、 分析协议和请求数据的时间、从磁盘读取数据的时间以及发送响应数据给NFS客户端的时间,其中,接收请求和发送响应数据的时间依赖于网络I/O的速度,分析协议和请求数据的时间也无法优化。本发明提供的技术方案中,通过优化从磁盘读取数据的时间减少Nodekrver对 NFS客户端的响应时间,以提高响应速度。具体地,在Node Server响应完一次NFS客户端的请求后,分析用户的数据读取行为的趋势,预先判断NFS客户端下次可能读取的数据的大小,并从磁盘预读取该数据。当接收到客户端的下一次请求时,如果预读取的数据符合该请求对应的读取要求,Node Server直接返回预读取的数据给客户端。下面将结合本发明中的附图,对本发明的技术方案进行清楚、完整地描述,显然, 所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。如图2所示,为本发明中的一种数据下载方法流程图,应用于包括节点服务器和客户端的网络文件系统中,节点服务器中缓存有预读取的数据,所该预读取的数据为节点服务器根据对用户下载日志的分析结果从磁盘中预先读取的数据,该方法还包括以下步骤步骤201,节点服务器接收来自客户端的数据下载请求。步骤202,当预读取的数据符合数据下载请求对应的读取要求时,节点服务器将预读取的数据发送给客户端。具体地,节点服务器判断客户端在当前TCP连接之后是否第一次请求下载数据, 当客户端在当前TCP连接之后第一次请求下载数据且预读取的数据符合数据下载请求对应的读取要求时,节点服务器将预读取的数据发送给客户端。当客户端是第一次请求下载数据和/或预读取的数据不符合数据下载请求对应的读取要求时,节点服务器从磁盘中读取该数据下载请求对应的数据,并将该数据发送给客户端。在节点服务器将数据发送给客户端之后,节点服务器可以生成与发送给客户端的数据对应的用户下载日志。上述文件网络系统还可以包括主控程序,该主控程序获取对用户下载日志的分析结果,并根据该分析结果调整文件网络系统中的各个文件的备份因子。本发明通过分析用户的数据读取行为的趋势,从磁盘预读取该数据,并在预读取的数据符合读取要求时,直接返回预读取的数据给客户端,从而缩短了从磁盘读取数据的时间,加快了下载数据的速度,能够更快地向用户提供更好的下载服务。本发明中的数据下载方法可以应用于如图3所示的系统架构中,包括NFS客户端、NFS Master、Node Server 和 Log 分析模块。其中,NFS客户端根据固定的Node大小(例如,64M),将应用需要下载的文件名和偏移量转换成文件内部Node index,并向NFS Master发送包含文件名和文件内部Node index的下载数据请求。NFS Master向NFS客户端返回相关的Node handle以及对应的位置,NFS客户端缓存上述信息,将文件名和文件内部Node index作为上述缓存的信息的关键索引字。NFS客户端向对应的Node krver发送下载数据请求,该Node krver通常是系统中离NFS客户端最近的Node Server,该下载数据请求给定了 Nodehandle以及在Node内需要读取得字节区间,Node Server接收到下载数据请求后,返回数据给NFS客户端。Log分析模块用于分析用户上传、下载、添加和删除以及修改文件等用户行为信息,获取用户的读取趋势,该读取趋势可以包括下一次读取文件的名称、下一次读取数据的长度以及该数据在文件中的位置。具体地,Log分析模块可以根据用户下载日志中包含的用户每次下载的数据的长度,预测用户下一次下载数据的长度,并将该数据的长度作为用户的读取趋势。例如,在用户下载日志中,当用户在之前的η次下载中每次下载的数据的长度均为L字节,则Log分析模块可以预测用户下一次下载数据的长度也是L字节。Log分析模块也可以根据用户下载日志中包含的用户每次下载的文件的名称,预测用户下一次下载文件的名称,并将该下载文件的名称作为用户的读取趋势。例如,在用户下载日志中,当用户在之前的η次下载中每次下载的文件的名称均为a文件,且Node Server还存在用户没有读取到的a文件的数据,则Log分析模块可以预测用户下一次下载文件的名称也是a文件。
进一步地,Log分析模块还可以根据用户下载日志中包含的用户每次下载的数据在文件中的位置,预测用户下一次下载的数据在文件中的位置,并将该数据在文件中的位置作为用户的读取趋势。例如,在用户下载日志中,当用户在之前的η次下载中依次读取a 文件中的数据,且上一次下载的数据位于a文件中的第m+1个字节到第m+L个字节,则Log 分析模块可以预测用户下一次下载的数据位于a文件中的第m+L+1个字节到第m+2L个字节。Log分析模块定期将对用户下载日志的分析结果推送给NFS Master和各个Node krver,该分析结果可以应用到用户提高下载速度、可靠性和安全性的各个方面应用中。 Node Server为用户提供下载服务时,可以根据用户的读取行为趋势提前预读取一部分数据,加快响应速度;NFS Master可以根据文件的访问频度决定是否需要提高文件的备份因子,对于访问比较频繁的文件临时增加文件的备份因子。详细的日志分析对于问题的发现和调试解决以及性能分析有着不可估量的作用。通过日志分析,可以重构整个的信息交互历史,可以诊断系统问题和优化系统性能。以下结合上述应用场景对本发明中的数据下载方法进行详细、具体的描述。如图4所示,为本发明应用场景中的数据下载方法流程图,具体包括以下步骤步骤401,NFS客户端将下载文件的文件名和偏移量转换为文件内部Nodeindex。具体地,NFS客户端在下载文件时,可以根据固定的Node大小(例如,64M)以及预设的转换规则,将文件名和偏移量转换成文件内部Node index。由于NFS系统在存储文件时,也按照上述转换规则将文件进行分块,并将分块后的文件分别存储到各个Node Server 的磁盘上,因此,NFS Master可以理解NFS客户端转换得到文件内部Node index,还可以得到文件内部Node index对应的Node节点信息。步骤402,NFS客户端向NFS Master发送数据下载请求。其中,数据下载请求中可以包括文件名和文件内部Node index。步骤403,NFS Master向NFS客户端返回存储对应的数据的Node节点信息。具体地,NFS Master根据数据下载请求中携带的文件名和文件内部Nodeindex,获取存储该文件名和文件内部Node index对应的数据的Node Server的Node节点信息,并将该Node节点信息发送给NFS客户端。步骤404,NFS客户端获取Node节点信息,连接该节点信息对应的Nod必erver。步骤405,NFS客户端向Node Server发送数据下载请求。其中,数据下载请求中的控制信息可以包括Node节点信息和数据下载范围。步骤406,Node krver判断NFS客户端在当前TCP连接之后是否第一次请求下载数据,如果判断结果为是,则执行步骤409 ;否则,执行步骤407。具体地,在TCP连接之后,Node krver可以记录NFS客户端请求下载数据的次数, 并根据该记录的次数判断NFS客户端在当前TCP连接之后,是否第一请求读取数据。步骤407,Node Server判断预读取的数据是否符合数据下载请求的读取要求,如果判断结果为是,则执行步骤408 ;否则,执行步骤409。其中,预读取的数据为Node krver根据对用户下载日志的分析结果,在接收到数据下载请求之前从磁盘中读取的数据。读取要求可以为数据下载范围。步骤408,Node Server向NFS客户端返回预读取的数据。
具体地,如果预读取的数据完全符合数据下载请求的读取要求,NodeServer向 NFS客户端返回全部的预读取的数据;如果预读取的数据部分符合数据下载请求的读取要求,则将符合读取要求的部分预读取的数据部分返回给NFS客户端,从磁盘中读取剩余的数据并返回给NFS客户端。需要说明的是,执行完本步骤后,继续执行步骤410。步骤409,Node Server从磁盘中读取数据下载请求对应的数据,并将该数据发送给客户端。步骤410,Node krver生成用户下载日志,并获取对用户下载日志的分析结果,根据该分析结果从磁盘中预读取数据。其中,Node Server生成的用户下载日志可以提供给Log分析模块,Log分析模块可以根据用户下载日志分析用户读取趋势,并将分析结果推送给Node Server0 Node krver根据Log分析模块推送的分析结果,从磁盘中预读取一定数量的数据。其中,对用户读取趋势的分析结果可以包括下一次读取文件的名称、下一次读取数据的长度以及该数据在文件中的位置。需要说明的是,作为本发明的另一种实施方式,Node krver在当前TCP连接第一次接收到来自NFS客户端的数据下载请求之前,还可以根据系统中的热点文件信息预先缓存数据。当接收到来自NFS客户端的数据下载请求后,Node krver可以判断缓存中是否包括该下载请求对应的数据,如果有,可以直接将缓存的数据发送给NFS客户端;否则,从磁盘中读取与数据下载请求对应的数据并发送给NFS客户端。本发明通过分析用户的数据读取行为的趋势,从磁盘预读取该数据,并在预读取的数据符合读取要求时,直接返回预读取的数据给客户端,从而缩短了从磁盘读取数据的时间,加快了下载数据的速度,能够更快地向用户提供更好的下载服务。本发明在上述实施方式中提供了数据下载方法和应用场景,相应地,本发明还提供了应用上述数据下载方法的装置。如图5所示,为本发明中的一种节点服务器的结构示意图,应用于包括节点服务器和客户端的网络文件系统中,该节点服务器包括读取模块510,用于根据对用户下载日志的分析结果,从磁盘中预读取数据。缓存模块520,用于缓存读取模块510预读取的数据。接收模块530,用于接收来自所述客户端的数据下载请求。发送模块MO,用于在缓存模块520缓存的数据符合接收模块530接收到的数据下载请求对应的读取要求时,将所述预读取的数据发送给所述客户端。上述节点服务器,还可以进一步包括判断模块550,用于根据接收模块530接收到的数据下载请求,判断客户端在当前 TCP连接之后是否第一次请求下载数据,供发送模块540使用。相应地,发送模块M0,用于在所述客户端不是第一次请求下载数据且所述读取模块预读取的数据符合所述数据下载请求对应的读取要求时,将所述预读取的数据发送给所述客户端。上述读取模块510,还用于在所述客户端是第一次请求下载数据和/或所述预读取的数据不符合所述数据下载请求对应的读取要求时,从所述磁盘中读取所述数据下载请求对应的数据;相应地,上述发送模块M0,还用于将所述数据发送给所述客户端。上述节点服务器,还可以进一步包括生成模块560,用于生成与发送模块540发送给客户端的数据对应的用户下载日
ο本发明通过分析用户的数据读取行为的趋势,从磁盘预读取该数据,并在预读取的数据符合读取要求时,直接返回预读取的数据给客户端,从而缩短了从磁盘读取数据的时间,加快了下载数据的速度,能够更快地向用户提供更好的下载服务。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以集成于一体,也可以分离部署;可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种数据下载方法,应用于包括节点服务器和客户端的网络文件系统中,其特征在于,所述节点服务器中缓存有预读取的数据,所述预读取的数据为所述节点服务器根据对用户下载日志的分析结果从磁盘中预先读取的数据,所述方法还包括以下步骤所述节点服务器接收来自所述客户端的数据下载请求;当所述预读取的数据符合所述数据下载请求对应的读取要求时,所述节点服务器将所述预读取的数据发送给所述客户端。
2.如权利要求1所述的方法,其特征在于,还包括所述节点服务器判断所述客户端在当前TCP连接之后是否第一次请求下载数据,当所述客户端在当前TCP连接之后第一次请求下载数据且所述预读取的数据符合所述数据下载请求对应的读取要求时,所述节点服务器将所述预读取的数据发送给所述客户端。
3.如权利要求1所述的方法,其特征在于,还包括当所述客户端是第一次请求下载数据和/或所述预读取的数据不符合所述数据下载请求对应的读取要求时,所述节点服务器从所述磁盘中读取所述数据下载请求对应的数据,并将所述数据发送给所述客户端。
4.如权利要求1至3中任一项所述的方法,其特征在于,还包括所述节点服务器生成与发送给所述客户端的数据对应的用户下载日志。
5.如权利要求1至3中任一项所述的方法,其特征在于,所述文件网络系统还包括主控程序,所述方法还包括所述主控程序获取对用户下载日志的分析结果,并根据所述分析结果调整所述文件网络系统中的各个文件的备份因子。
6.一种节点服务器,应用于包括节点服务器和客户端的网络文件系统中,其特征在于, 所述节点服务器包括读取模块,用于根据对用户下载日志的分析结果,从磁盘中预读取数据;缓存模块,用于缓存所述读取模块预读取的数据;接收模块,用于接收来自所述客户端的数据下载请求;发送模块,用于在所述缓存模块缓存的数据符合所述接收模块接收到的数据下载请求对应的读取要求时,将所述预读取的数据发送给所述客户端。
7.如权利要求6所述的节点服务器,其特征在于,还包括判断模块,用于根据所述接收模块接收到的数据下载请求,判断所述客户端在当前TCP 连接之后是否第一次请求下载数据,供所述发送模块使用;所述发送模块,用于在所述客户端不是第一次请求下载数据且所述读取模块预读取的数据符合所述数据下载请求对应的读取要求时,将所述预读取的数据发送给所述客户端。
8.如权利要求6所述的节点服务器,其特征在于,所述读取模块,还用于在所述客户端是第一次请求下载数据和/或所述预读取的数据不符合所述数据下载请求对应的读取要求时,从所述磁盘中读取所述数据下载请求对应的数据;所述发送模块,还用于将所述数据发送给所述客户端。
9.如权利要求6至8中任一项所述的节点服务器,其特征在于,还包括生成模块,用于生成与所述发送模块发送给所述客户端的数据对应的用户下载日志。
全文摘要
本发明公开了一种数据下载方法,应用于包括节点服务器和客户端的网络文件系统中,所述节点服务器中缓存有预读取的数据,所述预读取的数据为所述节点服务器根据对用户下载日志的分析结果从磁盘中预先读取的数据,所述方法还包括以下步骤所述节点服务器接收来自所述客户端的数据下载请求;当所述预读取的数据符合所述数据下载请求对应的读取要求时,所述节点服务器将所述预读取的数据发送给所述客户端。通过使用本发明,可以提高下载数据的速度。本发明同样公开了一种应用上述方法的装置。
文档编号H04L29/06GK102255866SQ20101017360
公开日2011年11月23日 申请日期2010年5月17日 优先权日2010年5月17日
发明者乔建秀, 伍海君, 杨绍鹏, 欧贻葆, 王宇, 赵大勇, 阙太富 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1