高性能文件传输系统及方法

文档序号:7765818阅读:428来源:国知局
专利名称:高性能文件传输系统及方法
技术领域
本发明涉及网络数据传输技术领域,尤其涉及一种高性能文件传输系统及方法。
背景技术
当前,华大基因研究院拥有世界级的基因测序能力,每日生成的数据多达几十 TB(1024GB);对数据的传输提出了较高的要求。此外,分布于中国各地和海外的分中心与总 部之间的数据同步,也对带宽利用率提出了非常高的要求。虽然经过30余年的发展,海底光缆技术已经日益成熟,但是远程网络传输所引入 的信号延迟仍然无法避免。特别是在远距离传输中(如光信号从北京传往纽约至少会引入 60ms的延迟),传统的TCP协议因信号延迟原因而严重恶化了传输技术的性能。而且随着 带宽时延产品(BDP,Band Delay Product)的增加,TCP协议开始变得低效(这是由于AIMD 算法彻底减少了 TCP协议的拥塞窗口,但不能快速的恢复可用带宽;理论上,流量分析表明 TCP在BDP增加到很高的时候比较容易遭受包损失攻击),无法完成高效的传输任务。因此,传统的基于TCP协议的文件传输系统及方法在速度和可靠性方面将无法满 足日益增长的大数据量、远距离、实时传输需要,成为制约网络数据传输技术领域快速发展 的瓶颈。综上所述,提供一种高性能文件传输系统及方法成为本领域亟待解决的技术问题。

发明内容
本发明要解决的一个技术问题是提供一种高性能文件传输系统及方法,通过构造 具有相应功能的TCP协议服务器和UDT协议服务器,充分利用了网络硬件的性能,实现了大 数据量远距离传输的低延时性能。本发明的一个方面提供了一种高性能文件传输系统,本发明提供的高性能文 件传输系统的一个实施例中,该系统包括高速传输TCP服务器,用于在套接字层,通过 Iibevent事件触发网络库实现异步非阻塞网络模式,以达到高并发的要求;当有客户端发 出请求时,将请求封装成事件通知,然后根据客户端的控制连接句柄对会话线程总数直接 取余进行哈希,将事件通知分配到不同会话线程的任务队列中;从任务队列中取出事件通 知,然后调用有限状态机进行处理并获得相应的应答码,通过套接字层返回给客户端;当会 话请求需要从磁盘读写数据时,则将相应信息封装成通知事件后加入磁盘处理线程的任务 队列,磁盘处理线程则一次性在磁盘和缓存之间进行大块文件的读写,再由会话线程多次 从缓存中调用数据,通过套接字层多次和客户端交互;高速传输UDT服务器,建立用于监听 的主线程,以及处理命令、读写文件和压缩数据的三个线程池;当有用户请求时,主线程将 任务分给处理命令线程池中的一个空闲线程处理,空闲线程建立一个新的线程来处理数据 连接以传输数据;当读写文件时,处理数据线程与读写文件线程、压缩数据线程之间执行同 步的通信协作;非文件读写操作则由数据连接线程直接处理。
本发明提供的高性能文件传输系统的一个实施例中,高速传输TCP服务器进一步 包括TCP接口模块,用于在套接字层,通过Iibevent事件触发网络库实现异步非阻塞网络 模式,以达到高并发的要求;根据控制连接的句柄进行哈希,将数据分配给不同会话线程的 任务队列;会话管理器,用于从任务队列中取出数据,然后调用有限状态机进行处理并获得 相应的应答码,通过套接字层返回给客户端;由会话线程多次从缓存中调用数据,通过套接 字层多次和客户端交互;磁盘管理器,用于当会话请求需要从磁盘读写数据时,则将相应信 息加入磁盘处理线程的任务队列,一次性在磁盘和缓存之间进行大块文件的读写。本发明提供的高性能文件传输系统的一个实施例中,高速传输UDT服务器进一 步包括UDT接口模块,用于接收用户请求,以及与客户端交互并向客户端传输压缩后的数 据;会话处理模块,建立用于监听的主线程,以及处理命令、读写文件和压缩数据的三个线 程池;当有用户请求时,主线程将任务分给处理命令线程池中的一个空闲线程处理,空闲线 程建立一个新的线程来处理数据连接以传输数据;当读写文件时,数据线程与读写文件线 程、压缩数据线程之间执行同步的通信协作;非文件读写操作则由数据连接线程直接处理; 磁盘管理器,用于压缩需要传输的数据;在压缩的时候提供用于存放压缩前数据和压缩后 数据的两块工作空间,在解压的时候仅提供一块工作空间。本发明提供的高性能文件传输系统的一个实施例中,高速传输TCP服务器采用全 异步架构模式。本发明提供的高性能文件传输系统的一个实施例中,高速传输UDT服务器采用同 步阻塞模式。本发明提供的高性能文件传输系统的一个实施例中,采用LZO压缩算法对文本类 型文件进行压缩。本发明提供的高性能文件传输系统的一个实施例中,在套接字层,通过Iibevent 事件触发网络库为控制连接和数据连接各设置了 1组事件,每组4个事件,用于实现与客户 端的通信。本发明提供的高性能文件传输系统的一个实施例中,每组的4个事件包括接受 客户端事件、读数据事件、通知事件、写数据事件。本发明的另一个方面提供了一种高性能文件传输方法,该方法采用前述任意一项 的系统来实现;该方法包括高速传输TCP服务器接受客户端事件的流程;流程进一步包括 初始化监听套接字socket,并设置监听模式;为监听套接字socket初始化接受事件,激活 接受事件,并加入Iibevent事件触发网络库中;当客户端发起连接请求时,高速传输TCP服 务器自动调用接受客户端事件函数;接受客户端,生成客户端套接字socket,并将控制连 接句柄与请求的操作类型封装成一个事件通知,加入任务队列。本发明提供的高性能文件传输方法的一个实施例中,该方法还包括高速传输TCP 服务器从客户端读数据事件的流程;流程进一步包括当接受客户端事件函数被调用时, 高速传输TCP服务器接受客户端,并生成客户端套接字socket ;为客户端套接字socket初 始化读事件,激活读事件,并加入Iibevent事件触发网络库中;当客户端发送数据时,高速 传输TCP服务器自动调用读事件函数;从客户端套接字socket里读出数据,封装成事件通 知后加入任务队列。本发明提供的高性能文件传输方法的一个实施例中,该方法还包括高速传输TCP服务器通知事件的流程;流程进一步包括初始化时,高速传输TCP服务器捆绑两个套接 字socket 通知套接字socket和传递套接字socket ;为通知套接字socket初始化通知事 件,并激活通知事件;当高速传输TCP服务器需要写数据时,通过TCP管理器发送封装的事 件通知到传递套接字socket ;高速传输TCP服务器自动调用通知事件函数;从通知套接字 socket里读出数据,插入到写事件能够调用的任务队列中,并激活写事件。本发明提供的高性能文件传输方法的一个实施例中,该方法还包括高速传输TCP 服务器写数据事件的流程;流程进一步包括当接受客户端事件函数被调用时,高速传输 TCP服务器接受客户端,并生成客户端套接字socket ;为客户端套接字socket初始化写事 件,但不激活读事件;当高速传输TCP服务器需要写数据时,通过TCP管理器发送数据到传 递套接字socket ;高速传输TCP服务器自动调用通知事件函数;从通知套接字socket里读 出数据,插入到写事件能够调用的任务队列中,并激活写事件;调用写事件函数,并将数据 写到客户端套接字socket ;检验缓存内的数据是否被写完,如果没有写完,则再次激活写 事件,调用写事件函数,并将数据写到客户端套接字socket。本发明提供的高性能文件传输方法的一个实施例中,该方法还包括高速传输UDT 服务器传输文件的流程;流程进一步包括高速传输UDT服务器初始化线程池,建立套接字 socket并侦听;当客户端发起连接请求时,分配任务给空闲命令线程;客户端连接套接字 socket后发送命令,指示线程解析命令并通知数据线程;执行文件读写和压缩数据处理; 数据线程与客户端进行数据通信。本发明提供的高性能文件传输方法的一个实施例中,该方法还包括高速传输UDT 服务器压缩数据的流程;流程进一步包括在压缩数据时记录并保存压缩前后数据的大本发明提供的高性能文件传输系统及方法,采用UDT协议作为主要的网络协议, 在UDT协议无法工作的网络条件下,使用TCP协议作为底层传输协议,参考RFC 959,实现一 个FTP协议的兼容版本,作为数据传输的应用层协议;此外,本发明对协议进行适当扩展, 并加入数据压缩的功能,从而实现了大规模数据远距离传输的低延迟性和可靠性。


图1示出本发明实施例提供的一种高性能文件传输系统的结构示意图;图2示出本发明实施例提供的一种高性能文件传输系统中高速传输TCP服务器的 结构示意图;图3示出本发明实施例提供的一种高性能文件传输系统中高速传输UDT服务器的 结构示意图;图4示出本发明提供的高性能文件传输系统的一个具体实施方式
的结构示意图;图5示出本发明实施例提供的一种高性能文件传输方法的流程图;图6示出本发明提供的高性能文件传输方法的另一个实施例的流程图;图7示出本发明提供的高性能文件传输方法的另一个实施例的流程图;图8示出本发明提供的高性能文件传输方法的另一个实施例的流程图;图9示出本发明提供的高性能文件传输方法的另一个实施例的流程图;图10示出本发明提供的高性能文件传输方法的另一个实施例的流程图。
具体实施例方式下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。图1示出本发明实施例提供的一种高性能文件传输系统的结构示意图。如图1所示,高性能文件传输系统100包括高速传输TCP服务器102和高速传输 UDT服务器104;其中高速传输TCP服务器102,用于在套接字层,通过1 ibevent事件触发网络库实现异 步非阻塞网络模式,以达到高并发的要求;当有客户端发出请求时,将请求封装成一个事件 通知(该事件通知可以包括控制连接句柄、数据连接句柄、请求的操作类型、数据缓存指 针和数据长度等),然后根据客户端的控制连接句柄(一个int型变量)对会话线程总数直 接取余进行哈希,将事件通知分配给不同会话线程的任务队列中;从任务队列中取出数据, 然后调用有限状态机(Finite State Machine)进行处理并获得相应的应答码,通过套接字 层返回给客户端;当会话请求需要从磁盘读写数据时,则将相应信息加入磁盘处理线程的 任务队列,磁盘处理线程则一次性在磁盘和缓存之间进行大块文件的读写,再由会话线程 多次从缓存中调用数据,通过套接字层多次和客户端交互。传统FTP服务器I/O主要由外部通讯I/O和内部I/O组成,通常不会遇到外部I/ 0瓶颈问题,因为很多时候服务器内部I/O瓶颈是掣肘的关键。针对此瓶颈,我们在FTP服 务器的架构设计上选用全异步模式,同时,通过使用内存缓存,减少磁盘磁针定位和读写的 次数,提高磁盘I/O和网络I/O的利用率之比,从而将瓶颈转移到网络I/O。高速传输UDT服务器104,建立用于监听的主线程,以及处理命令、读写文件和压 缩数据的三个线程池;当有用户请求时,主线程将任务分给处理命令线程池中的一个空闲 线程处理,空闲线程建立一个新的线程来处理数据连接以传输数据(空闲线程会建立一个 新的线程来处理数据连接,实际上数据线程是操纵一个UDT套接字socket来传输数据); 当读写文件时,数据线程与读写文件线程、压缩数据线程之间执行同步的通信协作(三线 程之间可设置两个缓冲区);非文件读写操作则由数据连接线程直接处理。本发明提供的高性能文件传输系统的一个实施例中,高速传输TCP服务器采用全 异步架构模式(asynchronous),这种模式可以连续发起多个非阻塞I/O操作,当操作完成 时通过消息或线程回调函数通知应用程序。这是在高性能I/O应用场合最广泛的一种模 型,实际开发中只需一个或几个(根据CPU数量自定义)线程来对多个I/O操作控制。高 速传输UDT服务器采用同步阻塞模式。同步阻塞是指函数在没有执行完或者接收完数据的 情况下不返回,线程被挂起。本发明提供的高性能文件传输系统的一个实施例中,在套接字层,通过Iibevent 事件触发网络库为控制连接和数据连接各设置了 1组事件,每组4个事件,用于实现与客户 端的控制命令通信和数据传输。其中,每组的4个事件包括接受客户端事件、读数据事件、 通知事件、写数据事件。本发明提供的高性能文件传输系统的一个实施例中,采用LZO压缩算法对文本类 型文件进行压缩。通过压缩需要传输的数据,从而加速传输。此外,在压缩的时候需要提供 用于存放压缩前数据和压缩后数据的两块工作空间(后者较大,以防止遇到数据无法压缩 的情况),而解压的时候仅需要一块工作空间即可以完成解压。
本发明提供的高性能文件传输系统,通过Iibevent这一轻量级事件触发网 络库,实现异步非阻塞网络模式,以达到高并发的要求;在多处理器环境中,多个线程 (multi-thread)可以独立处理相应会话的数据,且每个会话的数据都固定在一个线程处 理,这样在多个线程同时运行时,既能有效提高CPU的使用率,提高性能,又避免出现会话 请求的时序问题。图2示出本发明实施例提供的一种高性能文件传输系统中高速传输TCP服务器的 结构示意图。如图2所示,高速传输TCP服务器200包括TCP接口模块(TCP Interface) 202、 会话管理器(Session Manager) 204和磁盘管理器(Disk Manager) 206 ;其中TCP接口模块202,用于在套接字层,通过Iibevent事件触发网络库实现异步非 阻塞网络模式,以达到高并发的要求;当有客户端发出请求时,将请求封装成一个事件通知 (该事件通知可以包括控制连接句柄、数据连接句柄、请求的操作类型、数据缓存指针和 数据长度等),然后根据客户端的控制连接句柄(一个int型变量)对会话线程总数直接取 余进行哈希,将事件通知分配给不同会话线程的任务队列中。会话管理器204,用于从任务队列中取出事件通知,然后调用有限状态机进行处理 并获得相应的应答码,通过套接字层返回给客户端;由会话线程多次从缓存中调用数据,通 过套接字层多次和客户端交互。磁盘管理器206,用于当会话请求需要从磁盘读写数据时,则将相应信息封装成通 知事件后加入磁盘处理线程的任务队列,一次性在磁盘和缓存之间进行大块文件的读写。本发明提供的高性能文件传输系统,通过Iibevent这一轻量级事件触发网络库, 实现高并发的要求;在多处理器环境中,在多个线程同时运行时,既能有效提高CPU的使用 率,提高性能,又避免出现会话请求的时序问题。进一步的,当会话请求需要从磁盘读写数 据时,则将相应信息加入磁盘处理线程的任务队列,磁盘处理线程则根据磁盘容量大、读写 速度慢的特点,一次性在磁盘和缓存之间进行大块文件的读写,再由会话线程多次从缓存 中调用数据,通过套接字层多次和客户端交互;从而减少磁盘磁针定位和读写的次数,提高 磁盘I/O和网络I/O的利用率之比。图3示出本发明实施例提供的一种高性能文件传输系统中高速传输UDT服务器的 结构示意图。如图3所示,高速传输UDT服务器300包括UDT接口模块(UDT Interface) 302、 会话处理模块(Session Processing) 304和磁盘管理器(Disk Manager) 306 ;其中UDT接口模块302,用于接收用户请求,以及与客户端交互并向客户端传输压缩后 的数据。会话处理模块304,建立用于监听的主线程,以及处理命令、读写文件和压缩数据 的三个线程池;当有用户请求时,主线程将任务分给处理命令线程池中的一个空闲线程处 理,空闲线程建立一个新的线程来处理数据连接以传输数据;当读写文件时,处理数据线程 与读写文件线程、压缩数据线程之间执行同步的通信协作;非文件读写操作则由数据连接 线程直接处理。磁盘管理器306,用于压缩需要传输的数据;在压缩的时候提供用于存放压缩前 数据和压缩后数据的两块工作空间,在解压的时候仅提供一块工作空间。
本发明提供的高性能文件传输系统的一个实施例中,采用LZ0(Lempel Ziv Oberhumer)压缩算法对文本类型文件进行压缩。该算法对文本类文件具有不错的压缩比和 压缩速率,再配合UDT传输协议的特点,可以达到提高传输效率的目的。UDT协议主要用在小数量的bulk源共享富裕带宽的情况下,最典型的例子就是建 立在光纤广域网上的网格计算。UDT的主要目标是效率、公平、稳定。单个的或少量的UDT 流应该利用任何高速连接提供的可用带宽,即使带宽变化的很剧烈。同时,任何并发的流必 须公平地共享带宽,不依赖于不同的带宽瓶劲、起始事件、RTT(双向传播时延,Round Trip Time)。稳定性需要包发送速率应该一直会聚可用带宽很快,并且必须避免拥塞碰撞。本发明提供的高性能文件传输系统,采用UDT协议作为主要的网络协议,并对协 议进行适当扩展,加入数据压缩的功能(数据压缩算法采用LZ0,后续也可以针对基因测序 等海量数据的特点再作专门优化);利用了 UDT协议服务器的良好弹性,实现了高速率传 输,并保证了传输的可靠性。图4示出本发明提供的高性能文件传输系统的一个具体实施方式
的结构示意图。如图4所示,高性能文件传输系统400包括高速传输TCP服务器和高速传输UDT 服务器;其中高速传输TCP服务器包括TCP接口模块402、会话管理器404和磁盘管理器406 ; 其中TCP接口模块402,用于在套接字层,通过Iibevent事件触发网络库实现异步非阻 塞网络模式,以达到高并发的要求;根据控制连接的句柄进行哈希,将数据分配给不同会话 线程的任务队列。会话管理器404,用于从任务队列中取出数据,然后调用有限状态机进行处理并获 得相应的应答码,通过套接字层返回给客户端;由会话线程多次从缓存中调用数据,通过套 接字层多次和客户端交互。磁盘管理器406,用于当会话请求需要从磁盘读写数据时,则将相应信息加入磁盘 处理线程的任务队列,一次性在磁盘和缓存之间进行大块文件的读写。高速传输UDT服务器包括UDT接口模块408、会话处理模块410和磁盘管理器 412 ;其中UDT接口模块408,用于接收用户请求,以及与客户端交互并向客户端传输压缩后 的数据。会话处理模块410,建立用于监听的主线程,以及处理命令、读写文件和压缩数据 的三个线程池;当有用户请求时,主线程将任务分给处理命令线程池中的一个空闲线程处 理,空闲线程建立一个新的线程来处理数据连接以传输数据;当读写文件时,处理数据线程 与读写文件线程、压缩数据线程之间执行同步的通信协作;非文件读写操作则由数据连接 线程直接处理。磁盘管理器412,用于压缩需要传输的数据;在压缩的时候提供用于存放压缩前 数据和压缩后数据的两块工作空间,在解压的时候仅提供一块工作空间。本发明提供的高性能文件传输系统,在FTP服务器的架构设计上选用全异步模 式,同时通过使用内存缓存,减少磁盘磁针定位和读写的次数,提高磁盘I/O和网络I/O的 利用率之比,从而将瓶颈转移到网络I/O。此外,利用了 UDT协议服务器的良好弹性,实现了高速率传输,并保证了传输的可靠性。图5示出本发明实施例提供的一种高性能文件传输方法的流程图。如图5所示,高性能文件传输方法采用前述实施例中任意一种类的系统来实现; 该方法包括高速传输TCP服务器接受客户端事件的流程;该流程500进一步包括步骤502,初始化监听套接字socket (如设置运输层协议、捆绑端口),并设置监听 模式。步骤504,为监听套接字socket初始化接受事件,激活接受事件,并加入Iibevent 事件触发网络库中。步骤506,当客户端发起连接请求时,高速传输TCP服务器自动调用接受客户端事 件函数。步骤508,接受客户端,生成客户端套接字socket,并将控制连接句柄与请求的操 作类型封装成一个事件通知,加入任务队列。图6示出本发明提供的高性能文件传输方法的另一个实施例的流程图。如图6所示,高性能文件传输方法采用前述实施例中任意一种类的系统来实现; 该方法包括高速传输TCP服务器从客户端读数据事件的流程;该流程600进一步包括步骤602,当接受客户端事件函数被调用时,高速传输TCP服务器接受客户端,并 生成客户端套接字socket。步骤604,为客户端套接字socket初始化读事件,激活读事件,并加入Iibevent事 件触发网络库中。步骤606,当客户端发送数据时,高速传输TCP服务器自动调用读事件函数。步骤608,从客户端套接字socket里读出数据(如果是控制连接,该数据为一条以 “/r/n”结尾的字符串,如果是数据连接,则为上传的文件数据),封装成事件通知(如设置 控制连接句柄及数据连接句柄、补充请求的操作类型、设置数据缓存指针和数据长度)后 加入任务队列。图7示出本发明提供的高性能文件传输方法的另一个实施例的流程图。如图7所示,高性能文件传输方法采用前述实施例中任意一种类的系统来实现; 该方法包括高速传输TCP服务器通知事件的流程;该流程700进一步包括步骤702,初始化时,高速传输TCP服务器捆绑两个套接字socket 通知套接字 socket 和传递套接字 socket,存在 TCP_interface 内的 TCP_manager (TCP 管理器)。步骤704,为通知套接字socket初始化通知事件,并激活通知事件。步骤706,当高速传输TCP服务器需要写数据时,通过TCP管理器发送封装的事件 通知到传递套接字socket。具体来说,TCP管理器是TCPjnterface内部的一个成员,主要 功能是对TCP的socket进行管理。由于在初始化时,所述高速传输TCP服务器捆绑两个套 接字socket 通知套接字socket和传递套接字socket ;所以,执行通知事件需要通过TCP 管理器调用。步骤708,高速传输TCP服务器自动调用通知事件函数。步骤710,从通知套接字socket里读出数据,插入到写事件能够调用的任务队列 中,并激活写事件。图8示出本发明提供的高性能文件传输方法的另一个实施例的流程图。
如图8所示,高性能文件传输方法采用前述实施例中任意一种类的系统来实现; 该方法包括高速传输TCP服务器写数据事件的流程;该流程800进一步包括步骤802,当接受客户端事件函数被调用时,高速传输TCP服务器接受客户端,并 生成客户端套接字socket ;步骤804,为客户端套接字socket初始化写事件,但不激活读事件;步骤806,当高速传输TCP服务器需要写数据时,通过TCP管理器发送数据到传递 套接字socket ;步骤808,高速传输TCP服务器自动调用通知事件函数;步骤810,从通知套接字socket里读出数据,插入到写事件能够调用的任务队列 中,并激活写事件;步骤812,调用写事件函数,并将数据写到客户端套接字socket ;步骤814,检验缓存内的数据是否被写完。如果没有写完,则跳转到步骤810,再次 激活写事件,调用写事件函数,并将数据写到客户端套接字socket。图9示出本发明提供的高性能文件传输方法的另一个实施例的流程图。如图9所示,高性能文件传输方法采用前述实施例中任意一种类的系统来实现; 该方法包括高速传输UDT服务器传输文件的流程;该流程900进一步包括步骤902,高速传输UDT服务器初始化线程池,建立套接字socket并侦听。步骤904,当客户端发起连接请求时,分配任务给空闲命令线程。步骤906,客户端连接套接字socket后发送命令,指示线程解析命令并通知数据 线程。步骤908,执行文件读写和压缩数据处理。步骤910,数据线程与客户端进行数据通信。图10示出本发明提供的高性能文件传输方法的另一个实施例的流程图。如图10所示,高性能文件传输方法采用前述实施例中任意一种类的系统来实现; 该方法包括高速传输UDT服务器压缩数据的流程;该流程1000进一步包括在压缩数据 时,记录并保存压缩前后数据的大小。随后在解压缩过程中,首先提取压缩前后的数据大小 的信息;读取压缩后相应大小的数据,执行解压缩,在写回解压缩后的数据;从而既保证了 传输速率,同时也保证了解压缩后的数据可靠性。接下来简要介绍应用本发明提供的高性能文件传输系统及方法的一个具体实施 例。目前,高性能文件传输系统(Hyper Transfer)在Panda项目中承担数据传输的任 务,传输文件的大小从几KB到十几GB不等,十几个上传下载任务同时并发。以下是该项目 运行期间的服务器日志2010-08-19 17: 31 33INF0-[run_finish_download] [1179] 172. 30. 0. 29download/mnt/soft/soap/input/100000_reads_2. fq :108·108MB/s2010-08-19 17 31: 37INF0-[run_f inish_download] [1179] 172. 30. 0. 29 download/mnt/soft/soap/input/cattle_cuted. fa :112·674MB/s2010-08-19 17 : 31 : 40INF0 - [run_finish_download] [1179] 172. 30. 0. 29download/mnt/soft/soap/input/100000_reads_2. fq :110.129MB/s
2010-08-19 17 31 44INF0-[run_f inish_download] [1179] 172. 30. 0. 29 download/mnt/soft/soap/input/cattle_cuted. fa :112·282MB/s该环境的服务器与客户端之间使用千兆带宽,传输上限为128MB/S,在数据传输期 间,平均传输速率达到110. 80MB/S,平均带宽利用率达到86. 56%。本发明提供的高性能文 件传输系统及方法,服务器的平均带宽使用率超过80%,数据传输准确无误。参考前述本发明示例性的描述,本领域技术人员可以清楚的知晓本发明具有以下 优点1、本发明提供的高性能文件传输系统及方法的一个实施例,通过构造具有相应功 能的TCP协议服务器和UDT协议服务器,充分利用了网络硬件的性能,实现了大数据量远距 离传输的低延时性能。2、本发明提供的高性能文件传输系统及方法的一个实施例,采用UDT协议作为主 要的网络协议,在UDT协议无法工作的网络条件下,使用TCP协议作为底层传输协议,参考 RFC 959,实现一个FTP协议的兼容版本,作为数据传输的应用层协议;此外,本发明对协议 进行适当扩展,并加入数据压缩的功能,从而实现了大规模数据远距离传输的低延迟性和
可靠性。3、本发明提供的高性能文件传输系统及方法的一个实施例,通过Iibevent这一 轻量级事件触发网络库,实现异步非阻塞网络模式,以达到高并发的要求;在多处理器环境 中,多个线程(multi-thread)可以独立处理相应会话的数据,且每个会话的数据都固定在 一个线程处理,这样在多个线程同时运行时,既能有效提高CPU的使用率,提高性能,又避 免出现会话请求的时序问题。4、本发明提供的高性能文件传输系统及方法的一个实施例,在FTP服务器的架构 设计上选用全异步模式,同时通过使用内存缓存,减少磁盘磁针定位和读写的次数,提高磁 盘I/O和网络I/O的利用率之比,从而将瓶颈转移到网络I/O。本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明 限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。本发明中 描述的功能模块以及功能模块的划分方式仅为说明本发明的思想,本领域技术人员根据本 发明的教导以及实际应用的需要可以自由改变功能模块的划分方式及其模块构造以实现 相同的功能;选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域 的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
权利要求
一种高性能文件传输系统,其特征在于,所述系统包括高速传输TCP服务器,用于在套接字层,通过libevent事件触发网络库实现异步非阻塞网络模式,以达到高并发的要求;当有客户端发出请求时,将请求封装成事件通知,然后根据客户端的控制连接句柄对会话线程总数直接取余进行哈希,将所述事件通知分配到不同会话线程的任务队列中;从任务队列中取出所述事件通知,然后调用有限状态机进行处理并获得相应的应答码,通过套接字层返回给客户端;当会话请求需要从磁盘读写数据时,则将相应信息封装成通知事件后加入磁盘处理线程的任务队列,磁盘处理线程则一次性在磁盘和缓存之间进行大块文件的读写,再由会话线程多次从缓存中调用数据,通过套接字层多次和客户端交互;高速传输UDT服务器,建立用于监听的主线程,以及处理命令、读写文件和压缩数据的三个线程池;当有用户请求时,所述主线程将任务分给处理命令线程池中的一个空闲线程处理,所述空闲线程建立一个新的线程来处理数据连接以传输数据;当读写文件时,处理数据线程与读写文件线程、压缩数据线程之间执行同步的通信协作;非文件读写操作则由数据连接线程直接处理。
2.根据权利要求1所述的系统,其特征在于,所述高速传输TCP服务器进一步包括 TCP接口模块,用于在套接字层,通过Iibevent事件触发网络库实现异步非阻塞网络模式,以达到高并发的要求;根据控制连接的句柄进行哈希,将数据分配给不同会话线程的 任务队列;会话管理器,用于从任务队列中取出数据,然后调用有限状态机进行处理并获得相应 的应答码,通过套接字层返回给客户端;由会话线程多次从缓存中调用数据,通过套接字层 多次和客户端交互;磁盘管理器,用于当会话请求需要从磁盘读写数据时,则将相应信息加入磁盘处理线 程的任务队列,一次性在磁盘和缓存之间进行大块文件的读写。
3.根据权利要求1所述的系统,其特征在于,高速传输UDT服务器进一步包括UDT接口模块,用于接收用户请求,以及与客户端交互并向所述客户端传输压缩后的数据;会话处理模块,建立用于监听的主线程,以及处理命令、读写文件和压缩数据的三个线 程池;当有用户请求时,所述主线程将任务分给处理命令线程池中的一个空闲线程处理,所 述空闲线程建立一个新的线程来处理数据连接以传输数据;当读写文件时,数据线程与读 写文件线程、压缩数据线程之间执行同步的通信协作;非文件读写操作则由数据连接线程 直接处理;磁盘管理器,用于压缩需要传输的数据;在压缩的时候提供用于存放压缩前数据和压 缩后数据的两块工作空间,在解压的时候仅提供一块工作空间。
4.根据权利要求1所述的系统,其特征在于,所述高速传输TCP服务器采用全异步架构 模式。
5.根据权利要求1所述的系统,其特征在于,所述高速传输UDT服务器采用同步阻塞模式。
6.根据权利要求1或3所述的系统,其特征在于,采用LZO压缩算法对文本类型文件进 行压缩。
7.根据权利要求1或2所述的系统,其特征在于,在所述套接字层,通过所述Iibevent 事件触发网络库为控制连接和数据连接各设置1组事件,每组4个事件,用于实现与客户端 的控制命令通信和数据传输。
8.根据权利要求7所述的系统,其特征在于,每组的4个事件包括接受客户端事件、 读数据事件、通知事件、写数据事件。
9.一种高性能文件传输方法,其特征在于,采用前述权利要求中任意一项所述的系统 来实现;所述方法包括所述高速传输TCP服务器接受客户端事件的流程;所述流程进一步包括初始化监听套接字socket,并设置为监听模式和非阻塞模式; 为所述监听套接字socket初始化接受事件,激活所述接受事件,并加入Iibevent事件 触发网络库中;当客户端发起连接请求时,所述高速传输TCP服务器自动调用接受客户端事件函数; 接受所述客户端,生成客户端套接字socket,并将控制连接句柄与请求的操作类型封 装成一个事件通知,加入任务队列。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括所述高速传输TCP服务 器从客户端读数据事件的流程;所述流程进一步包括当接受客户端事件函数被调用时,所述高速传输TCP服务器接受所述客户端,并生成 客户端套接字socket ;为所述客户端套接字socket初始化读事件,激活所述读事件,并加入Iibevent事件触 发网络库中;当所述客户端发送数据时,所述高速传输TCP服务器自动调用读事件函数; 从所述客户端套接字socket里读出数据,封装成事件通知后加入任务队列。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括所述高速传输TCP服务 器通知事件的流程;所述流程进一步包括初始化时,所述高速传输TCP服务器捆绑两个套接字socket 通知套接字socket和传 递套接字socket ;为所述通知套接字socket初始化通知事件,并激活所述通知事件; 当所述高速传输TCP服务器需要写数据时,通过TCP管理器发送封装的事件通知到所 述传递套接字socket ;所述高速传输TCP服务器自动调用通知事件函数;从所述通知套接字socket里读出事件通知,插入到写事件能够调用的任务队列中,并 激活所述写事件。
12.根据权利要求9所述的方法,其特征在于,所述方法还包括所述高速传输TCP服务 器写数据事件的流程;所述流程进一步包括当接受客户端事件函数被调用时,所述高速传输TCP服务器接受所述客户端,并生成 客户端套接字socket ;为所述客户端套接字socket初始化写事件,但不激活所述读事件;当所述高速传输TCP服务器需要写数据时,通过TCP管理器同上发送数据到所述传递 套接字socket ;所述高速传输TCP服务器自动调用通知事件函数;从所述通知套接字socket里读出事件通知,插入到写事件能够调用的任务队列中,并 激活所述写事件;调用写事件函数,并将数据写到客户端套接字socket ;检验缓存内的数据是否被写完,如果没有写完,则再次激活所述写事件,调用写事件函 数,并将数据写到客户端套接字socket。
13.根据权利要求9所述的方法,其特征在于,所述方法还包括所述高速传输UDT服务 器传输文件的流程;所述流程进一步包括所述高速传输UDT服务器初始化线程池,建立套接字socket并侦听;当客户端发起连接请求时,分配任务给空闲命令线程;所述客户端连接所述套接字socket后发送命令,指示线程解析所述命令并通知数据 线程;执行文件读写和压缩数据处理;所述数据线程与所述客户端进行数据通信。
14.根据权利要求9所述的方法,其特征在于,所述方法还包括所述高速传输UDT服务 器压缩数据的流程;所述流程进一步包括在压缩数据时记录并保存压缩前后数据的大小。
全文摘要
本发明公开一种高性能文件传输系统及方法,该方法采用本发明提供的系统来实现;该方法包括高速传输TCP服务器接受客户端事件的流程;流程进一步包括初始化监听套接字socket,并设置监听模式;为监听套接字socket初始化接受事件,激活接受事件,并加入libevent事件触发网络库中;当客户端发起连接请求时,高速传输TCP服务器自动调用接受客户端事件函数;接受客户端,生成客户端套接字socket,并将控制连接句柄与请求的操作类型封装成一个事件通知,加入任务队列。本发明提供的高性能文件传输系统及方法,在FTP服务器的架构设计上选用全异步模式,同时通过使用内存缓存,减少磁盘磁针定位和读写的次数,提高磁盘I/O和网络I/O的利用率之比,从而将瓶颈转移到网络I/O。此外,利用了UDT协议服务器的良好弹性,实现了高速率传输,并保证了传输的可靠性。
文档编号H04L29/06GK101982955SQ201010551120
公开日2011年3月2日 申请日期2010年11月19日 优先权日2010年11月19日
发明者李宏博, 蔡泽霖, 陈勇, 陈天健 申请人:深圳华大基因科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1