CN101982955B - 高性能文件传输系统及方法 - Google Patents
高性能文件传输系统及方法 Download PDFInfo
- Publication number
- CN101982955B CN101982955B CN 201010551120 CN201010551120A CN101982955B CN 101982955 B CN101982955 B CN 101982955B CN 201010551120 CN201010551120 CN 201010551120 CN 201010551120 A CN201010551120 A CN 201010551120A CN 101982955 B CN101982955 B CN 101982955B
- Authority
- CN
- China
- Prior art keywords
- event
- socket
- data
- client
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/165—Combined use of TCP and UDP protocols; selection criteria therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种高性能文件传输系统及方法,该方法采用本发明提供的系统来实现;该方法包括高速传输TCP服务器接受客户端事件的流程;流程进一步包括:初始化监听套接字socket,并设置监听模式;为监听套接字socket初始化接受事件,激活接受事件,并加入libevent事件触发网络库中;当客户端发起连接请求时,高速传输TCP服务器自动调用接受客户端事件函数;接受客户端,生成客户端套接字socket,并将控制连接句柄与请求的操作类型封装成一个事件通知,加入任务队列。本发明提供的高性能文件传输系统及方法,在FTP服务器的架构设计上选用全异步模式,同时通过使用内存缓存,减少磁盘磁针定位和读写的次数,提高磁盘I/O和网络I/O的利用率之比,从而将瓶颈转移到网络I/O。此外,利用了UDT协议服务器的良好弹性,实现了高速率传输,并保证了传输的可靠性。
Description
技术领域
本发明涉及网络数据传输技术领域,尤其涉及一种高性能文件传输系统及方法。
背景技术
当前,华大基因研究院拥有世界级的基因测序能力,每日生成的数据多达几十TB(1024GB);对数据的传输提出了较高的要求。此外,分布于中国各地和海外的分中心与总部之间的数据同步,也对带宽利用率提出了非常高的要求。
虽然经过30余年的发展,海底光缆技术已经日益成熟,但是远程网络传输所引入的信号延迟仍然无法避免。特别是在远距离传输中(如光信号从北京传往纽约至少会引入60ms的延迟),传统的TCP协议因信号延迟原因而严重恶化了传输技术的性能。而且随着带宽时延产品(BDP,Band Delay Product)的增加,TCP协议开始变得低效(这是由于AIMD算法彻底减少了TCP协议的拥塞窗口,但不能快速的恢复可用带宽;理论上,流量分析表明TCP在BDP增加到很高的时候比较容易遭受包损失攻击),无法完成高效的传输任务。
因此,传统的基于TCP协议的文件传输系统及方法在速度和可靠性方面将无法满足日益增长的大数据量、远距离、实时传输需要,成为制约网络数据传输技术领域快速发展的瓶颈。
综上所述,提供一种高性能文件传输系统及方法成为本领域亟待解决的技术问题。
发明内容
本发明要解决的一个技术问题是提供一种高性能文件传输系统及方法,通过构造具有相应功能的TCP协议服务器和UDT协议服务器,充分利用了网络硬件的性能,实现了大数据量远距离传输的低延时性能。
本发明的一个方面提供了一种高性能文件传输系统,本发明提供的高性能文件传输系统的一个实施例中,该系统包括:高速传输TCP服务器,用于在套接字层,通过libevent事件触发网络库实现异步非阻塞网络模式,以达到高并发的要求;当有客户端发出请求时,将请求封装成事件通知,然后根据客户端的控制连接句柄对会话线程总数直接取余进行哈希,将事件通知分配到不同会话线程的任务队列中;从任务队列中取出事件通知,然后调用有限状态机进行处理并获得相应的应答码,通过套接字层返回给客户端;当会话请求需要从磁盘读写数据时,则将相应信息封装成通知事件后加入磁盘处理线程的任务队列,磁盘处理线程则一次性在磁盘和缓存之间进行大块文件的读写,再由会话线程多次从缓存中调用数据,通过套接字层多次和客户端交互;高速传输UDT服务器,建立用于监听的主线程,以及处理命令、读写文件和压缩数据的三个线程池;当有用户请求时,主线程将任务分给处理命令线程池中的一个空闲线程处理,空闲线程建立一个新的线程来处理数据连接以传输数据;当读写文件时,处理数据线程与读写文件线程、压缩数据线程之间执行同步的通信协作;非文件读写操作则由数据连接线程直接处理。
本发明提供的高性能文件传输系统的一个实施例中,高速传输TCP服务器进一步包括:TCP接口模块,用于在套接字层,通过libevent事件触发网络库实现异步非阻塞网络模式,以达到高并发的要求;根据控制连接的句柄进行哈希,将数据分配给不同会话线程的任务队列;会话管理器,用于从任务队列中取出数据,然后调用有限状态机进行处理并获得相应的应答码,通过套接字层返回给客户端;由会话线程多次从缓存中调用数据,通过套接字层多次和客户端交互;磁盘管理器,用于当会话请求需要从磁盘读写数据时,则将相应信息加入磁盘处理线程的任务队列,一次性在磁盘和缓存之间进行大块文件的读写。
本发明提供的高性能文件传输系统的一个实施例中,高速传输UDT服务器进一步包括:UDT接口模块,用于接收用户请求,以及与客户端交互并向客户端传输压缩后的数据;会话处理模块,建立用于监听的主线程,以及处理命令、读写文件和压缩数据的三个线程池;当有用户请求时,主线程将任务分给处理命令线程池中的一个空闲线程处理,空闲线程建立一个新的线程来处理数据连接以传输数据;当读写文件时,数据线程与读写文件线程、压缩数据线程之间执行同步的通信协作;非文件读写操作则由数据连接线程直接处理;磁盘管理器,用于压缩需要传输的数据;在压缩的时候提供用于存放压缩前数据和压缩后数据的两块工作空间,在解压的时候仅提供一块工作空间。
本发明提供的高性能文件传输系统的一个实施例中,高速传输TCP服务器采用全异步架构模式。
本发明提供的高性能文件传输系统的一个实施例中,高速传输UDT服务器采用同步阻塞模式。
本发明提供的高性能文件传输系统的一个实施例中,采用LZO压缩算法对文本类型文件进行压缩。
本发明提供的高性能文件传输系统的一个实施例中,在套接字层,通过libevent事件触发网络库为控制连接和数据连接各设置了1组事件,每组4个事件,用于实现与客户端的通信。
本发明提供的高性能文件传输系统的一个实施例中,每组的4个事件包括:接受客户端事件、读数据事件、通知事件、写数据事件。
本发明的另一个方面提供了一种高性能文件传输方法,该方法采用前述任意一项的系统来实现;该方法包括高速传输TCP服务器接受客户端事件的流程;流程进一步包括:初始化监听套接字socket,并设置监听模式;为监听套接字socket初始化接受事件,激活接受事件,并加入libevent事件触发网络库中;当客户端发起连接请求时,高速传输TCP服务器自动调用接受客户端事件函数;接受客户端,生成客户端套接字socket,并将控制连接句柄与请求的操作类型封装成一个事件通知,加入任务队列。
本发明提供的高性能文件传输方法的一个实施例中,该方法还包括高速传输TCP服务器从客户端读数据事件的流程;流程进一步包括:当接受客户端事件函数被调用时,高速传输TCP服务器接受客户端,并生成客户端套接字socket;为客户端套接字socket初始化读事件,激活读事件,并加入libevent事件触发网络库中;当客户端发送数据时,高速传输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,用于在套接字层,通过libevent事件触发网络库实现异步非阻塞网络模式,以达到高并发的要求;当有客户端发出请求时,将请求封装成一个事件通知(该事件通知可以包括:控制连接句柄、数据连接句柄、请求的操作类型、数据缓存指针和数据长度等),然后根据客户端的控制连接句柄(一个int型变量)对会话线程总数直接取余进行哈希,将事件通知分配给不同会话线程的任务队列中;从任务队列中取出数据,然后调用有限状态机(Finite State Machine)进行处理并获得相应的应答码,通过套接字层返回给客户端;当会话请求需要从磁盘读写数据时,则将相应信息加入磁盘处理线程的任务队列,磁盘处理线程则一次性在磁盘和缓存之间进行大块文件的读写,再由会话线程多次从缓存中调用数据,通过套接字层多次和客户端交互。
传统FTP服务器I/O主要由外部通讯I/O和内部I/O组成,通常不会遇到外部I/O瓶颈问题,因为很多时候服务器内部I/O瓶颈是掣肘的关键。针对此瓶颈,我们在FTP服务器的架构设计上选用全异步模式,同时,通过使用内存缓存,减少磁盘磁针定位和读写的次数,提高磁盘I/O和网络I/O的利用率之比,从而将瓶颈转移到网络I/O。
高速传输UDT服务器104,建立用于监听的主线程,以及处理命令、读写文件和压缩数据的三个线程池;当有用户请求时,主线程将任务分给处理命令线程池中的一个空闲线程处理,空闲线程建立一个新的线程来处理数据连接以传输数据(空闲线程会建立一个新的线程来处理数据连接,实际上数据线程是操纵一个UDT套接字socket来传输数据);当读写文件时,数据线程与读写文件线程、压缩数据线程之间执行同步的通信协作(三线程之间可设置两个缓冲区);非文件读写操作则由数据连接线程直接处理。
本发明提供的高性能文件传输系统的一个实施例中,高速传输TCP服务器采用全异步架构模式(asynchronous),这种模式可以连续发起多个非阻塞I/O操作,当操作完成时通过消息或线程回调函数通知应用程序。这是在高性能I/O应用场合最广泛的一种模型,实际开发中只需一个或几个(根据CPU数量自定义)线程来对多个I/O操作控制。高速传输UDT服务器采用同步阻塞模式。同步阻塞是指函数在没有执行完或者接收完数据的情况下不返回,线程被挂起。
本发明提供的高性能文件传输系统的一个实施例中,在套接字层,通过libevent事件触发网络库为控制连接和数据连接各设置了1组事件,每组4个事件,用于实现与客户端的控制命令通信和数据传输。其中,每组的4个事件包括:接受客户端事件、读数据事件、通知事件、写数据事件。
本发明提供的高性能文件传输系统的一个实施例中,采用LZO压缩算法对文本类型文件进行压缩。通过压缩需要传输的数据,从而加速传输。此外,在压缩的时候需要提供用于存放压缩前数据和压缩后数据的两块工作空间(后者较大,以防止遇到数据无法压缩的情况),而解压的时候仅需要一块工作空间即可以完成解压。
本发明提供的高性能文件传输系统,通过libevent这一轻量级事件触发网络库,实现异步非阻塞网络模式,以达到高并发的要求;在多处理器环境中,多个线程(multi-thread)可以独立处理相应会话的数据,且每个会话的数据都固定在一个线程处理,这样在多个线程同时运行时,既能有效提高CPU的使用率,提高性能,又避免出现会话请求的时序问题。
图2示出本发明实施例提供的一种高性能文件传输系统中高速传输TCP服务器的结构示意图。
如图2所示,高速传输TCP服务器200包括:TCP接口模块(TCP Interface)202、会话管理器(Session Manager)204和磁盘管理器(Disk Manager)206;其中
TCP接口模块202,用于在套接字层,通过libevent事件触发网络库实现异步非阻塞网络模式,以达到高并发的要求;当有客户端发出请求时,将请求封装成一个事件通知(该事件通知可以包括:控制连接句柄、数据连接句柄、请求的操作类型、数据缓存指针和数据长度等),然后根据客户端的控制连接句柄(一个int型变量)对会话线程总数直接取余进行哈希,将事件通知分配给不同会话线程的任务队列中。
会话管理器204,用于从任务队列中取出事件通知,然后调用有限状态机进行处理并获得相应的应答码,通过套接字层返回给客户端;由会话线程多次从缓存中调用数据,通过套接字层多次和客户端交互。
磁盘管理器206,用于当会话请求需要从磁盘读写数据时,则将相应信息封装成通知事件后加入磁盘处理线程的任务队列,一次性在磁盘和缓存之间进行大块文件的读写。
本发明提供的高性能文件传输系统,通过libevent这一轻量级事件触发网络库,实现高并发的要求;在多处理器环境中,在多个线程同时运行时,既能有效提高CPU的使用率,提高性能,又避免出现会话请求的时序问题。进一步的,当会话请求需要从磁盘读写数据时,则将相应信息加入磁盘处理线程的任务队列,磁盘处理线程则根据磁盘容量大、读写速度慢的特点,一次性在磁盘和缓存之间进行大块文件的读写,再由会话线程多次从缓存中调用数据,通过套接字层多次和客户端交互;从而减少磁盘磁针定位和读写的次数,提高磁盘I/O和网络I/O的利用率之比。
图3示出本发明实施例提供的一种高性能文件传输系统中高速传输UDT服务器的结构示意图。
如图3所示,高速传输UDT服务器300包括:UDT接口模块(UDT Interface)302、会话处理模块(Session Processing)304和磁盘管理器(Disk Manager)306;其中
UDT接口模块302,用于接收用户请求,以及与客户端交互并向客户端传输压缩后的数据。
会话处理模块304,建立用于监听的主线程,以及处理命令、读写文件和压缩数据的三个线程池;当有用户请求时,主线程将任务分给处理命令线程池中的一个空闲线程处理,空闲线程建立一个新的线程来处理数据连接以传输数据;当读写文件时,处理数据线程与读写文件线程、压缩数据线程之间执行同步的通信协作;非文件读写操作则由数据连接线程直接处理。
磁盘管理器306,用于压缩需要传输的数据;在压缩的时候提供用于存放压缩前数据和压缩后数据的两块工作空间,在解压的时候仅提供一块工作空间。
本发明提供的高性能文件传输系统的一个实施例中,采用LZO(Lempel Ziv Oberhumer)压缩算法对文本类型文件进行压缩。该算法对文本类文件具有不错的压缩比和压缩速率,再配合UDT传输协议的特点,可以达到提高传输效率的目的。
UDT协议主要用在小数量的bulk源共享富裕带宽的情况下,最典型的例子就是建立在光纤广域网上的网格计算。UDT的主要目标是效率、公平、稳定。单个的或少量的UDT流应该利用任何高速连接提供的可用带宽,即使带宽变化的很剧烈。同时,任何并发的流必须公平地共享带宽,不依赖于不同的带宽瓶劲、起始事件、RTT(双向传播时延,Round Trip Time)。稳定性需要包发送速率应该一直会聚可用带宽很快,并且必须避免拥塞碰撞。
本发明提供的高性能文件传输系统,采用UDT协议作为主要的网络协议,并对协议进行适当扩展,加入数据压缩的功能(数据压缩算法采用LZO,后续也可以针对基因测序等海量数据的特点再作专门优化);利用了UDT协议服务器的良好弹性,实现了高速率传输,并保证了传输的可靠性。
图4示出本发明提供的高性能文件传输系统的一个具体实施方式的结构示意图。
如图4所示,高性能文件传输系统400包括:高速传输TCP服务器和高速传输UDT服务器;其中
高速传输TCP服务器包括:TCP接口模块402、会话管理器404和磁盘管理器406;其中
TCP接口模块402,用于在套接字层,通过libevent事件触发网络库实现异步非阻塞网络模式,以达到高并发的要求;根据控制连接的句柄进行哈希,将数据分配给不同会话线程的任务队列。
会话管理器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初始化接受事件,激活接受事件,并加入libevent事件触发网络库中。
步骤506,当客户端发起连接请求时,高速传输TCP服务器自动调用接受客户端事件函数。
步骤508,接受客户端,生成客户端套接字socket,并将控制连接句柄与请求的操作类型封装成一个事件通知,加入任务队列。
图6示出本发明提供的高性能文件传输方法的另一个实施例的流程图。
如图6所示,高性能文件传输方法采用前述实施例中任意一种类的系统来实现;该方法包括高速传输TCP服务器从客户端读数据事件的流程;该流程600进一步包括:
步骤602,当接受客户端事件函数被调用时,高速传输TCP服务器接受客户端,并生成客户端套接字socket。
步骤604,为客户端套接字socket初始化读事件,激活读事件,并加入libevent事件触发网络库中。
步骤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管理器是TCP_interface内部的一个成员,主要功能是对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:33INFO-[run_finish_download][1179]172.30.0.29download/mnt/soft/soap/input/100000_reads_2.fq:108.108MB/s
2010-08-19 17:31:37INFO-[run_finish_download][1179]172.30.0.29 download/mnt/soft/soap/input/cattle_cuted.fa:112.674MB/s
2010-08-19 17:31:40INFO-[run_finish_download][1179]172.30.0.29download/mnt/soft/soap/input/100000_reads_2.fq:110.129MB/s
2010-08-19 17:31:44INFO-[run_finish_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、本发明提供的高性能文件传输系统及方法的一个实施例,通过libevent这一轻量级事件触发网络库,实现异步非阻塞网络模式,以达到高并发的要求;在多处理器环境中,多个线程(multi-thread)可以独立处理相应会话的数据,且每个会话的数据都固定在一个线程处理,这样在多个线程同时运行时,既能有效提高CPU的使用率,提高性能,又避免出现会话请求的时序问题。
4、本发明提供的高性能文件传输系统及方法的一个实施例,在FTP服务器的架构设计上选用全异步模式,同时通过使用内存缓存,减少磁盘磁针定位和读写的次数,提高磁盘I/O和网络I/O的利用率之比,从而将瓶颈转移到网络I/O。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。本发明中描述的功能模块以及功能模块的划分方式仅为说明本发明的思想,本领域技术人员根据本发明的教导以及实际应用的需要可以自由改变功能模块的划分方式及其模块构造以实现相同的功能;选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (14)
1.一种高性能文件传输系统,其特征在于,所述系统包括:
高速传输TCP服务器,用于在套接字层,通过libevent事件触发网络库实现异步非阻塞网络模式,以达到高并发的要求;当有客户端发出请求时,将请求封装成事件通知,然后根据客户端的控制连接句柄对会话线程总数直接取余进行哈希,将所述事件通知分配到不同会话线程的任务队列中;从任务队列中取出所述事件通知,然后调用有限状态机进行处理并获得相应的应答码,通过套接字层返回给客户端;当会话请求需要从磁盘读写数据时,则将相应信息加入磁盘处理线程的任务队列,磁盘处理线程则一次性在磁盘和缓存之间进行大块文件的读写,再由会话线程多次从缓存中调用数据,通过套接字层多次和客户端交互;
高速传输UDT服务器,建立用于监听的主线程,以及处理命令、读写文件和压缩数据的三个线程池;当有用户请求时,所述主线程将任务分给处理命令线程池中的一个空闲线程处理,所述空闲线程建立一个新的数据连接线程来处理数据连接以传输数据;当读写文件时,新的数据连接线程与读写文件线程、压缩数据线程之间执行同步的通信协作;非文件读写操作则由新的数据连接线程直接处理。
2.根据权利要求1所述的系统,其特征在于,所述高速传输TCP服务器进一步包括:
TCP接口模块,用于在套接字层,通过libevent事件触发网络库实现异步非阻塞网络模式,以达到高并发的要求;根据控制连接句柄进行哈希,将事件通知分配给不同会话线程的任务队列;
会话管理器,用于从任务队列中取出事件通知,然后调用有限状态机进行处理并获得相应的应答码,通过套接字层返回给客户端;由会话线程多次从缓存中调用数据,通过套接字层多次和客户端交互;
磁盘管理器,用于当会话请求需要从磁盘读写数据时,则将相应信息加入磁盘处理线程的任务队列,一次性在磁盘和缓存之间进行大块文件的读写。
3.根据权利要求1所述的系统,其特征在于,高速传输UDT服务器进一步包括:
UDT接口模块,用于接收用户请求,以及与客户端交互并向所述客户端传输压缩后的数据;
会话处理模块,建立用于监听的主线程,以及处理命令、读写文件和压缩数据的三个线程池;当有用户请求时,所述主线程将任务分给处理命令线程池中的一个空闲线程处理,所述空闲线程建立一个新的数据连接线程来处理数据连接以传输数据;当读写文件时,新的数据连接线程与读写文件线程、压缩数据线程之间执行同步的通信协作;非文件读写操作则由新的数据连接线程直接处理;
磁盘管理器,用于压缩需要传输的数据;在压缩的时候提供用于存放压缩前数据和压缩后数据的两块工作空间,在解压的时候仅提供一块工作空间。
4.根据权利要求1所述的系统,其特征在于,所述高速传输TCP服务器采用全异步架构模式。
5.根据权利要求1所述的系统,其特征在于,所述高速传输UDT服务器采用同步阻塞模式。
6.根据权利要求1或3所述的系统,其特征在于,采用LZO压缩算法对文本类型文件进行压缩。
7.根据权利要求1或2所述的系统,其特征在于,在所述套接字层,通过所述libevent事件触发网络库为控制连接和数据连接各设置1组事件,每组4个事件,用于实现与客户端的控制命令通信和数据传输。
8.根据权利要求7所述的系统,其特征在于,每组的4个事件包括:接受客户端事件、读数据事件、通知事件、写数据事件。
9.一种高性能文件传输方法,其特征在于,采用前述权利要求中任意一项所述的系统来实现;所述方法包括所述高速传输TCP服务器接受客户端事件的流程;
所述流程进一步包括:
初始化监听套接字socket,并设置为监听模式和非阻塞模式;
为所述监听套接字socket初始化接受事件,激活所述接受事件,并加入libevent事件触发网络库中;
当客户端发起连接请求时,所述高速传输TCP服务器自动调用接受客户端事件函数;
接受所述客户端,生成客户端套接字socket,并将控制连接句柄与请求的操作类型封装成一个事件通知,加入任务队列。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括所述高速传输TCP服务器从客户端读数据事件的流程;
所述流程进一步包括:
当接受客户端事件函数被调用时,所述高速传输TCP服务器接受所述客户端,并生成客户端套接字socket;
为所述客户端套接字socket初始化读事件,激活所述读事件,并加入libevent事件触发网络库中;
当所述客户端发送数据时,所述高速传输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服务器压缩数据的流程;
所述流程进一步包括:在压缩数据时记录并保存压缩前后数据的大小。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010551120 CN101982955B (zh) | 2010-11-19 | 2010-11-19 | 高性能文件传输系统及方法 |
PCT/CN2011/081949 WO2012065520A1 (zh) | 2010-11-19 | 2011-11-08 | 文件传输系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010551120 CN101982955B (zh) | 2010-11-19 | 2010-11-19 | 高性能文件传输系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101982955A CN101982955A (zh) | 2011-03-02 |
CN101982955B true CN101982955B (zh) | 2013-09-04 |
Family
ID=43619847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010551120 Active CN101982955B (zh) | 2010-11-19 | 2010-11-19 | 高性能文件传输系统及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101982955B (zh) |
WO (1) | WO2012065520A1 (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101982955B (zh) * | 2010-11-19 | 2013-09-04 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
CN103078883B (zh) * | 2011-10-26 | 2016-06-15 | 新奥特(北京)视频技术有限公司 | 基于ftp的异步式文件传输装置 |
CN103312625B (zh) * | 2012-03-09 | 2016-02-03 | 深圳市腾讯计算机系统有限公司 | 一种网络通信的方法和系统 |
CN103095723A (zh) * | 2013-02-04 | 2013-05-08 | 中国科学院信息工程研究所 | 一种网络安全监控方法及系统 |
CN103501245B (zh) * | 2013-09-26 | 2017-02-08 | 北京搜狐互联网信息服务有限公司 | 一种网络事件处理方法及装置 |
CN105491088A (zh) * | 2014-09-17 | 2016-04-13 | 中兴通讯股份有限公司 | 一种文件传输方法及装置 |
CN104243212A (zh) * | 2014-09-24 | 2014-12-24 | 杭州华三通信技术有限公司 | 会话维护方法及装置 |
CN104753956B (zh) * | 2015-04-13 | 2020-06-16 | 网神信息技术(北京)股份有限公司 | 一种数据处理方法和装置 |
CN105429718A (zh) * | 2015-10-28 | 2016-03-23 | 西安电子科技大学 | 基于多并发的无线频谱监测方法 |
CN105407150A (zh) * | 2015-10-31 | 2016-03-16 | 苏浩强 | 应用程序远程控制方法 |
CN107656819A (zh) * | 2016-07-25 | 2018-02-02 | 武汉票据交易中心有限公司 | 一种业务流程的处理方法及相关系统 |
CN106775447B (zh) * | 2016-11-14 | 2020-03-27 | 成都广达新网科技股份有限公司 | 一种基于异步非阻塞的磁盘文件读写速率控制方法 |
CN106850740B (zh) * | 2016-12-19 | 2019-07-23 | 中国科学院信息工程研究所 | 一种高吞吐数据流处理方法 |
CN107124461A (zh) * | 2017-05-04 | 2017-09-01 | 北京奇艺世纪科技有限公司 | 一种数据传输方法、装置及系统 |
CN107329838A (zh) * | 2017-05-23 | 2017-11-07 | 努比亚技术有限公司 | 一种业务交互方法、终端和计算机可读存储介质 |
CN107634984B (zh) * | 2017-08-07 | 2020-11-24 | 国网河南省电力公司 | 一种基于单向传输通道的文件同步方法 |
CN108702486B (zh) * | 2017-09-20 | 2020-08-04 | 深圳市海能通信股份有限公司 | 一种低延时音视频传输方法、装置及计算机可读存储介质 |
CN108055255A (zh) * | 2017-12-07 | 2018-05-18 | 华东师范大学 | 一种事件库、可扩展数据管理系统及其管理方法 |
CN108881378A (zh) * | 2018-05-02 | 2018-11-23 | 象翌微链科技发展有限公司 | 一种文件的传输方法、系统及设备 |
CN108647104B (zh) * | 2018-05-15 | 2022-05-31 | 北京五八信息技术有限公司 | 请求处理方法、服务器及计算机可读存储介质 |
CN108984285B (zh) * | 2018-06-28 | 2021-10-15 | 上海数据交易中心有限公司 | 一种数据碰撞流分析方法及装置、存储介质、终端 |
CN108848105A (zh) * | 2018-06-29 | 2018-11-20 | 首钢京唐钢铁联合有限责任公司 | 建立通讯连接的方法及装置 |
CN109274643A (zh) * | 2018-08-14 | 2019-01-25 | 国网甘肃省电力公司电力科学研究院 | 一种基于libevent架构的新能源厂站发电单元终端接入管理系统 |
CN109587235A (zh) * | 2018-11-30 | 2019-04-05 | 深圳市网心科技有限公司 | 一种基于网络库的数据访问方法、客户端、系统及介质 |
CN109918209B (zh) * | 2019-01-28 | 2021-02-02 | 深兰科技(上海)有限公司 | 一种线程间通信的方法和设备 |
CN109660562A (zh) * | 2019-01-30 | 2019-04-19 | 苏州德锐特成像技术有限公司 | 一种用于大数据同步的系统及客户端 |
CN111698275B (zh) * | 2019-03-15 | 2021-12-14 | 华为技术有限公司 | 数据处理方法、装置及设备 |
CN110519329B (zh) * | 2019-07-23 | 2022-06-07 | 苏州浪潮智能科技有限公司 | 一种并发处理samba协议请求的方法、设备及可读介质 |
CN110851246A (zh) * | 2019-09-30 | 2020-02-28 | 天阳宏业科技股份有限公司 | 一种批量任务处理方法、装置、系统及存储介质 |
CN111488324B (zh) * | 2020-04-14 | 2023-12-29 | 浪潮商用机器有限公司 | 一种基于消息中间件的分布式网络文件系统及其工作方法 |
CN112134852B (zh) * | 2020-08-31 | 2021-08-13 | 广州锦行网络科技有限公司 | 一种蜜罐系统攻击行为数据异步http发送方法及装置 |
CN111949607B (zh) * | 2020-09-03 | 2023-06-27 | 网易(杭州)网络有限公司 | 一种udt文件的监控方法、系统和装置 |
CN112069146A (zh) * | 2020-09-08 | 2020-12-11 | 北京同有飞骥科技股份有限公司 | 提高基于zfs文件系统异步远程复制的方法及系统 |
CN112732657A (zh) * | 2020-12-30 | 2021-04-30 | 广州金越软件技术有限公司 | 一种在ftp服务场景下高效读取大量小文件的方法 |
CN112995198B (zh) * | 2021-03-29 | 2023-04-28 | 中信银行股份有限公司 | 一种基于socket的短连接通信方法和装置 |
CN113992651B (zh) * | 2021-09-24 | 2024-05-14 | 深圳市有方科技股份有限公司 | 一种基于文件传输协议ftp的下载方法和相关产品 |
CN114338647A (zh) * | 2021-12-16 | 2022-04-12 | 中孚安全技术有限公司 | 一种基于国产操作系统的轻量级文件传输方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1519743A (zh) * | 2003-01-23 | 2004-08-11 | 英业达股份有限公司 | 利用广播机制均衡负载的文件预装系统及其方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090216880A1 (en) * | 2008-02-26 | 2009-08-27 | Viasat, Inc. | Methods and Systems for Dynamic Transport Selection Based on Last Mile Network Detection |
CN101894066B (zh) * | 2010-04-28 | 2012-11-28 | 北京同有飞骥科技股份有限公司 | 一种基于磁盘阵列虚拟化的网络存储管理软件测试方法 |
CN101982955B (zh) * | 2010-11-19 | 2013-09-04 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
-
2010
- 2010-11-19 CN CN 201010551120 patent/CN101982955B/zh active Active
-
2011
- 2011-11-08 WO PCT/CN2011/081949 patent/WO2012065520A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1519743A (zh) * | 2003-01-23 | 2004-08-11 | 英业达股份有限公司 | 利用广播机制均衡负载的文件预装系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2012065520A1 (zh) | 2012-05-24 |
CN101982955A (zh) | 2011-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101982955B (zh) | 高性能文件传输系统及方法 | |
US10204070B2 (en) | Method, device, system and storage medium for implementing packet transmission in PCIE switching network | |
CN102546612B (zh) | 用户态下基于rdma协议的远程过程调用实现方法 | |
CN103259683B (zh) | 基于HTML5的Web网管系统二级缓存推送方法 | |
CN107257329B (zh) | 一种数据分段卸载发送方法 | |
CN109547162B (zh) | 基于两套单向边界的数据通信方法 | |
CN103885840B (zh) | 一种基于AXI4总线的FCoE协议加速引擎IP核 | |
CN102055771B (zh) | 面向云服务的多并发业务流控制装置及控制方法 | |
WO2023216424A1 (zh) | 一种网络化加密传输的数据链业务处理系统及方法 | |
US10609125B2 (en) | Method and system for transmitting communication data | |
US20230080588A1 (en) | Mqtt protocol simulation method and simulation device | |
CN105187327A (zh) | 一种分布式消息队列中间件 | |
WO2021143135A1 (zh) | 一种基于fpga云平台的远端数据搬移装置和方法 | |
CN111459417B (zh) | 一种面向NVMeoF存储网络的无锁传输方法及系统 | |
US20210255905A1 (en) | Sync groupings | |
CN112953967A (zh) | 网络协议卸载装置和数据传输系统 | |
CN111966446A (zh) | 一种容器环境下rdma虚拟化方法 | |
CN104468509A (zh) | 手机网络游戏数据传输的方法、系统和手机用户端 | |
US9203895B1 (en) | System and method for lateral connection between interface devices with bypass of external network | |
US8135851B2 (en) | Object request broker for accelerating object-oriented communications and method | |
Arslan et al. | Nanotransport: A low-latency, programmable transport layer for nics | |
CN103338156A (zh) | 一种基于线程池的命名管道服务器并发通信方法 | |
Rosa et al. | DerechoDDS: Strongly consistent data distribution for mission-critical applications | |
Ren et al. | Design and testbed evaluation of RDMA-based middleware for high-performance data transfer applications | |
Ren et al. | Middleware support for rdma-based data transfer in cloud computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: High performance file transfer system and method Effective date of registration: 20200924 Granted publication date: 20130904 Pledgee: Qingdao West Coast Development (Group) Co., Ltd|Qingdao HAIC Group Financial Holding Co., Ltd Pledgor: BGI SHENZHEN Co.,Ltd. Registration number: Y2020440020012 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |