在不稳定网络环境中的大文件的网络传输的制作方法

文档序号:12278829阅读:374来源:国知局
在不稳定网络环境中的大文件的网络传输的制作方法与工艺

本申请要求2015年7月17日申请的题目为“NETWORK TRANSFER OF LARGE FILES IN UNSTABLE NETWORK ENVIRONMENTS”的美国临时专利申请No.62/194,104的优先权,其公开通过全部引用包含与此。



背景技术:

在计算机之间传输大文件可以引起各种问题。例如,中断的通信可以干扰文件传输,并且可以导致进程的丢失。这个可能要求文件传输的重启和重新发送之前已经发送的文件。这可以是资源和时间的无效使用。

本发明的各实施例分别地并共同地解决这个及其他问题。



技术实现要素:

本发明的实施例涉及在可能不稳定(例如,连接可能丢失)的网络中能够进行大文件(例如,被分成数据包)的文件传输的方法、系统和装置。文件的传送可以使用HTTP来执行。

根据本发明的一个实施例,服务器计算机可以接收来自客户计算机的建立第一HTTP连接的第一请求。服务器计算机可以在第一HTTP连接上接收作为第一请求的一部分的文件的元数据(metadata)。元数据可以至少包括文件名、客户ID和文件尺寸。

在基于接收到的文件名确定至少文件的一部分没有被存储在服务器计算机处后,该服务器计算机可以通过第一HTTP连接将要由客户计算机发送到服务器计算机的至少文件的一部分的指示发送到客户计算机。然后,服务器计算机可以通过第一HTTP连接发送建议的块尺寸,当将至少文件的一部分发送到服务器计算机时该建议的块尺寸将被客户计算机利用。接着,服务器计算机可以通过第一HTTP连接接收来自客户计算机的文件的一个或多个块。每个块可以为小于或等于该块尺寸的尺寸,并且每个块可以指定该块的开始索引和结束索引。服务器计算机可以存储指示已经被接收的文件的部分的信息。

在某些情况中,服务器计算机和客户计算机之间的第一HTTP连接可能丢失。作为响应,服务器计算机可以从客户计算机接收第二个请求来建立第二HTTP连接。服务器计算机可以通过第二HTTP连接接收作为第二请求的一部分的文件的元数据。服务器计算机可以确定文件还没有被完全地收到,并且可以将对应于文件的缺失部分的缺失开始索引和缺失结束索引发送到客户计算机。然后,服务器计算机可以从客户计算机接收文件的缺失的部分,并且将发送文件已经被完整存储的确认发送到客户计算机。

发明的实施例进一步涉及包括处理器和存储器元件的计算机。存储器元件可以包括可以被处理器执行的代码,用来实施本文描述的任何方法。

下面更详细地描述了本发明的这些及其他实施例。

附图说明

图1示出了根据本发明实施例的示例性系统。

图2示出了根据本发明实施例的文件传输协议库的示例性框图。

图3示出了根据本发明实施例的发射器客户模块的示例性框图。

图4示出了根据本发明实施例的服务器处理器模块的示例性框图。

图5示出了根据本发明实施例的文件传输的示例性流程图。

图6示出了根据本发明实施例的文件传输的示例性流程图。

图7示出根据本发明实施例的示例性客户侧的流程图。

图8示出根据本发明实施例的示例性服务器侧的流程图。

图9示出计算机装置的框图。

具体实施方式

本发明的实施例提供了客户计算机和服务器计算机之间传输文件的协议。数据可以通过HTTP连接在计算机之间发送。服务器计算机可以接收来自客户计算机的第一请求来建立第一HTTP连接。服务器计算机可以接收元数据,至少包括用于文件的文件名、客户ID和文件尺寸,作为第一请求一部分。元数据可以被利用来使文件从客户计算机传输到服务器计算机。服务器计算机可以基于文件名,确定至少文件的部分没有存储在服务器计算机处。在各种实施例中,客户计算机可以将文件以块发送到服务器计算机,其中块的尺寸可以小于或等于服务器计算机建议的块的尺寸。服务器计算机可以将信息存储在服务器计算机处的元数据文件中,该信息指示已经被接收的文件的部分。

在某些情况中,服务器计算机和客户计算机之间的连接可能丢失。然而,服务器计算机可能已经存储必要的信息来基于文件的文件传输。服务器计算机可以发送第二请求来建立客户计算机和服务器计算机之间的第二HTTP连接。服务器计算机可以接收文件的元数据作为第二请求的一部分。在与客户计算机建立第二HTTP连接之后,服务器计算机可以基于元数据中的信息确定没有收到的文件的部分,并且可以将对应于文件的缺失部分的缺失开始索引和缺失结束索引发送到客户计算机。服务器计算机可以接收来自客户计算机的文件缺失的部分。在存储整个文件之后,服务器计算机可以发出文件已经被完全存储到客户计算机的确认。

I.系统

描述用于实现文件传输协议的包括客户计算机和服务器计算机的示例性系统。

A.示例架构

图1示出了根据本发明实施例的示例性系统100。图1包括客户计算机102、无线路由器104、防火墙106、通信网络108、和服务器计算机110。图1同时示出客户侧流程120和服务器侧流程130的高级别描述。

客户计算机102可以将消息传达给服务器计算机110。消息可以为任何适合的形式。例如,客户计算机102可以使用TCP/IP数据包、HTTP或以任何其他适合的格式和它们的结合发送请求消息。客户计算机102可以包括用于与服务器计算机110通信的任何硬件、软件、其他逻辑或前者的结合。客户计算机102可以包括一个或多个计算装置,并且可以使用任何种类的计算结构、排列和编译。在某些情况中,客户计算机102可以运行安装的程序(即,应用)。计算机可以包括拥有多个单独计算设备的系统。

无线路由器104可以实现一个或多个设备之间的无线通信。无线路由器104可以能够转发诸如通信网络108的计算机网络之间的数据,并且可以实现客户计算机102和服务器计算机110之间的无线通信。在某些实施例中,无线路由器104可能没有网络地址转换能力。

防火墙106可以调整多个实体之间的通信。例如,防火墙106可以防止到达或来自实体的无限制的访问。在某些情况中,防火墙106可以防止客户计算机102和服务器计算机110之间的双向通信。

相应地,发明实施例可以实现文件传输协议,该文件传输协议甚至可以伴随着客户计算机102和服务器计算机110之间的防火墙106的出现,且没有来自无线路由器104的网络地址转换能力而实施。这是可能的,因为文件传输可以与单路通信兼容,其中客户计算机102将请求(即,HTTP POST请求)发送到服务器计算机110,并且服务器计算机110可以响应所接收的请求,但可能没有发起与客户计算机102的通信。

通信网络108可以包括多个用于实体之间数据和信息的安全通信的网络。在某些实施例中,通信网络108可以跟随适合的通信协议来产生一个或多个安全通信信道。任何合适的通信协议可用于生成通信信道。在一些实例中,通信信道可以包括“安全通信信道”,该安全通信信道能以任何已知的方式来建立,该已知的方式包括相互认证和会话密钥的使用以及SSL会话的的建立。然而,可以使用创建安全信道的任何方法。

服务器计算机110可以与客户计算机102通信来将文件数据存储到服务器计算机110。服务器计算机110可以是大型机、微型计算机集群或充当一个单元的服务器组。在一个示例中,服务器计算机110可以耦合到一个或多个文件服务器。服务器计算机110可以包括用于服务来自一个或多个诸如客户计算机102的客户计算机的请求的任何硬件、软件、其他逻辑或前者的结合。服务器计算机110可以包括一个或多个计算装置,并且可以使用任何种类的计算结构、排列和编译。在实施例中,如果有客户计算机102将请求发送到服务器计算机110的单路通信,服务器计算机110可能不是与客户计算机102直接连接。

客户侧流程120示出了可以由客户计算机102实施的高级别流程的动作。客户侧流程120可以包括压缩用于传输的文件,根据文件传输协议将文件打包成数据包,和在将文件传输到服务器计算机110之前将打包数据转换成文件流。在某些实施例中,可以有实施客户计算机102的功能的多个客户计算机。客户侧流程120的一个实施例在图7的示例性客户侧的流程图700中被描述。

服务器侧流程130示出了可以由服务器计算机110实施的高级别流程的动作。服务器侧流程130可以包括将从客户计算机102接收的文件流转换成打包数据,根据文件传输协议将数据包解包,和将已经传输的文件解压。在某些实施例中,可以有实施服务器计算机110的功能的多个服务器计算机。服务器侧流程130的一个实施例在图8的示例性服务器侧的流程图800中被描述。

在示例性的使用情况中,客户计算机102可以将文件传输到服务器计算机110来监测实验室仪器系统。例如,实验室仪器可以连接到客户计算机102,该客户计算机可以激活指令、收集由仪器记录的定期日志,并且根据文件传输协议将日志发送到服务器计算机110。用户可以利用服务器计算机110来部署用户界面(即,网站的)中的信息,查验日志,并且取回关于仪器的额外信息。服务器110可以有解析日志和提供分析(例如,给支持用户的错误通知,来自仪器的数据统计报告等)的机制。然后,本文描述的系统、方法和装置可以被利用于任何适合的数据传输。

B.文件传输协议库

图2示出了根据本发明实施例的文件传输协议库200的示例性框图。图2包括数据包模块202、静态工具模块(static utilities module)204、元数据模块206、完整性管理模块208、和逻辑管理模块210。

文件传输协议库200可以在传送期间管理文件的处理。例如,文件传输协议库200可以让文件以块发送,该块可以打包成数据包,该数据包可以包含文件内容、文件信息、块信息和其他元数据的部分(块)。块可以对应于文件的部分的内容。

根据发明实施例,数据包可以持有与传输文件块相关的任何适合的数据。数据包充当网络上的文件建立块(file building block),并且可以被利用来在客户计算机和服务器计算机之间发送任何信息。在不同实施例中,数据包可以包括如下特性:

·块尺寸——块的纯文件数据的尺寸(即,字节数)

·块内容——要传输的块的纯文件数据(即,原始数据)

·文件路径——文件的源位置

·文件名——文件的完整唯一的文件名

·文件完整的目的地——在文件服务器上用于保存文件的目的地(即,用来支持多个文件服务器的可扩展性)

·范围索引——开始索引,块内容在文件内部开始的索引,和结束索引,块内容在文件内部结束的索引

·文件尺寸——实际完整的文件尺寸

·最后块——指示当前块是否为文件流中的最后块的布尔值

·Enum:{请求/响应}——表示数据包是否为响应或请求

根据发明实施例,数据包模块202可以包含关于数据包的任何信息。例如,数据包模块202可以持有文件的块的原始数据,以及与块相关的索引(即,开始索引和结束索引)。

静态工具模块204可以包含与处理数据包相关的信息。该信息可以包括允许二进制序列化和反序列化,以及将文件读取和写入到本地文件系统的工具。该信息也可以包括实现分、切和将原始数据转换成块,并且进一步转换和结合进入进来的文件的工具。

元数据模块206可以持有文件相关的任何信息。元数据模块206可以包含包括文件名、客户ID和文件尺寸的元数据。元数据模块206也可以持有元数据的完整性信息,以及管理正在被传输的文件的缺失部分的索引范围。

完整性管理模块208可以持有实现文件的数据的有效性的验证的信息。信息可以包括验证接收到的数据的完整性的函数和对象。例如,完整性管理模块208可以确定文件的文件尺寸已经改变,并且可以触发与文件相关的元数据的重置。在某些情况中,这个可以指示在文件传输期间文件被覆盖。

逻辑管理模块210可以管理文件传输协议库200的工作流程。例如,逻辑管理模块210可以管理进入和出去的数据包,并且可以确定用来在某时间利用的恰当的模块。逻辑管理模块210可以为第一和和最后一个运行的模块,直到文件传送结束。

C.发射器客户模块

图3示出了根据本发明实施例的发射器客户模块300的示例性框图。发射器客户模块300可以在诸如图1的客户计算机102的客户计算机上运行,并且可以使客户计算机将文件传输到服务器计算机110。在某些实施例中,发射器客户模块300可以与可以在客户计算机上运行的控制台应用和用户接口应用通信。

图3包括文件传输协议库302、资源检查器模块304、发射器配置模块306、连接管理器模块308和逻辑管理器模块310。发射器模块300可以与一个或多个库通信,诸如,配置库312、日志库314、加密/解密库316、和压缩/解压库318。

文件传输协议库302可以在传送期间管理文件的处理(例如,分块和打包)。文件传输协议库302对于图2中描述的文件传输协议库200的那些可以有类似的特征。

资源检查器模块304可以检测在文件传输期间冲突的进程。冲突的进程可以包括作为客户试图利用相同源的进程。元检查器模块304可以在使用期间锁定源,以便不让其他进程同时将其利用。例如,资源检查器模块304可以在传输期间的进程的中间锁定文件,以防止其他进程利用相同文件。

发射器配置模块306可以包括与发射器客户相关的任何配置信息。在相同情况中,配置数据可以包括用于元数据文件的后缀和最大块尺寸。最大块尺寸可以为在网络组件可能没有返回有效输入的情况中可以被利用的默认值。在某些情况中,最大块尺寸值可以被利用于流程控制或作为计算建议或适合块尺寸的算法的输入。配置信息也可以包括安全设置(例如,用户名、密码、认证信息等)、日志设置(例如,日志文件名、日志文件尺寸等)、目录设置(例如,目录名、文件路径、文件夹大小等)、传输设置(例如,超时长度、失败之前最大重试次数、端口值、主机信息等)、代理设置(例如,代理值、连接选项等),以及其他一般设置(例如,对于冲突进程的睡眠时间等)。

连接管理器模块308可以管理通信(例如,向外和向内的网络调用、代理等)。连接管理器模块308也可以管理连接的稳定性。例如,如果请求已经超时,连接管理器模块308可以通知逻辑管理器310来减少用于文件传输的最大块尺寸(例如,降低到最后块尺寸的一半)。基于每个连续传送的数据包,如果连接稳定,连接管理器模块308可以通知逻辑管理器模块310来增加最大块尺寸(例如,将最后的块尺寸增加1)。

逻辑管理器模块310可以管理发射器客户模块300的工作流程。逻辑管理器模块310实现的示例性工作流可以包括从文件载入配置信息、从资源检查器模块304得到运行许可、将文件雅座并移动到恰当的文件夹、调用文件传输协议库302来产生数据包,并且调用连接管理器模块308来发送文件、接收响应并删除已经完全传输的文件。

发射器客户模块300可以与一个或多个库通信。配置库312可以包括实现将配置保存和载入到文件(例如,XML)。日志库314可以包括实现关键事件和跟踪(例如,差错、超时等)的日志。加密/解密库316可以包括实现XML或其他数据(例如,块、元数据等)加密和解密的模块。压缩/解压库318可以包括实现文件的压缩和解压的模块。在某些实施例中,压缩/解压库318可以提供多线程能力。

D.服务器发射器模块

图4示出了根据本发明实施例的服务器处理器模块400的示例性框图。服务器处理器模块400可以在诸如图1的服务器计算机110的服务器计算机上运行,并且可以使服务器计算机接收和响应来自客户计算机的传输文件的请求。图4包括文件传输协议库402、HTTP处理器模块404、连接管理器模块406和逻辑管理器模块408。服务器处理器模块400可以与一个或多个库通信,诸如日志库410、压缩/解压库412和文件部署库414。

文件传输协议库402可以在传送期间管理文件的处理(例如,分块和打包)。文件传输协议库402对于图2中描述的文件传输协议库200的那些可以有类似的特征。

HTTP处理器模块404可以为激活逻辑管理器模块408的进入点。HTTP处理器模块404可以实现由服务器处理器模块400接收的向内和向外的请求的检查,并且确定基于请求采取的一个或多个动作。HTTP处理器模块404可以通信到逻辑管理器模块408来发起一个或多个动作。

连接管理器模块406可以管理通信(例如,向外和向内的网络调用、代理、无效返回码等)。在某些实施例中,连接管理器模块406可以检查哪个文件服务器被利用来存储文件数据。

逻辑管理器模块408可以管理服务器处理器模块400的工作流程。由逻辑管理器模块408实现的示例性流程可以包括从文件载入配置文件,调用文件传输协议库402来将进来的数据包解包,调用连接管理器模块406来发出元数据文件、接收响应和删除完全被传输的元数据文件,将文件压缩到恰当的部署文件夹,并且然后调用文件部署库414。

服务器处理器模块400可以与一个或多个库通信。日志库410可以包括实现关键事件和跟踪(例如,差错、超时等)的日志。压缩/解压库412可以包括实现文件的压缩和解压的模块。在某些实施例中,压缩/解压库412可以提供多线程能力。文件部署库414可以包括使文件对于使用可用的模块。

II.文件的传输

根据发明的实施例的文件传输协议在下文中描述。文件传输协议可以实现在文件传输期间请求和发送的具有动态尺寸的文件块。另外,文件传输协议可以使客户放弃需要,来在连接中的丢失之后重新发送完整文件。

A.方法

图5示出了根据本发明实施例的在客户计算机520和服务器计算机530之间的文件传输的示例性流程图。在某些实施例中,客户计算机520可以为图1的客户计算机102,服务器计算机530可以为图1的服务器计算机110。当流程图500描述用于传输一个文件的过程的同时,该过程可以对于被要求从客户计算机520传输到服务器计算机530的多个文件而重复。在某些实施例中,客户计算机520和服务器计算机530可以支持停止和恢复选择。

客户计算机520可以通过适当的通信协议(例如,HTTP等)将请求发送到服务器计算机530。文件传输可以包括被以打包进数据包中的块发出的文件的部分。每个数据包可以包括围绕正在被传输的块的信息、围绕该块所属于的文件的信息、和原始块数据。在某些实施例中,在客户计算机520处数据块可以被转换为文件流,客户计算机520可以传送文件流到服务器计算机530,并且在服务器计算机530处文件流可以被转换为数据包。文件流可以包括对应于文件的字节序列和关于文件的附加信息。例如,附加信息可以包括创建该文件的实体的识别符。

在步骤501处,客户计算机520可以创建在本地文件夹处拥有唯一文件名的要传输的文件的压缩文件(例如,zip文件)。文件名结构可以取决于客户计算机520的配置,并且可以包括某些文件扩展、时间戳、和用于确保文件名唯一的任何适合的元素。在某些情况中,对于不完整的文件,客户计算机520可以在本地文件夹中存储要传输的文件。

在步骤502处,客户计算机520可以发送包括要传输到服务器计算机530的文件的唯一文件名的文件数据。文件数据可以为包括文件名、客户ID、和完整文件尺寸的元数据。在某些实施例中,元数据可以被包括在可以被转换成文件流的数据包中。在此从客户计算机520发送到服务器计算机530的初始请求中,数据包可能不包含任何与块相关的信息(例如,与块相关的值被临时以零代替)。

在步骤503处,服务器计算机530可以检查拥有唯一文件名的文件是否被存储在服务器计算机530。如果文件存在,服务器计算机530可以取回存储在服务器计算机530上的对应于该文件的元数据文件。该元数据文件可以包括关于服务器计算机530已结被接收的文件的部分的信息,该信息被文件的索引(例如,对应的字节)所指示。在某些情况中,元数据文件可以指示文件的某些部分可能没有存储在服务器计算机530上。

在步骤504处,如果文件或部分文件在服务器计算机530上存在,服务器计算机530可以将在要被传输的文件流中位置(例如,索引)和建议的块尺寸发送到客户计算机520。在某些实施例中,通过将该信息包含在数据包并且将该数据包返回给客户计算机520,信息可以被发送。如果文件或部分文件在服务器计算机530上不存在,发送的位置可以对应于索引零。

在步骤505处,客户计算机520可以从所接收自服务器计算机530的位置开始,以小于或等于建议的块尺寸的尺寸发送块。例如,客户计算机520可以选择将对应于索引1到30的尺寸的块30发送到服务器计算机530。此块尺寸可以小于从服务器计算机530接收的当前建议的50的块尺寸。块可以以数据块发送,该数据块包括对应于文件的索引1到30的范围的原始块数据和其他元数据。

当接收到传输请求时,建议的块尺寸可以由服务器计算机530基于服务器计算机530的条件(例如,处理器负载、系统活跃性、存储器使用、网络使用、资源利用等)动态地被确定,与此同时,客户计算机520也可以动态地确定,当实际发送块到服务器计算机530时,是否利用建议的块尺寸。例如,基于接收建议的块尺寸,客户计算机520可以基于客户计算机520的条件(例如,处理器负载、系统活跃性、存储器使用、网络使用、资源利用等)动态地确定恰当的块尺寸。在某些情况中,恰当的块尺寸可以有对应于建议的块尺寸的最大尺寸。

由服务器计算机530确定的建议的块尺寸和由客户计算机520确定的恰当的块尺寸可以由任何适合的算法动态地被计算。利用动态的块尺寸可以提高文件传输的稳定性,因为客户计算机520和服务器计算机530可以以更灵活而不让其系统过载的方式通信数据。

在步骤506处,服务器计算机530可以将来自客户计算机520的块加入到存储在服务器计算机530处的文件,并且更新与该文件相关的元数据文件。服务器计算机530可以从接收的数据包取回原始块数据,并且将该块存储于本地。服务器计算机530也可以更新元数据文件来包括关于刚被存储的文件的块的信息。该信息可以包括对应于存储的块的文件内容的范围的开始索引和结束索引。例如,服务器计算机530可以在元数据文件中记录对应于来自客户计算机520的文件的开始索引1到结束索引30范围的文件数据被接收和存储。这些索引可以被服务器计算机530在之后读取来帮助确定文件是否被完全地接收。

在步骤507处,服务器计算机530可以发送对应于下一个块的索引范围,服务器计算机依据给客户计算机520建议的块尺寸请求接收该块。建议的块尺寸可以与之间建议的块尺寸相同或不同。索引范围可以包括对应于服务器计算机530要求从客户计算机520发送的下一个块的下一个开始索引和下一个结束索引。在某些情况中,此下一个开始索引可以跟随从客户计算机520接收的上一个块位置的结束位置。例如,服务器计算机530可以发送31到70范围和建议的40的块尺寸的请求,这里开始索引31跟随接收到的上一个块的结束索引30。

在步骤508处,客户计算机520可以更新对应于要被发送的下一个块的索引,并且从文件读取下一个块。客户计算机520可以动态地确定恰当的块尺寸,其等于或小于在步骤507中接收的来被下一个块所利用的建议的块尺寸。客户计算机520然后可以从文件读取下一个块,其中下一个块有动态确定的块尺寸。在动态地确定20的块尺寸为恰当的之后,客户计算机520可以将下一个块的索引更新到开始索引31和结束索引50。客户计算机520然后可以从存储在客户计算机520处的文件,以索引31到50的范围读取文件内容。

步骤505到508可以重复直到到达文件的结束。在某些实施例中,当客户计算机520识别其已经发送传输文件的所有部分的请求到服务器计算机530,这个可以发生。

在步骤509处,客户计算机520可以请求文件是否已经完全地被服务器计算机530完全地接收。

在某些实施例中,这个可以发起客户计算机520和服务器计算机530之间的三次握手。

在步骤510处,服务器计算机530可以确定文件的所有部分是否已经被传输。服务器计算机530可以访问和读取与文件相关的元数据文件,并且确定文件的全部范围是否在元数据文件中被指示出来。如果文件的全部索引范围在元数据文件中被指示,这个可以指示文件的所有部分已经被传输。

在步骤511处,如果服务器计算机530确定文件的所有部分已经被接收,服务器计算机530可以将文件的所有部分已经被传输的确认发送到客户计算机520。在某些实施例中,服务器计算机530可以确定文件还没有完全地被接收,并且可能不发出确认。如之前描述的,如果由于中断的通信或其他各种原因数据包丢失,这个可以发生。图6描述了示例性实施例,在其中缺失的块可以由服务器计算机确定和接收。

在步骤512处,客户计算机520可以发送关于确认是否被接收的确收。这个可以完成三次握手,并且可以指示文件的传输结束。

在步骤513处,如果文件的传输结束,客户计算机520可以从本地文件夹移除该文件,并且检测要传输的下一个文件。如果要传输的下一个文件存在,之前描述的步骤可以对于下一个文件从步骤502开始被重复。在某些实施例中,对于在本地文件夹中的所有文件步骤可以被重复。

B.伴随着连接丢失的文件传输

在某些实施例中,连接的丢失可能在文件传输期间发生。中断通信的某些示例性原因可能包括超时、来自服务器计算机响应的延迟、和丢失响应。在另一个情况中,有跳数限制,其中存在用于数据的数据包可以通过网络被传输的次数的极限。如果超出跳数限制,数据包可能丢失。如下面图6中所描述的,发明实施例实现了确定文件的具体丢失部分的位置,来代替重新发送整个文件。

图6示出了根据本发明实施例的文件传输的示例性流程图600。图6描述了客户计算机和服务器计算机之间的示例性文件传输,其中在文件传输期间发生连接的丢失。在某些实施例中,图6中所引用的客户计算机和服务器计算机可以与在本文描述的其他示图所包括的客户计算机和服务器计算机有类似的属性。

在步骤601处,服务器计算机可以从客户计算机接收第一个请求来建立第一HTTP连接。在某些实施例中,客户计算机可以向服务器计算机以单向通信发送请求,其中服务器计算机可能无法发起与客户计算机的通信。取而代之的是服务器计算机可以响应于从客户计算机接收的请求。

在步骤602处,服务器计算机可以通过第一HTTP连接接收作为第一请求部分的文件的元数据。元数据以数据包发出,其可以包括文件名、客户ID和文件尺寸。文件名可以为唯一文件名。在此初始请求中,数据包可能不包括其他信息(例如,块元数据、块原始数据等)。在某些情况中,其他信息可以用诸如零值的过滤器信息代替。

在步骤603处,服务器计算机可以基于接收的文件名,确定至少文件的部分没有存储在服务器计算机处。服务器计算机可以通过检查拥有唯一文件名的文件是否存储于本地来做出此确定。再某些情况中,整个文件可能没有存储在服务器计算机处,文件的一个或多个部分可能在服务器计算机处丢失。文件的一个或多个部分可能由于中断通信或其他原因丢失。

在步骤604处,服务器计算机可以通过第一HTTP连接,发送将要由客户计算机发送到服务器计算机的至少文件的部分的指示。在某些实施例中,该指示可以包括对应于将要发送的文件的部分(例如,块)。

在步骤605处,服务器计算机可以通过第一HTTP连接,发送建议的块尺寸,当将文件的至少部分发送到服务器计算机时,该块尺寸将被客户计算机利用。该建议的块尺寸可以由服务器计算机通过基于服务器计算机的当前条件(例如,处理器负载、系统活跃性、存储器使用、网络使用、资源利用等)的任何适合的算法来动态地确定。

在步骤606处,服务器计算机可以通过第一HTTP连接接收来自客户计算机的文件的一个或多个块。每个块可以为小于或等于来自服务器计算机的建议的块尺寸的尺寸,并且每个块可以指定块的开始索引和结束索引。客户计算机可以,基于客户计算机的当前条件(例如,处理器负载、系统活跃性、存储器使用、网络使用、资源利用等)的任何适合的算法,动态地确定要发送的每个块的恰当的尺寸。

在步骤607处,服务器计算机可以存储指示已经被接收的文件的部分的信息。该信息可以作为与存储在服务器计算机处的文件相关的元数据存储。例如,该信息可以存储在服务器计算机所存储的元数据文件中。存储在元数据文件中的信息可以包括对于从客户计算机接收的每个块的开始索引和结束索引。这可以使服务器计算机之后访问该信息来帮助确定还没有从客户计算机成功地接收的文件的具体范围。

在步骤608处,服务器计算机可以丢失服务器计算机和客户计算机之间的第一HTTP连接。连接流逝的某些示例原因包括请求超时,其中客户计算机在有效时间段内没有从服务器计算机接收响应,和导致服务器计算机以错误代码响应客户计算机的不稳定的网络。在某些情况中,连接的丢失破坏一个或多个块,使其不能成功地传输到服务器计算机。

在步骤609处,服务器计算机可以从客户计算机接收第二个请求来建立第二HTTP连接。在某些实施例中,服务器计算机可能无法发起与客户计算机的第二HTTP连接的建立。取而代之的是服务器计算机能够接收和响应来自客户计算机的请求,以便建立第二HTTP连接。

在步骤610处,服务器计算机可以通过第二HTTP连接,接收作为第二请求的一部分的文件的元数据。该元数据可以包括文件名、客户ID和文件尺寸,该元数据可以为在步骤602的第一请求中发出的相同的元数据。

在步骤611处,服务器计算机可以确定文件还没有完全地被接收。服务器计算机可以首先利用文件名来确定文件是否在服务器计算机处存在。如果该文件存在,服务器计算机可以取回与该文件相关的元数据文件,其中该元数据文件包含指示已经被接收的文件的具体部分的信息(例如,索引)。如果该文件的任何范围没有在元数据文件中被指示,服务器计算机可以确定该文件还没有被完全地接收。

在步骤612处,服务器计算机可以向客户计算机发送对应于文件的缺失部分的缺失开始索引和缺失结束索引。例如,元数据文件可以指示文件有1000的文件尺寸,并且服务器计算机已经存储具有该文件名的文件的索引1到30和71到1000。这可以向服务器计算机指示对应于索引31到70的文件的部分缺失。然后,服务器计算机可以向客户计算机发送对应于文件的缺失部分的开始索引31和结束索引70。这可以指示向客户计算机的请求来向服务器计算机发送对应于索引31到70的缺失部分(例如,以块)。

在步骤613处,服务器计算机可以接收来自客户计算机的文件缺失的部分。例如,客户计算机可以向服务器计算机发送具有对应于文件的31到70的索引的块内容的块。服务器计算机可以存储块内容,并且更新元数据文件来指示对应于索引31到70的范围被存储。之后,元数据文件可能指示整个文件已经成功地被存储。服务器计算机可以以恰当的方法来合并文件的存储的块来产生完整的文件。

在上述实施例描述文件的缺失部分被以单个块发送的同时,实施例并不被限制于此。例如,客户计算机可以基于动态确定的块尺寸,选择将文件的缺失部分以多个块发送。每个块可以打包成包括元数据的包,并根据本文描述的实施例传送。

在步骤614处,服务器计算机可以发送确认到客户计算机,指示文件被完全存储。这可以向客户计算机指示文件的传输已经完成,并且没有文件的部分在服务器计算机处缺失。

本发明的各实施例具有多个优点。例如,实施例使服务器计算机保持对已经被存储的文件的具体部分的跟踪。这是有益的,因为其允许诸如图6中描述的连接的丢失的中断,而不要求文件传输重启。通常地,如此重启可能要求客户计算机重新发送整个文件,包括之前发送的文件的部分。与之对比,在发明实施例中,由于服务器计算机可以识别还没有被存储的文件的具体部分,仅那些识别的部分可以在通信丢失之后由客户计算机发送。进一步,客户计算机和服务器计算机可以基于每次传送的实时条件动态地确定恰当的块尺寸。这些特征,由于有效的资源使用(例如,避免过载),可以改善文件传输的速度和稳定性。

C.示例性客户侧流程

图7示出根据本发明实施例的示例性客户侧的流程图700。图7可以描述客户计算机和服务器计算机之间文件传输的实施例。在某些实施例中,图7的客户计算机和服务器计算机可以与在本文描述的其他示图所包括的客户计算机和服务器计算机有类似的属性。可以参考图3的部件描述图7。

在S701处,客户计算机可以初始化发射器配置。该配置可以基于可以由客户计算机载入的配置信息。在某些实施例中,配置信息可以类似于发射器配置模块306所描述的配置信息。

在S702处,客户计算机可以确定数据收集器组件是否仍在运行。数据收集器组件可以收集要从客户计算机传输的文件。当数据收集器组件在运行中,由于文件被锁定,其他进程可能无法利用该文件。在某些实施例中,资源检查器模块304可以,在运行可能试图利用相同资源的任何冲突进程前,检查数据收集器组件是否运行。

在S703处,如果数据收集器仍在运行,发射器可以关闭。在某些情况中,直到数据收集器停止运行文件传输材开始。

在S704处,如果数据收集器不在运行,文件传输可以被发起。客户计算机可以压缩(例如,zip)要被传输的文件,以期望的顺序对文件排序(例如,通过创建日期等),并且以唯一文件名将每个要传输的文件移动到本地文件夹(例如,“未完成文件”文件夹等)。文件名可以包括可以使文件名唯一的任何适合的元素(例如,以时间戳前缀等)。

在S705处,客户计算机可以将文件保存到在客户计算机上的本地盘720,并且从本地盘720取回用于传输的任何相关文件。

在S706处,对于在本地文件夹中的每个文件可以被重复的步骤,可以发起循环。在示例性情况中,本地文件夹可以为“未完成文件”的文件夹,并且文件可以按创建日期排序。

在S707处,数据包可以包括当前值来被产生。在某些实施例中,客户计算机可以利用文件传输协议库302的特征来管理数据的打包和分块。如果这为发起的对于文件的传输请求,数据包可以包括实际文件尺寸、实际文件名、和对于其他诸如块尺寸、开始索引和结束索引的元数据的零值。该零值随着进一步文件的传输可以被实际值替换。如果这不是发起的对于文件的传输请求,数据包可以包括实际文件尺寸、实际文件名、和对于诸如块尺寸、开始索引和结束索引的元数据的实际值。客户计算机可以基于从服务器计算机接收的信息和其他动态确定的值(例如,块尺寸)来更新任何元数据值。

例如,客户计算机可以更新块尺寸来反映对应于要被发送的块的恰当的块尺寸。在某些实施例中,被客户计算机认为恰当的块尺寸可以为来自服务器计算机的建议的块尺寸或网络窗口长度中的最小。因此,客户计算机可以监测当前网络条件来确定恰当的块尺寸。在其他实施例中,由客户计算机确定的块尺寸可以基于任何适合的信息和方法被计算。

在S708处,客户计算机可以确定是否读取文件字节来取回要发送到服务器计算机的块内容(例如,原始数据)。如果客户计算机确定读取文件数据,客户计算机可以访问本地盘720。在S709处,客户计算机然后可以按客户计算机认为恰当的尺寸(在S707处)的块,在从服务器计算机接收的开始索引处开始,读取文件字节。

在某些情况中,客户计算机可以确定在这点上不读取文件数据。例如,在S710和S711处,客户计算机可以在继续文件传输之前,首先与服务器计算机认证。如果认证失败,没有文件的部分可以被传输。认证可以使用任何适合的过程来被建立。

在S712处,客户计算机可以将数据包与任何相关信息打包,并且根据发明的实施例将数据包发送到服务器计算机。数据包可以包括对应于由在S709处由客户计算机读取的文件字节的块原始数据和其他元数据。

在某些情况中,在客户计算机处可能发生超时。在某些实施例中,这个可以触发连接管理器模块308来通知逻辑管理器模块310超时已经发生。如果在S713处没有达到超时阈值(预先确定的时间段),客户计算机可以重新向服务器计算机发送在S712处传送的文件包。在某些实施例中,客户计算机可以按周期性的间隔以动态确定的块尺寸重新发送数据包,直到成功的传送或达到超时阈值。在某些实施例中,在数据包不能成功发出的时段期间,客户计算机可以在每个相继的传送尝试时选择利用更小的块尺寸。

如果在S713处已经达到超时阈值,在S714处客户计算机可以记录关于超时处理的信息,并且然后重复在S706处开始的步骤。例如,如在S707中,客户计算机可以产生另一个要在新的文件传输请求中发送的数据包,包括元数据(例如,文件名、文件尺寸、客户ID等)。不管连接中的中断,只要服务器计算机接收对应于来自客户计算机的文件的此类元数据,服务器计算机可以确定文件的确定缺失部分,并且基于对应于存储在服务器计算机处的元数据文件中的信息,仅仅请求那些部分。

在S715处,客户计算机可以接收来自服务器计算机的返回数据包,包括由服务器计算机更新的元数据。该元数据可以包括缺失开始索引、缺失结束索引和建议的块尺寸。

在S716处,客户计算机可以检查包含在接收的数据包中的索引。在示例性情况中,如果接收的数据包包括小于结束索引的开始索引,这个可以向客户计算机指示对于文件的文件传输还没有完成。在S717处,客户计算机可以更新任何值(例如,块尺寸)和索引,来包含进将要被发回到服务器计算机的数据包。在某些情况中,客户计算机可以更新基于客户计算机的当前条件动态地确定的块尺寸。块尺寸可以小于或等于从服务器计算机接收的建议的块尺寸。在该值已经有客户计算机更新后,可以产生包含这些值的新的数据包,并且然后以上面描述的在S707处开始的类似的过程传送到服务器计算机。

在S718处,如果文件已经被完全地传送,客户计算机可以删除存储于本地的文件,并且迭代到下一个要被传输的文件。在示例性情况中,如果接收的数据包没有小于结束索引的开始索引,这个可以向客户计算机指示对于文件的传输已经完成。下一个文件可以按上面描述的类似的过程传输。如果在本地文件夹中的所有文件已经被传输,在S703处,发射器可以被关闭。

D.示例性服务器侧流程

图8示出根据本发明实施例的示例性服务器侧的流程图800。图8可以描述客户计算机和服务器计算机之间文件传输的实施例。在某些实施例中,图8的客户计算机和服务器计算机可以与在本文描述的其他示图所包括的客户计算机和服务器计算机有类似的属性。可以参考图4的部件描述图8。

在S801处,服务器计算机可以从客户计算机接收用于数据包的进入的传送。数据包可以作为由客户计算机转换的文件流被接收,并且该数据包可能包括元数据。在S802处,服务器计算机可以将文件流转换成数据包。在S803处,服务器计算机可以通过任何适合的方法确定该数据包是否有效。在某些实施例中,服务器计算机可以利用校验和计算,其可以核实在数据包中接收的数据是有效和完整的。如果数据包无效,服务器计算机可以在S804处可以返回错误。因为这个可以防止文件的传输完成,这个可以引起客户计算机向服务器计算机重新发送包括元数据(例如,文件名、文件尺寸、客户ID等)的请求。

在S805处,如果数据包为有效,服务器计算机可以确定被请求传输的文件是否在服务器计算机本地存在。服务器计算机可以检查至少文件的部分是否存在,利用与在来自客户计算机的元数据中接收的文件名相同名称。如果具有该文件名的文件本地不存在,服务器计算机可以在S807处以该文件名产生新的文件,并且将该新文件存储在本地盘820。在某些实施例中,本地盘820可以位于服务器计算机的文件服务器。

如果拥有唯一文件名的文件的至少部分本地存在,在S806处服务器计算机可以确定与存储在服务器计算机处的文件相关的文件长度是否等于接收的数据包的元数据中指示的文件尺寸。如果文件长度和文件尺寸不匹配,这可以向服务器计算机指示该文件可能被损坏。因此这可以让服务器计算机在S807处覆盖该文件。

覆盖该文件可以包括检测本地文件和在服务器计算机处存储的对应的元数据文件,并且将接收的文件包当作对该文件所接收的第一文件包。新文件可以在服务器计算机处以文件名产生。然而,如果文件长度和文件尺寸匹配,在S808处,服务器计算机可以取回存储在本地盘820的具有相同文件名的文件,并且用包含在所接收的数据包中包含的块更新该文件的内容。

在S809处,服务器计算机可以将来自接收的数据包的索引的范围加到对应于文件的元数据文件。如果元数据文件已经存在,在S810中,服务器计算机可以用该索引的范围更新元数据文件。如果在S807处该文件正在被覆盖并且元数据文件被删除,在S810处可以产生新元数据文件,并且服务器计算机可以将索引的范围加到新产生的元数据文件。元数据文件可以存储在本地盘820上。索引的范围可以对应刚在服务器计算机处存储的块,并且可以由开始索引和结束索引所指示。此信息可以在将来指示服务器计算机对应于该索引的范围的文件数据已经被成功地存储。

在S811处,服务器计算机可以确定要从客户计算机请求的文件的新的索引范围。在S812处,服务器计算机可以载入对应的元数据文件来检查由开始和结束索引指示的哪些范围的文件已经被接收。在S813处,基于在对应的元数据文件中的信息,服务器计算机可以确定是否有来自文件的缺失的范围。在元数据文件中没有被指示的任何范围可能对应缺失的范围。

在S813处,如果确定有缺失范围,在S814处服务器计算机可以将该缺失范围打包成数据包。例如,服务器计算机可以将对应于缺失范围的缺失开始索引和缺失结束索引包含在数据包中。该缺失开始索引和缺失结束索引可以传达给客户计算机还没有存储在服务器计算机处的文件的文件字节的范围。

在S815处和S816处,服务器计算机可以将数据包转换成文件流,并且将该文件流返回到客户计算机。数据包可以通过任何适合的通信协议(例如,HTTP等)发送。

如果在S813处元数据文件指示没有缺失范围,服务器计算机可以在S817处打开新的线程。在某些实施例中,服务器计算机可以继续执行部署流程,其包括在S818处将压缩的文件打开(例如,upzip)到工作站文件夹中的专用的文件夹,在S819处删除压缩的(例如,zip)文件,和在S820处开始部署。此部署过程可以制作可访问的文件内容和由服务器计算机存储的其他信息。例如,存储的文件内容和信息,已经基于该文件内容和信息的分析,可以在接口中显示。

III.计算机系统

本文描述的任何计算机系统可以利用任何适合数目的子系统。这些子系统的示例在图9的计算机装置10中示出。在某些实施例中,计算机系统包括单一计算机装置,其中子系统可以为计算机装置的组件。在其他实施例中,计算机系统可以包括多个计算机装置,这些计算机装置的每一个为一具有内部组件的子系统。计算机系统可以包括台式机和笔记本电脑、平板电脑、移动电话和其他移动设备。

图9中示出的子系统通过系统总线75互连。示出了附加子系统,诸如打印机74、键盘78、存储设备79、耦合到显示装置82的监视器76及其它。耦合到I/O控制器71的外围设备和输入/输出(I/O)设备可以通过文献中已知的任意数量的装置连接到计算机系统,诸如输入/输出(I/O)端口77(例如,USB,)。例如,I/O端口77或外部接口81(例如,以太网,Wi-Fi等)可被用来将计算机装置10连接到诸如互联网之类的网络、鼠标输入设备、或扫描仪。通过系统总线75的互连允许中央处理器73与每个子系统通信,并控制来自系统存储器72或存储设备79(例如,诸如硬盘或光盘的固定盘)的指令的执行,以及子系统之间的信息交换。系统存储器72和/或存储设备79可以包含计算机可读介质。另一子系统是数据收集设备85,诸如摄像头、麦克风、加速计等。本文提及的任何数据可从一个组件输出到另一个组件,并且可被输出到用户。

计算机系统可以包括多个相同组件或子系统,例如,通过外部接口81或内部接口连接到一起。在某些实施例中,计算机系统、子系统、或装置可以通过网络通信。在此情况中,可以认为一台计算机是客户,并且另一台计算机是服务器,其中每个可以是相同计算机系统的部分。客户和服务器的每个可以包括多个系统、子系统或组件。

应当理解是本发明的任何实施例能以控制逻辑的形式实现,该控制逻辑以模块化或集成的方式使用硬件(例如,专用集成电路或现场可编程门阵列)和/或使用具有通常地可编程处理器的计算机软件。如本文所使用的,处理器包括在相同集成芯片上的单核处理器、多核处理器,或在单一电路板或联网的多个处理单元。基于本文中所提供的公开和教导,本领域普通技术人员将知道并理解使用硬件以及硬件和软件的组合来实现本发明的实施例的其它方式和/或方法。

本申请中所描述的软件组件或功能中的任何一个都可以通过由处理器执行的软件代码来实现,该处理器使用任何适合的计算机语言,诸如例如,Java、C、C++、C#、Objective—C、Swift,或脚本语言,诸如例如,使用传统或面向对象技术的Perl或Python。软件代码可以作为一些列指令或命令存储在用于存储和/或传送的计算机可读介质上。适合的非短暂性计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、诸如硬盘驱动器或软盘的磁介质、或诸如压缩盘(CD)或DVD(数字多功能盘)的光介质的、闪存存储器等。该计算机可读介质可以为此类存储或传送设备的任意组合。

此类程序也可利用适于通过由符合包括互联网的各种协议的有线、光学和/或无线网络进行传输的载波信号来编码和传输。由此,根据本发明实施例的计算机可读介质可以使用由此程序编码的数据产生。利用程序代码编码的计算机可读介质可与兼容设备封装在一起,或与其它设备分开地提供(例如,通过互联网下载)。任何此类计算机可读介质可以位于单个计算机产品(例如,硬盘、CD或整个计算机系统)上或内部,或可以在系统或网络的内部的不同计算机产品上或内部出现。计算机系统可以包括监视器、打印机、或用于向用户提供本文提及的任何结果的其他适合的显示。

本文描述的任何方法可以全部地或部分地与可以配置为执行步骤的包括一个或多个处理器的计算机系统执行。因此,实施例可以涉及配置为执行本文描述的任何方法的步骤的计算机系统,其潜在拥有执行相应步骤和相应组的步骤的不同组件。虽然表示为编号的步骤,本文方法的步骤可以同时或以不同顺序执行。另外,这些步骤的部分可以与其他方法的其他步骤的部分使用。同时,全部或部分的步骤可以为选择性的。此外,任何方法的任何步骤可以与模块、单元、电路、或用于执行这些步骤的其他装置执行。

在不偏离本发明的各实施例的精神和范围的情况下,可以以任何合适的方式组合特定实施例的具体细节。然而,发明的其他实施例可以涉及与每个单独方面或这些单独方面的特定结合相关的特定实施例。

出于说明和描述的目的,已给出本发明的示例实施例的上述描述。不旨在穷举或将本发明限制于所描述的精确形式,而且鉴于以上教导,许多修改和变化是可能的。

对“一”或“所述”的引用,除非特别指示为相反的情况,旨在表示“一个或多个”。“或”的使用旨在表示“包含性的或”,而不是“排斥性的或”,除非特别指示为相反的情况。

本文提及的所有专利、专利申请、出版物、和描述出于所有目的通过引用整体纳入于此。没有任何内容被承认为是现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1