專利名稱:高性能文件傳輸系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)領(lǐng)域,尤其涉及一種高性能文件傳輸系統(tǒng)及方法。
背景技術(shù):
當(dāng)前,華大基因研究院擁有世界級(jí)的基因測(cè)序能力,每日生成的數(shù)據(jù)多達(dá)幾十 TB(1024GB);對(duì)數(shù)據(jù)的傳輸提出了較高的要求。此外,分布于中國(guó)各地和海外的分中心與總 部之間的數(shù)據(jù)同步,也對(duì)帶寬利用率提出了非常高的要求。雖然經(jīng)過(guò)30余年的發(fā)展,海底光纜技術(shù)已經(jīng)日益成熟,但是遠(yuǎn)程網(wǎng)絡(luò)傳輸所引入 的信號(hào)延遲仍然無(wú)法避免。特別是在遠(yuǎn)距離傳輸中(如光信號(hào)從北京傳往紐約至少會(huì)引入 60ms的延遲),傳統(tǒng)的TCP協(xié)議因信號(hào)延遲原因而嚴(yán)重惡化了傳輸技術(shù)的性能。而且隨著 帶寬時(shí)延產(chǎn)品(BDP,Band Delay Product)的增加,TCP協(xié)議開(kāi)始變得低效(這是由于AIMD 算法徹底減少了 TCP協(xié)議的擁塞窗口,但不能快速的恢復(fù)可用帶寬;理論上,流量分析表明 TCP在BDP增加到很高的時(shí)候比較容易遭受包損失攻擊),無(wú)法完成高效的傳輸任務(wù)。因此,傳統(tǒng)的基于TCP協(xié)議的文件傳輸系統(tǒng)及方法在速度和可靠性方面將無(wú)法滿 足日益增長(zhǎng)的大數(shù)據(jù)量、遠(yuǎn)距離、實(shí)時(shí)傳輸需要,成為制約網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)領(lǐng)域快速發(fā)展 的瓶頸。綜上所述,提供一種高性能文件傳輸系統(tǒng)及方法成為本領(lǐng)域亟待解決的技術(shù)問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明要解決的一個(gè)技術(shù)問(wèn)題是提供一種高性能文件傳輸系統(tǒng)及方法,通過(guò)構(gòu)造 具有相應(yīng)功能的TCP協(xié)議服務(wù)器和UDT協(xié)議服務(wù)器,充分利用了網(wǎng)絡(luò)硬件的性能,實(shí)現(xiàn)了大 數(shù)據(jù)量遠(yuǎn)距離傳輸?shù)牡脱訒r(shí)性能。本發(fā)明的一個(gè)方面提供了一種高性能文件傳輸系統(tǒng),本發(fā)明提供的高性能文 件傳輸系統(tǒng)的一個(gè)實(shí)施例中,該系統(tǒng)包括高速傳輸TCP服務(wù)器,用于在套接字層,通過(guò) Iibevent事件觸發(fā)網(wǎng)絡(luò)庫(kù)實(shí)現(xiàn)異步非阻塞網(wǎng)絡(luò)模式,以達(dá)到高并發(fā)的要求;當(dāng)有客戶端發(fā) 出請(qǐng)求時(shí),將請(qǐng)求封裝成事件通知,然后根據(jù)客戶端的控制連接句柄對(duì)會(huì)話線程總數(shù)直接 取余進(jìn)行哈希,將事件通知分配到不同會(huì)話線程的任務(wù)隊(duì)列中;從任務(wù)隊(duì)列中取出事件通 知,然后調(diào)用有限狀態(tài)機(jī)進(jìn)行處理并獲得相應(yīng)的應(yīng)答碼,通過(guò)套接字層返回給客戶端;當(dāng)會(huì) 話請(qǐng)求需要從磁盤讀寫數(shù)據(jù)時(shí),則將相應(yīng)信息封裝成通知事件后加入磁盤處理線程的任務(wù) 隊(duì)列,磁盤處理線程則一次性在磁盤和緩存之間進(jìn)行大塊文件的讀寫,再由會(huì)話線程多次 從緩存中調(diào)用數(shù)據(jù),通過(guò)套接字層多次和客戶端交互;高速傳輸U(kuò)DT服務(wù)器,建立用于監(jiān)聽(tīng) 的主線程,以及處理命令、讀寫文件和壓縮數(shù)據(jù)的三個(gè)線程池;當(dāng)有用戶請(qǐng)求時(shí),主線程將 任務(wù)分給處理命令線程池中的一個(gè)空閑線程處理,空閑線程建立一個(gè)新的線程來(lái)處理數(shù)據(jù) 連接以傳輸數(shù)據(jù);當(dāng)讀寫文件時(shí),處理數(shù)據(jù)線程與讀寫文件線程、壓縮數(shù)據(jù)線程之間執(zhí)行同 步的通信協(xié)作;非文件讀寫操作則由數(shù)據(jù)連接線程直接處理。
本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,高速傳輸TCP服務(wù)器進(jìn)一步 包括TCP接口模塊,用于在套接字層,通過(guò)Iibevent事件觸發(fā)網(wǎng)絡(luò)庫(kù)實(shí)現(xiàn)異步非阻塞網(wǎng)絡(luò) 模式,以達(dá)到高并發(fā)的要求;根據(jù)控制連接的句柄進(jìn)行哈希,將數(shù)據(jù)分配給不同會(huì)話線程的 任務(wù)隊(duì)列;會(huì)話管理器,用于從任務(wù)隊(duì)列中取出數(shù)據(jù),然后調(diào)用有限狀態(tài)機(jī)進(jìn)行處理并獲得 相應(yīng)的應(yīng)答碼,通過(guò)套接字層返回給客戶端;由會(huì)話線程多次從緩存中調(diào)用數(shù)據(jù),通過(guò)套接 字層多次和客戶端交互;磁盤管理器,用于當(dāng)會(huì)話請(qǐng)求需要從磁盤讀寫數(shù)據(jù)時(shí),則將相應(yīng)信 息加入磁盤處理線程的任務(wù)隊(duì)列,一次性在磁盤和緩存之間進(jìn)行大塊文件的讀寫。本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,高速傳輸U(kuò)DT服務(wù)器進(jìn)一 步包括UDT接口模塊,用于接收用戶請(qǐng)求,以及與客戶端交互并向客戶端傳輸壓縮后的數(shù) 據(jù);會(huì)話處理模塊,建立用于監(jiān)聽(tīng)的主線程,以及處理命令、讀寫文件和壓縮數(shù)據(jù)的三個(gè)線 程池;當(dāng)有用戶請(qǐng)求時(shí),主線程將任務(wù)分給處理命令線程池中的一個(gè)空閑線程處理,空閑線 程建立一個(gè)新的線程來(lái)處理數(shù)據(jù)連接以傳輸數(shù)據(jù);當(dāng)讀寫文件時(shí),數(shù)據(jù)線程與讀寫文件線 程、壓縮數(shù)據(jù)線程之間執(zhí)行同步的通信協(xié)作;非文件讀寫操作則由數(shù)據(jù)連接線程直接處理; 磁盤管理器,用于壓縮需要傳輸?shù)臄?shù)據(jù);在壓縮的時(shí)候提供用于存放壓縮前數(shù)據(jù)和壓縮后 數(shù)據(jù)的兩塊工作空間,在解壓的時(shí)候僅提供一塊工作空間。本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,高速傳輸TCP服務(wù)器采用全 異步架構(gòu)模式。本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,高速傳輸U(kuò)DT服務(wù)器采用同 步阻塞模式。本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,采用LZO壓縮算法對(duì)文本類 型文件進(jìn)行壓縮。本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,在套接字層,通過(guò)Iibevent 事件觸發(fā)網(wǎng)絡(luò)庫(kù)為控制連接和數(shù)據(jù)連接各設(shè)置了 1組事件,每組4個(gè)事件,用于實(shí)現(xiàn)與客戶 端的通信。本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,每組的4個(gè)事件包括接受 客戶端事件、讀數(shù)據(jù)事件、通知事件、寫數(shù)據(jù)事件。本發(fā)明的另一個(gè)方面提供了一種高性能文件傳輸方法,該方法采用前述任意一項(xiàng) 的系統(tǒng)來(lái)實(shí)現(xiàn);該方法包括高速傳輸TCP服務(wù)器接受客戶端事件的流程;流程進(jìn)一步包括 初始化監(jiān)聽(tīng)套接字socket,并設(shè)置監(jiān)聽(tīng)模式;為監(jiān)聽(tīng)套接字socket初始化接受事件,激活 接受事件,并加入Iibevent事件觸發(fā)網(wǎng)絡(luò)庫(kù)中;當(dāng)客戶端發(fā)起連接請(qǐng)求時(shí),高速傳輸TCP服 務(wù)器自動(dòng)調(diào)用接受客戶端事件函數(shù);接受客戶端,生成客戶端套接字socket,并將控制連 接句柄與請(qǐng)求的操作類型封裝成一個(gè)事件通知,加入任務(wù)隊(duì)列。本發(fā)明提供的高性能文件傳輸方法的一個(gè)實(shí)施例中,該方法還包括高速傳輸TCP 服務(wù)器從客戶端讀數(shù)據(jù)事件的流程;流程進(jìn)一步包括當(dāng)接受客戶端事件函數(shù)被調(diào)用時(shí), 高速傳輸TCP服務(wù)器接受客戶端,并生成客戶端套接字socket ;為客戶端套接字socket初 始化讀事件,激活讀事件,并加入Iibevent事件觸發(fā)網(wǎng)絡(luò)庫(kù)中;當(dāng)客戶端發(fā)送數(shù)據(jù)時(shí),高速 傳輸TCP服務(wù)器自動(dòng)調(diào)用讀事件函數(shù);從客戶端套接字socket里讀出數(shù)據(jù),封裝成事件通 知后加入任務(wù)隊(duì)列。本發(fā)明提供的高性能文件傳輸方法的一個(gè)實(shí)施例中,該方法還包括高速傳輸TCP服務(wù)器通知事件的流程;流程進(jìn)一步包括初始化時(shí),高速傳輸TCP服務(wù)器捆綁兩個(gè)套接 字socket 通知套接字socket和傳遞套接字socket ;為通知套接字socket初始化通知事 件,并激活通知事件;當(dāng)高速傳輸TCP服務(wù)器需要寫數(shù)據(jù)時(shí),通過(guò)TCP管理器發(fā)送封裝的事 件通知到傳遞套接字socket ;高速傳輸TCP服務(wù)器自動(dòng)調(diào)用通知事件函數(shù);從通知套接字 socket里讀出數(shù)據(jù),插入到寫事件能夠調(diào)用的任務(wù)隊(duì)列中,并激活寫事件。本發(fā)明提供的高性能文件傳輸方法的一個(gè)實(shí)施例中,該方法還包括高速傳輸TCP 服務(wù)器寫數(shù)據(jù)事件的流程;流程進(jìn)一步包括當(dāng)接受客戶端事件函數(shù)被調(diào)用時(shí),高速傳輸 TCP服務(wù)器接受客戶端,并生成客戶端套接字socket ;為客戶端套接字socket初始化寫事 件,但不激活讀事件;當(dāng)高速傳輸TCP服務(wù)器需要寫數(shù)據(jù)時(shí),通過(guò)TCP管理器發(fā)送數(shù)據(jù)到傳 遞套接字socket ;高速傳輸TCP服務(wù)器自動(dòng)調(diào)用通知事件函數(shù);從通知套接字socket里讀 出數(shù)據(jù),插入到寫事件能夠調(diào)用的任務(wù)隊(duì)列中,并激活寫事件;調(diào)用寫事件函數(shù),并將數(shù)據(jù) 寫到客戶端套接字socket ;檢驗(yàn)緩存內(nèi)的數(shù)據(jù)是否被寫完,如果沒(méi)有寫完,則再次激活寫 事件,調(diào)用寫事件函數(shù),并將數(shù)據(jù)寫到客戶端套接字socket。本發(fā)明提供的高性能文件傳輸方法的一個(gè)實(shí)施例中,該方法還包括高速傳輸U(kuò)DT 服務(wù)器傳輸文件的流程;流程進(jìn)一步包括高速傳輸U(kuò)DT服務(wù)器初始化線程池,建立套接字 socket并偵聽(tīng);當(dāng)客戶端發(fā)起連接請(qǐng)求時(shí),分配任務(wù)給空閑命令線程;客戶端連接套接字 socket后發(fā)送命令,指示線程解析命令并通知數(shù)據(jù)線程;執(zhí)行文件讀寫和壓縮數(shù)據(jù)處理; 數(shù)據(jù)線程與客戶端進(jìn)行數(shù)據(jù)通信。本發(fā)明提供的高性能文件傳輸方法的一個(gè)實(shí)施例中,該方法還包括高速傳輸U(kuò)DT 服務(wù)器壓縮數(shù)據(jù)的流程;流程進(jìn)一步包括在壓縮數(shù)據(jù)時(shí)記錄并保存壓縮前后數(shù)據(jù)的大本發(fā)明提供的高性能文件傳輸系統(tǒng)及方法,采用UDT協(xié)議作為主要的網(wǎng)絡(luò)協(xié)議, 在UDT協(xié)議無(wú)法工作的網(wǎng)絡(luò)條件下,使用TCP協(xié)議作為底層傳輸協(xié)議,參考RFC 959,實(shí)現(xiàn)一 個(gè)FTP協(xié)議的兼容版本,作為數(shù)據(jù)傳輸?shù)膽?yīng)用層協(xié)議;此外,本發(fā)明對(duì)協(xié)議進(jìn)行適當(dāng)擴(kuò)展, 并加入數(shù)據(jù)壓縮的功能,從而實(shí)現(xiàn)了大規(guī)模數(shù)據(jù)遠(yuǎn)距離傳輸?shù)牡脱舆t性和可靠性。
圖1示出本發(fā)明實(shí)施例提供的一種高性能文件傳輸系統(tǒng)的結(jié)構(gòu)示意圖;圖2示出本發(fā)明實(shí)施例提供的一種高性能文件傳輸系統(tǒng)中高速傳輸TCP服務(wù)器的 結(jié)構(gòu)示意圖;圖3示出本發(fā)明實(shí)施例提供的一種高性能文件傳輸系統(tǒng)中高速傳輸U(kuò)DT服務(wù)器的 結(jié)構(gòu)示意圖;圖4示出本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)具體實(shí)施方式
的結(jié)構(gòu)示意圖;圖5示出本發(fā)明實(shí)施例提供的一種高性能文件傳輸方法的流程圖;圖6示出本發(fā)明提供的高性能文件傳輸方法的另一個(gè)實(shí)施例的流程圖;圖7示出本發(fā)明提供的高性能文件傳輸方法的另一個(gè)實(shí)施例的流程圖;圖8示出本發(fā)明提供的高性能文件傳輸方法的另一個(gè)實(shí)施例的流程圖;圖9示出本發(fā)明提供的高性能文件傳輸方法的另一個(gè)實(shí)施例的流程圖;圖10示出本發(fā)明提供的高性能文件傳輸方法的另一個(gè)實(shí)施例的流程圖。
具體實(shí)施例方式下面參照附圖對(duì)本發(fā)明進(jìn)行更全面的描述,其中說(shuō)明本發(fā)明的示例性實(shí)施例。圖1示出本發(fā)明實(shí)施例提供的一種高性能文件傳輸系統(tǒng)的結(jié)構(gòu)示意圖。如圖1所示,高性能文件傳輸系統(tǒng)100包括高速傳輸TCP服務(wù)器102和高速傳輸 UDT服務(wù)器104;其中高速傳輸TCP服務(wù)器102,用于在套接字層,通過(guò)1 ibevent事件觸發(fā)網(wǎng)絡(luò)庫(kù)實(shí)現(xiàn)異 步非阻塞網(wǎng)絡(luò)模式,以達(dá)到高并發(fā)的要求;當(dāng)有客戶端發(fā)出請(qǐng)求時(shí),將請(qǐng)求封裝成一個(gè)事件 通知(該事件通知可以包括控制連接句柄、數(shù)據(jù)連接句柄、請(qǐng)求的操作類型、數(shù)據(jù)緩存指 針和數(shù)據(jù)長(zhǎng)度等),然后根據(jù)客戶端的控制連接句柄(一個(gè)int型變量)對(duì)會(huì)話線程總數(shù)直 接取余進(jìn)行哈希,將事件通知分配給不同會(huì)話線程的任務(wù)隊(duì)列中;從任務(wù)隊(duì)列中取出數(shù)據(jù), 然后調(diào)用有限狀態(tài)機(jī)(Finite State Machine)進(jìn)行處理并獲得相應(yīng)的應(yīng)答碼,通過(guò)套接字 層返回給客戶端;當(dāng)會(huì)話請(qǐng)求需要從磁盤讀寫數(shù)據(jù)時(shí),則將相應(yīng)信息加入磁盤處理線程的 任務(wù)隊(duì)列,磁盤處理線程則一次性在磁盤和緩存之間進(jìn)行大塊文件的讀寫,再由會(huì)話線程 多次從緩存中調(diào)用數(shù)據(jù),通過(guò)套接字層多次和客戶端交互。傳統(tǒng)FTP服務(wù)器I/O主要由外部通訊I/O和內(nèi)部I/O組成,通常不會(huì)遇到外部I/ 0瓶頸問(wèn)題,因?yàn)楹芏鄷r(shí)候服務(wù)器內(nèi)部I/O瓶頸是掣肘的關(guān)鍵。針對(duì)此瓶頸,我們?cè)贔TP服 務(wù)器的架構(gòu)設(shè)計(jì)上選用全異步模式,同時(shí),通過(guò)使用內(nèi)存緩存,減少磁盤磁針定位和讀寫的 次數(shù),提高磁盤I/O和網(wǎng)絡(luò)I/O的利用率之比,從而將瓶頸轉(zhuǎn)移到網(wǎng)絡(luò)I/O。高速傳輸U(kuò)DT服務(wù)器104,建立用于監(jiān)聽(tīng)的主線程,以及處理命令、讀寫文件和壓 縮數(shù)據(jù)的三個(gè)線程池;當(dāng)有用戶請(qǐng)求時(shí),主線程將任務(wù)分給處理命令線程池中的一個(gè)空閑 線程處理,空閑線程建立一個(gè)新的線程來(lái)處理數(shù)據(jù)連接以傳輸數(shù)據(jù)(空閑線程會(huì)建立一個(gè) 新的線程來(lái)處理數(shù)據(jù)連接,實(shí)際上數(shù)據(jù)線程是操縱一個(gè)UDT套接字socket來(lái)傳輸數(shù)據(jù)); 當(dāng)讀寫文件時(shí),數(shù)據(jù)線程與讀寫文件線程、壓縮數(shù)據(jù)線程之間執(zhí)行同步的通信協(xié)作(三線 程之間可設(shè)置兩個(gè)緩沖區(qū));非文件讀寫操作則由數(shù)據(jù)連接線程直接處理。本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,高速傳輸TCP服務(wù)器采用全 異步架構(gòu)模式(asynchronous),這種模式可以連續(xù)發(fā)起多個(gè)非阻塞I/O操作,當(dāng)操作完成 時(shí)通過(guò)消息或線程回調(diào)函數(shù)通知應(yīng)用程序。這是在高性能I/O應(yīng)用場(chǎng)合最廣泛的一種模 型,實(shí)際開(kāi)發(fā)中只需一個(gè)或幾個(gè)(根據(jù)CPU數(shù)量自定義)線程來(lái)對(duì)多個(gè)I/O操作控制。高 速傳輸U(kuò)DT服務(wù)器采用同步阻塞模式。同步阻塞是指函數(shù)在沒(méi)有執(zhí)行完或者接收完數(shù)據(jù)的 情況下不返回,線程被掛起。本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,在套接字層,通過(guò)Iibevent 事件觸發(fā)網(wǎng)絡(luò)庫(kù)為控制連接和數(shù)據(jù)連接各設(shè)置了 1組事件,每組4個(gè)事件,用于實(shí)現(xiàn)與客戶 端的控制命令通信和數(shù)據(jù)傳輸。其中,每組的4個(gè)事件包括接受客戶端事件、讀數(shù)據(jù)事件、 通知事件、寫數(shù)據(jù)事件。本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,采用LZO壓縮算法對(duì)文本類 型文件進(jìn)行壓縮。通過(guò)壓縮需要傳輸?shù)臄?shù)據(jù),從而加速傳輸。此外,在壓縮的時(shí)候需要提供 用于存放壓縮前數(shù)據(jù)和壓縮后數(shù)據(jù)的兩塊工作空間(后者較大,以防止遇到數(shù)據(jù)無(wú)法壓縮 的情況),而解壓的時(shí)候僅需要一塊工作空間即可以完成解壓。
本發(fā)明提供的高性能文件傳輸系統(tǒng),通過(guò)Iibevent這一輕量級(jí)事件觸發(fā)網(wǎng) 絡(luò)庫(kù),實(shí)現(xiàn)異步非阻塞網(wǎng)絡(luò)模式,以達(dá)到高并發(fā)的要求;在多處理器環(huán)境中,多個(gè)線程 (multi-thread)可以獨(dú)立處理相應(yīng)會(huì)話的數(shù)據(jù),且每個(gè)會(huì)話的數(shù)據(jù)都固定在一個(gè)線程處 理,這樣在多個(gè)線程同時(shí)運(yùn)行時(shí),既能有效提高CPU的使用率,提高性能,又避免出現(xiàn)會(huì)話 請(qǐng)求的時(shí)序問(wèn)題。圖2示出本發(fā)明實(shí)施例提供的一種高性能文件傳輸系統(tǒng)中高速傳輸TCP服務(wù)器的 結(jié)構(gòu)示意圖。如圖2所示,高速傳輸TCP服務(wù)器200包括TCP接口模塊(TCP Interface) 202、 會(huì)話管理器(Session Manager) 204和磁盤管理器(Disk Manager) 206 ;其中TCP接口模塊202,用于在套接字層,通過(guò)Iibevent事件觸發(fā)網(wǎng)絡(luò)庫(kù)實(shí)現(xiàn)異步非 阻塞網(wǎng)絡(luò)模式,以達(dá)到高并發(fā)的要求;當(dāng)有客戶端發(fā)出請(qǐng)求時(shí),將請(qǐng)求封裝成一個(gè)事件通知 (該事件通知可以包括控制連接句柄、數(shù)據(jù)連接句柄、請(qǐng)求的操作類型、數(shù)據(jù)緩存指針和 數(shù)據(jù)長(zhǎng)度等),然后根據(jù)客戶端的控制連接句柄(一個(gè)int型變量)對(duì)會(huì)話線程總數(shù)直接取 余進(jìn)行哈希,將事件通知分配給不同會(huì)話線程的任務(wù)隊(duì)列中。會(huì)話管理器204,用于從任務(wù)隊(duì)列中取出事件通知,然后調(diào)用有限狀態(tài)機(jī)進(jìn)行處理 并獲得相應(yīng)的應(yīng)答碼,通過(guò)套接字層返回給客戶端;由會(huì)話線程多次從緩存中調(diào)用數(shù)據(jù),通 過(guò)套接字層多次和客戶端交互。磁盤管理器206,用于當(dāng)會(huì)話請(qǐng)求需要從磁盤讀寫數(shù)據(jù)時(shí),則將相應(yīng)信息封裝成通 知事件后加入磁盤處理線程的任務(wù)隊(duì)列,一次性在磁盤和緩存之間進(jìn)行大塊文件的讀寫。本發(fā)明提供的高性能文件傳輸系統(tǒng),通過(guò)Iibevent這一輕量級(jí)事件觸發(fā)網(wǎng)絡(luò)庫(kù), 實(shí)現(xiàn)高并發(fā)的要求;在多處理器環(huán)境中,在多個(gè)線程同時(shí)運(yùn)行時(shí),既能有效提高CPU的使用 率,提高性能,又避免出現(xiàn)會(huì)話請(qǐng)求的時(shí)序問(wèn)題。進(jìn)一步的,當(dāng)會(huì)話請(qǐng)求需要從磁盤讀寫數(shù) 據(jù)時(shí),則將相應(yīng)信息加入磁盤處理線程的任務(wù)隊(duì)列,磁盤處理線程則根據(jù)磁盤容量大、讀寫 速度慢的特點(diǎn),一次性在磁盤和緩存之間進(jìn)行大塊文件的讀寫,再由會(huì)話線程多次從緩存 中調(diào)用數(shù)據(jù),通過(guò)套接字層多次和客戶端交互;從而減少磁盤磁針定位和讀寫的次數(shù),提高 磁盤I/O和網(wǎng)絡(luò)I/O的利用率之比。圖3示出本發(fā)明實(shí)施例提供的一種高性能文件傳輸系統(tǒng)中高速傳輸U(kuò)DT服務(wù)器的 結(jié)構(gòu)示意圖。如圖3所示,高速傳輸U(kuò)DT服務(wù)器300包括UDT接口模塊(UDT Interface) 302、 會(huì)話處理模塊(Session Processing) 304和磁盤管理器(Disk Manager) 306 ;其中UDT接口模塊302,用于接收用戶請(qǐng)求,以及與客戶端交互并向客戶端傳輸壓縮后 的數(shù)據(jù)。會(huì)話處理模塊304,建立用于監(jiān)聽(tīng)的主線程,以及處理命令、讀寫文件和壓縮數(shù)據(jù) 的三個(gè)線程池;當(dāng)有用戶請(qǐng)求時(shí),主線程將任務(wù)分給處理命令線程池中的一個(gè)空閑線程處 理,空閑線程建立一個(gè)新的線程來(lái)處理數(shù)據(jù)連接以傳輸數(shù)據(jù);當(dāng)讀寫文件時(shí),處理數(shù)據(jù)線程 與讀寫文件線程、壓縮數(shù)據(jù)線程之間執(zhí)行同步的通信協(xié)作;非文件讀寫操作則由數(shù)據(jù)連接 線程直接處理。磁盤管理器306,用于壓縮需要傳輸?shù)臄?shù)據(jù);在壓縮的時(shí)候提供用于存放壓縮前 數(shù)據(jù)和壓縮后數(shù)據(jù)的兩塊工作空間,在解壓的時(shí)候僅提供一塊工作空間。
本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)實(shí)施例中,采用LZ0(Lempel Ziv Oberhumer)壓縮算法對(duì)文本類型文件進(jìn)行壓縮。該算法對(duì)文本類文件具有不錯(cuò)的壓縮比和 壓縮速率,再配合UDT傳輸協(xié)議的特點(diǎn),可以達(dá)到提高傳輸效率的目的。UDT協(xié)議主要用在小數(shù)量的bulk源共享富裕帶寬的情況下,最典型的例子就是建 立在光纖廣域網(wǎng)上的網(wǎng)格計(jì)算。UDT的主要目標(biāo)是效率、公平、穩(wěn)定。單個(gè)的或少量的UDT 流應(yīng)該利用任何高速連接提供的可用帶寬,即使帶寬變化的很劇烈。同時(shí),任何并發(fā)的流必 須公平地共享帶寬,不依賴于不同的帶寬瓶勁、起始事件、RTT(雙向傳播時(shí)延,Round Trip Time)。穩(wěn)定性需要包發(fā)送速率應(yīng)該一直會(huì)聚可用帶寬很快,并且必須避免擁塞碰撞。本發(fā)明提供的高性能文件傳輸系統(tǒng),采用UDT協(xié)議作為主要的網(wǎng)絡(luò)協(xié)議,并對(duì)協(xié) 議進(jìn)行適當(dāng)擴(kuò)展,加入數(shù)據(jù)壓縮的功能(數(shù)據(jù)壓縮算法采用LZ0,后續(xù)也可以針對(duì)基因測(cè)序 等海量數(shù)據(jù)的特點(diǎn)再作專門優(yōu)化);利用了 UDT協(xié)議服務(wù)器的良好彈性,實(shí)現(xiàn)了高速率傳 輸,并保證了傳輸?shù)目煽啃?。圖4示出本發(fā)明提供的高性能文件傳輸系統(tǒng)的一個(gè)具體實(shí)施方式
的結(jié)構(gòu)示意圖。如圖4所示,高性能文件傳輸系統(tǒng)400包括高速傳輸TCP服務(wù)器和高速傳輸U(kuò)DT 服務(wù)器;其中高速傳輸TCP服務(wù)器包括TCP接口模塊402、會(huì)話管理器404和磁盤管理器406 ; 其中TCP接口模塊402,用于在套接字層,通過(guò)Iibevent事件觸發(fā)網(wǎng)絡(luò)庫(kù)實(shí)現(xiàn)異步非阻 塞網(wǎng)絡(luò)模式,以達(dá)到高并發(fā)的要求;根據(jù)控制連接的句柄進(jìn)行哈希,將數(shù)據(jù)分配給不同會(huì)話 線程的任務(wù)隊(duì)列。會(huì)話管理器404,用于從任務(wù)隊(duì)列中取出數(shù)據(jù),然后調(diào)用有限狀態(tài)機(jī)進(jìn)行處理并獲 得相應(yīng)的應(yīng)答碼,通過(guò)套接字層返回給客戶端;由會(huì)話線程多次從緩存中調(diào)用數(shù)據(jù),通過(guò)套 接字層多次和客戶端交互。磁盤管理器406,用于當(dāng)會(huì)話請(qǐng)求需要從磁盤讀寫數(shù)據(jù)時(shí),則將相應(yīng)信息加入磁盤 處理線程的任務(wù)隊(duì)列,一次性在磁盤和緩存之間進(jìn)行大塊文件的讀寫。高速傳輸U(kuò)DT服務(wù)器包括UDT接口模塊408、會(huì)話處理模塊410和磁盤管理器 412 ;其中UDT接口模塊408,用于接收用戶請(qǐng)求,以及與客戶端交互并向客戶端傳輸壓縮后 的數(shù)據(jù)。會(huì)話處理模塊410,建立用于監(jiān)聽(tīng)的主線程,以及處理命令、讀寫文件和壓縮數(shù)據(jù) 的三個(gè)線程池;當(dāng)有用戶請(qǐng)求時(shí),主線程將任務(wù)分給處理命令線程池中的一個(gè)空閑線程處 理,空閑線程建立一個(gè)新的線程來(lái)處理數(shù)據(jù)連接以傳輸數(shù)據(jù);當(dāng)讀寫文件時(shí),處理數(shù)據(jù)線程 與讀寫文件線程、壓縮數(shù)據(jù)線程之間執(zhí)行同步的通信協(xié)作;非文件讀寫操作則由數(shù)據(jù)連接 線程直接處理。磁盤管理器412,用于壓縮需要傳輸?shù)臄?shù)據(jù);在壓縮的時(shí)候提供用于存放壓縮前 數(shù)據(jù)和壓縮后數(shù)據(jù)的兩塊工作空間,在解壓的時(shí)候僅提供一塊工作空間。本發(fā)明提供的高性能文件傳輸系統(tǒng),在FTP服務(wù)器的架構(gòu)設(shè)計(jì)上選用全異步模 式,同時(shí)通過(guò)使用內(nèi)存緩存,減少磁盤磁針定位和讀寫的次數(shù),提高磁盤I/O和網(wǎng)絡(luò)I/O的 利用率之比,從而將瓶頸轉(zhuǎn)移到網(wǎng)絡(luò)I/O。此外,利用了 UDT協(xié)議服務(wù)器的良好彈性,實(shí)現(xiàn)了高速率傳輸,并保證了傳輸?shù)目煽啃?。圖5示出本發(fā)明實(shí)施例提供的一種高性能文件傳輸方法的流程圖。如圖5所示,高性能文件傳輸方法采用前述實(shí)施例中任意一種類的系統(tǒng)來(lái)實(shí)現(xiàn); 該方法包括高速傳輸TCP服務(wù)器接受客戶端事件的流程;該流程500進(jìn)一步包括步驟502,初始化監(jiān)聽(tīng)套接字socket (如設(shè)置運(yùn)輸層協(xié)議、捆綁端口),并設(shè)置監(jiān)聽(tīng) 模式。步驟504,為監(jiān)聽(tīng)套接字socket初始化接受事件,激活接受事件,并加入Iibevent 事件觸發(fā)網(wǎng)絡(luò)庫(kù)中。步驟506,當(dāng)客戶端發(fā)起連接請(qǐng)求時(shí),高速傳輸TCP服務(wù)器自動(dòng)調(diào)用接受客戶端事 件函數(shù)。步驟508,接受客戶端,生成客戶端套接字socket,并將控制連接句柄與請(qǐng)求的操 作類型封裝成一個(gè)事件通知,加入任務(wù)隊(duì)列。圖6示出本發(fā)明提供的高性能文件傳輸方法的另一個(gè)實(shí)施例的流程圖。如圖6所示,高性能文件傳輸方法采用前述實(shí)施例中任意一種類的系統(tǒng)來(lái)實(shí)現(xiàn); 該方法包括高速傳輸TCP服務(wù)器從客戶端讀數(shù)據(jù)事件的流程;該流程600進(jìn)一步包括步驟602,當(dāng)接受客戶端事件函數(shù)被調(diào)用時(shí),高速傳輸TCP服務(wù)器接受客戶端,并 生成客戶端套接字socket。步驟604,為客戶端套接字socket初始化讀事件,激活讀事件,并加入Iibevent事 件觸發(fā)網(wǎng)絡(luò)庫(kù)中。步驟606,當(dāng)客戶端發(fā)送數(shù)據(jù)時(shí),高速傳輸TCP服務(wù)器自動(dòng)調(diào)用讀事件函數(shù)。步驟608,從客戶端套接字socket里讀出數(shù)據(jù)(如果是控制連接,該數(shù)據(jù)為一條以 “/r/n”結(jié)尾的字符串,如果是數(shù)據(jù)連接,則為上傳的文件數(shù)據(jù)),封裝成事件通知(如設(shè)置 控制連接句柄及數(shù)據(jù)連接句柄、補(bǔ)充請(qǐng)求的操作類型、設(shè)置數(shù)據(jù)緩存指針和數(shù)據(jù)長(zhǎng)度)后 加入任務(wù)隊(duì)列。圖7示出本發(fā)明提供的高性能文件傳輸方法的另一個(gè)實(shí)施例的流程圖。如圖7所示,高性能文件傳輸方法采用前述實(shí)施例中任意一種類的系統(tǒng)來(lái)實(shí)現(xiàn); 該方法包括高速傳輸TCP服務(wù)器通知事件的流程;該流程700進(jìn)一步包括步驟702,初始化時(shí),高速傳輸TCP服務(wù)器捆綁兩個(gè)套接字socket 通知套接字 socket 和傳遞套接字 socket,存在 TCP_interface 內(nèi)的 TCP_manager (TCP 管理器)。步驟704,為通知套接字socket初始化通知事件,并激活通知事件。步驟706,當(dāng)高速傳輸TCP服務(wù)器需要寫數(shù)據(jù)時(shí),通過(guò)TCP管理器發(fā)送封裝的事件 通知到傳遞套接字socket。具體來(lái)說(shuō),TCP管理器是TCPjnterface內(nèi)部的一個(gè)成員,主要 功能是對(duì)TCP的socket進(jìn)行管理。由于在初始化時(shí),所述高速傳輸TCP服務(wù)器捆綁兩個(gè)套 接字socket 通知套接字socket和傳遞套接字socket ;所以,執(zhí)行通知事件需要通過(guò)TCP 管理器調(diào)用。步驟708,高速傳輸TCP服務(wù)器自動(dòng)調(diào)用通知事件函數(shù)。步驟710,從通知套接字socket里讀出數(shù)據(jù),插入到寫事件能夠調(diào)用的任務(wù)隊(duì)列 中,并激活寫事件。圖8示出本發(fā)明提供的高性能文件傳輸方法的另一個(gè)實(shí)施例的流程圖。
如圖8所示,高性能文件傳輸方法采用前述實(shí)施例中任意一種類的系統(tǒng)來(lái)實(shí)現(xiàn); 該方法包括高速傳輸TCP服務(wù)器寫數(shù)據(jù)事件的流程;該流程800進(jìn)一步包括步驟802,當(dāng)接受客戶端事件函數(shù)被調(diào)用時(shí),高速傳輸TCP服務(wù)器接受客戶端,并 生成客戶端套接字socket ;步驟804,為客戶端套接字socket初始化寫事件,但不激活讀事件;步驟806,當(dāng)高速傳輸TCP服務(wù)器需要寫數(shù)據(jù)時(shí),通過(guò)TCP管理器發(fā)送數(shù)據(jù)到傳遞 套接字socket ;步驟808,高速傳輸TCP服務(wù)器自動(dòng)調(diào)用通知事件函數(shù);步驟810,從通知套接字socket里讀出數(shù)據(jù),插入到寫事件能夠調(diào)用的任務(wù)隊(duì)列 中,并激活寫事件;步驟812,調(diào)用寫事件函數(shù),并將數(shù)據(jù)寫到客戶端套接字socket ;步驟814,檢驗(yàn)緩存內(nèi)的數(shù)據(jù)是否被寫完。如果沒(méi)有寫完,則跳轉(zhuǎn)到步驟810,再次 激活寫事件,調(diào)用寫事件函數(shù),并將數(shù)據(jù)寫到客戶端套接字socket。圖9示出本發(fā)明提供的高性能文件傳輸方法的另一個(gè)實(shí)施例的流程圖。如圖9所示,高性能文件傳輸方法采用前述實(shí)施例中任意一種類的系統(tǒng)來(lái)實(shí)現(xiàn); 該方法包括高速傳輸U(kuò)DT服務(wù)器傳輸文件的流程;該流程900進(jìn)一步包括步驟902,高速傳輸U(kuò)DT服務(wù)器初始化線程池,建立套接字socket并偵聽(tīng)。步驟904,當(dāng)客戶端發(fā)起連接請(qǐng)求時(shí),分配任務(wù)給空閑命令線程。步驟906,客戶端連接套接字socket后發(fā)送命令,指示線程解析命令并通知數(shù)據(jù) 線程。步驟908,執(zhí)行文件讀寫和壓縮數(shù)據(jù)處理。步驟910,數(shù)據(jù)線程與客戶端進(jìn)行數(shù)據(jù)通信。圖10示出本發(fā)明提供的高性能文件傳輸方法的另一個(gè)實(shí)施例的流程圖。如圖10所示,高性能文件傳輸方法采用前述實(shí)施例中任意一種類的系統(tǒng)來(lái)實(shí)現(xiàn); 該方法包括高速傳輸U(kuò)DT服務(wù)器壓縮數(shù)據(jù)的流程;該流程1000進(jìn)一步包括在壓縮數(shù)據(jù) 時(shí),記錄并保存壓縮前后數(shù)據(jù)的大小。隨后在解壓縮過(guò)程中,首先提取壓縮前后的數(shù)據(jù)大小 的信息;讀取壓縮后相應(yīng)大小的數(shù)據(jù),執(zhí)行解壓縮,在寫回解壓縮后的數(shù)據(jù);從而既保證了 傳輸速率,同時(shí)也保證了解壓縮后的數(shù)據(jù)可靠性。接下來(lái)簡(jiǎn)要介紹應(yīng)用本發(fā)明提供的高性能文件傳輸系統(tǒng)及方法的一個(gè)具體實(shí)施 例。目前,高性能文件傳輸系統(tǒng)(Hyper Transfer)在Panda項(xiàng)目中承擔(dān)數(shù)據(jù)傳輸?shù)娜?務(wù),傳輸文件的大小從幾KB到十幾GB不等,十幾個(gè)上傳下載任務(wù)同時(shí)并發(fā)。以下是該項(xiàng)目 運(yùn)行期間的服務(wù)器日志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該環(huán)境的服務(wù)器與客戶端之間使用千兆帶寬,傳輸上限為128MB/S,在數(shù)據(jù)傳輸期 間,平均傳輸速率達(dá)到110. 80MB/S,平均帶寬利用率達(dá)到86. 56%。本發(fā)明提供的高性能文 件傳輸系統(tǒng)及方法,服務(wù)器的平均帶寬使用率超過(guò)80%,數(shù)據(jù)傳輸準(zhǔn)確無(wú)誤。參考前述本發(fā)明示例性的描述,本領(lǐng)域技術(shù)人員可以清楚的知曉本發(fā)明具有以下 優(yōu)點(diǎn)1、本發(fā)明提供的高性能文件傳輸系統(tǒng)及方法的一個(gè)實(shí)施例,通過(guò)構(gòu)造具有相應(yīng)功 能的TCP協(xié)議服務(wù)器和UDT協(xié)議服務(wù)器,充分利用了網(wǎng)絡(luò)硬件的性能,實(shí)現(xiàn)了大數(shù)據(jù)量遠(yuǎn)距 離傳輸?shù)牡脱訒r(shí)性能。2、本發(fā)明提供的高性能文件傳輸系統(tǒng)及方法的一個(gè)實(shí)施例,采用UDT協(xié)議作為主 要的網(wǎng)絡(luò)協(xié)議,在UDT協(xié)議無(wú)法工作的網(wǎng)絡(luò)條件下,使用TCP協(xié)議作為底層傳輸協(xié)議,參考 RFC 959,實(shí)現(xiàn)一個(gè)FTP協(xié)議的兼容版本,作為數(shù)據(jù)傳輸?shù)膽?yīng)用層協(xié)議;此外,本發(fā)明對(duì)協(xié)議 進(jìn)行適當(dāng)擴(kuò)展,并加入數(shù)據(jù)壓縮的功能,從而實(shí)現(xiàn)了大規(guī)模數(shù)據(jù)遠(yuǎn)距離傳輸?shù)牡脱舆t性和
可靠性。3、本發(fā)明提供的高性能文件傳輸系統(tǒng)及方法的一個(gè)實(shí)施例,通過(guò)Iibevent這一 輕量級(jí)事件觸發(fā)網(wǎng)絡(luò)庫(kù),實(shí)現(xiàn)異步非阻塞網(wǎng)絡(luò)模式,以達(dá)到高并發(fā)的要求;在多處理器環(huán)境 中,多個(gè)線程(multi-thread)可以獨(dú)立處理相應(yīng)會(huì)話的數(shù)據(jù),且每個(gè)會(huì)話的數(shù)據(jù)都固定在 一個(gè)線程處理,這樣在多個(gè)線程同時(shí)運(yùn)行時(shí),既能有效提高CPU的使用率,提高性能,又避 免出現(xiàn)會(huì)話請(qǐng)求的時(shí)序問(wèn)題。4、本發(fā)明提供的高性能文件傳輸系統(tǒng)及方法的一個(gè)實(shí)施例,在FTP服務(wù)器的架構(gòu) 設(shè)計(jì)上選用全異步模式,同時(shí)通過(guò)使用內(nèi)存緩存,減少磁盤磁針定位和讀寫的次數(shù),提高磁 盤I/O和網(wǎng)絡(luò)I/O的利用率之比,從而將瓶頸轉(zhuǎn)移到網(wǎng)絡(luò)I/O。本發(fā)明的描述是為了示例和描述起見(jiàn)而給出的,而并不是無(wú)遺漏的或者將本發(fā)明 限于所公開(kāi)的形式。很多修改和變化對(duì)于本領(lǐng)域的普通技術(shù)人員而言是顯然的。本發(fā)明中 描述的功能模塊以及功能模塊的劃分方式僅為說(shuō)明本發(fā)明的思想,本領(lǐng)域技術(shù)人員根據(jù)本 發(fā)明的教導(dǎo)以及實(shí)際應(yīng)用的需要可以自由改變功能模塊的劃分方式及其模塊構(gòu)造以實(shí)現(xiàn) 相同的功能;選擇和描述實(shí)施例是為了更好說(shuō)明本發(fā)明的原理和實(shí)際應(yīng)用,并且使本領(lǐng)域 的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計(jì)適于特定用途的帶有各種修改的各種實(shí)施例。
權(quán)利要求
一種高性能文件傳輸系統(tǒng),其特征在于,所述系統(tǒng)包括高速傳輸TCP服務(wù)器,用于在套接字層,通過(guò)libevent事件觸發(fā)網(wǎng)絡(luò)庫(kù)實(shí)現(xiàn)異步非阻塞網(wǎng)絡(luò)模式,以達(dá)到高并發(fā)的要求;當(dāng)有客戶端發(fā)出請(qǐng)求時(shí),將請(qǐng)求封裝成事件通知,然后根據(jù)客戶端的控制連接句柄對(duì)會(huì)話線程總數(shù)直接取余進(jìn)行哈希,將所述事件通知分配到不同會(huì)話線程的任務(wù)隊(duì)列中;從任務(wù)隊(duì)列中取出所述事件通知,然后調(diào)用有限狀態(tài)機(jī)進(jìn)行處理并獲得相應(yīng)的應(yīng)答碼,通過(guò)套接字層返回給客戶端;當(dāng)會(huì)話請(qǐng)求需要從磁盤讀寫數(shù)據(jù)時(shí),則將相應(yīng)信息封裝成通知事件后加入磁盤處理線程的任務(wù)隊(duì)列,磁盤處理線程則一次性在磁盤和緩存之間進(jìn)行大塊文件的讀寫,再由會(huì)話線程多次從緩存中調(diào)用數(shù)據(jù),通過(guò)套接字層多次和客戶端交互;高速傳輸U(kuò)DT服務(wù)器,建立用于監(jiān)聽(tīng)的主線程,以及處理命令、讀寫文件和壓縮數(shù)據(jù)的三個(gè)線程池;當(dāng)有用戶請(qǐng)求時(shí),所述主線程將任務(wù)分給處理命令線程池中的一個(gè)空閑線程處理,所述空閑線程建立一個(gè)新的線程來(lái)處理數(shù)據(jù)連接以傳輸數(shù)據(jù);當(dāng)讀寫文件時(shí),處理數(shù)據(jù)線程與讀寫文件線程、壓縮數(shù)據(jù)線程之間執(zhí)行同步的通信協(xié)作;非文件讀寫操作則由數(shù)據(jù)連接線程直接處理。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述高速傳輸TCP服務(wù)器進(jìn)一步包括 TCP接口模塊,用于在套接字層,通過(guò)Iibevent事件觸發(fā)網(wǎng)絡(luò)庫(kù)實(shí)現(xiàn)異步非阻塞網(wǎng)絡(luò)模式,以達(dá)到高并發(fā)的要求;根據(jù)控制連接的句柄進(jìn)行哈希,將數(shù)據(jù)分配給不同會(huì)話線程的 任務(wù)隊(duì)列;會(huì)話管理器,用于從任務(wù)隊(duì)列中取出數(shù)據(jù),然后調(diào)用有限狀態(tài)機(jī)進(jìn)行處理并獲得相應(yīng) 的應(yīng)答碼,通過(guò)套接字層返回給客戶端;由會(huì)話線程多次從緩存中調(diào)用數(shù)據(jù),通過(guò)套接字層 多次和客戶端交互;磁盤管理器,用于當(dāng)會(huì)話請(qǐng)求需要從磁盤讀寫數(shù)據(jù)時(shí),則將相應(yīng)信息加入磁盤處理線 程的任務(wù)隊(duì)列,一次性在磁盤和緩存之間進(jìn)行大塊文件的讀寫。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,高速傳輸U(kuò)DT服務(wù)器進(jìn)一步包括UDT接口模塊,用于接收用戶請(qǐng)求,以及與客戶端交互并向所述客戶端傳輸壓縮后的數(shù)據(jù);會(huì)話處理模塊,建立用于監(jiān)聽(tīng)的主線程,以及處理命令、讀寫文件和壓縮數(shù)據(jù)的三個(gè)線 程池;當(dāng)有用戶請(qǐng)求時(shí),所述主線程將任務(wù)分給處理命令線程池中的一個(gè)空閑線程處理,所 述空閑線程建立一個(gè)新的線程來(lái)處理數(shù)據(jù)連接以傳輸數(shù)據(jù);當(dāng)讀寫文件時(shí),數(shù)據(jù)線程與讀 寫文件線程、壓縮數(shù)據(jù)線程之間執(zhí)行同步的通信協(xié)作;非文件讀寫操作則由數(shù)據(jù)連接線程 直接處理;磁盤管理器,用于壓縮需要傳輸?shù)臄?shù)據(jù);在壓縮的時(shí)候提供用于存放壓縮前數(shù)據(jù)和壓 縮后數(shù)據(jù)的兩塊工作空間,在解壓的時(shí)候僅提供一塊工作空間。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述高速傳輸TCP服務(wù)器采用全異步架構(gòu) 模式。
5.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述高速傳輸U(kuò)DT服務(wù)器采用同步阻塞模式。
6.根據(jù)權(quán)利要求1或3所述的系統(tǒng),其特征在于,采用LZO壓縮算法對(duì)文本類型文件進(jìn) 行壓縮。
7.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,在所述套接字層,通過(guò)所述Iibevent 事件觸發(fā)網(wǎng)絡(luò)庫(kù)為控制連接和數(shù)據(jù)連接各設(shè)置1組事件,每組4個(gè)事件,用于實(shí)現(xiàn)與客戶端 的控制命令通信和數(shù)據(jù)傳輸。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,每組的4個(gè)事件包括接受客戶端事件、 讀數(shù)據(jù)事件、通知事件、寫數(shù)據(jù)事件。
9.一種高性能文件傳輸方法,其特征在于,采用前述權(quán)利要求中任意一項(xiàng)所述的系統(tǒng) 來(lái)實(shí)現(xiàn);所述方法包括所述高速傳輸TCP服務(wù)器接受客戶端事件的流程;所述流程進(jìn)一步包括初始化監(jiān)聽(tīng)套接字socket,并設(shè)置為監(jiān)聽(tīng)模式和非阻塞模式; 為所述監(jiān)聽(tīng)套接字socket初始化接受事件,激活所述接受事件,并加入Iibevent事件 觸發(fā)網(wǎng)絡(luò)庫(kù)中;當(dāng)客戶端發(fā)起連接請(qǐng)求時(shí),所述高速傳輸TCP服務(wù)器自動(dòng)調(diào)用接受客戶端事件函數(shù); 接受所述客戶端,生成客戶端套接字socket,并將控制連接句柄與請(qǐng)求的操作類型封 裝成一個(gè)事件通知,加入任務(wù)隊(duì)列。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述方法還包括所述高速傳輸TCP服務(wù) 器從客戶端讀數(shù)據(jù)事件的流程;所述流程進(jìn)一步包括當(dāng)接受客戶端事件函數(shù)被調(diào)用時(shí),所述高速傳輸TCP服務(wù)器接受所述客戶端,并生成 客戶端套接字socket ;為所述客戶端套接字socket初始化讀事件,激活所述讀事件,并加入Iibevent事件觸 發(fā)網(wǎng)絡(luò)庫(kù)中;當(dāng)所述客戶端發(fā)送數(shù)據(jù)時(shí),所述高速傳輸TCP服務(wù)器自動(dòng)調(diào)用讀事件函數(shù); 從所述客戶端套接字socket里讀出數(shù)據(jù),封裝成事件通知后加入任務(wù)隊(duì)列。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述方法還包括所述高速傳輸TCP服務(wù) 器通知事件的流程;所述流程進(jìn)一步包括初始化時(shí),所述高速傳輸TCP服務(wù)器捆綁兩個(gè)套接字socket 通知套接字socket和傳 遞套接字socket ;為所述通知套接字socket初始化通知事件,并激活所述通知事件; 當(dāng)所述高速傳輸TCP服務(wù)器需要寫數(shù)據(jù)時(shí),通過(guò)TCP管理器發(fā)送封裝的事件通知到所 述傳遞套接字socket ;所述高速傳輸TCP服務(wù)器自動(dòng)調(diào)用通知事件函數(shù);從所述通知套接字socket里讀出事件通知,插入到寫事件能夠調(diào)用的任務(wù)隊(duì)列中,并 激活所述寫事件。
12.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述方法還包括所述高速傳輸TCP服務(wù) 器寫數(shù)據(jù)事件的流程;所述流程進(jìn)一步包括當(dāng)接受客戶端事件函數(shù)被調(diào)用時(shí),所述高速傳輸TCP服務(wù)器接受所述客戶端,并生成 客戶端套接字socket ;為所述客戶端套接字socket初始化寫事件,但不激活所述讀事件;當(dāng)所述高速傳輸TCP服務(wù)器需要寫數(shù)據(jù)時(shí),通過(guò)TCP管理器同上發(fā)送數(shù)據(jù)到所述傳遞 套接字socket ;所述高速傳輸TCP服務(wù)器自動(dòng)調(diào)用通知事件函數(shù);從所述通知套接字socket里讀出事件通知,插入到寫事件能夠調(diào)用的任務(wù)隊(duì)列中,并 激活所述寫事件;調(diào)用寫事件函數(shù),并將數(shù)據(jù)寫到客戶端套接字socket ;檢驗(yàn)緩存內(nèi)的數(shù)據(jù)是否被寫完,如果沒(méi)有寫完,則再次激活所述寫事件,調(diào)用寫事件函 數(shù),并將數(shù)據(jù)寫到客戶端套接字socket。
13.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述方法還包括所述高速傳輸U(kuò)DT服務(wù) 器傳輸文件的流程;所述流程進(jìn)一步包括所述高速傳輸U(kuò)DT服務(wù)器初始化線程池,建立套接字socket并偵聽(tīng);當(dāng)客戶端發(fā)起連接請(qǐng)求時(shí),分配任務(wù)給空閑命令線程;所述客戶端連接所述套接字socket后發(fā)送命令,指示線程解析所述命令并通知數(shù)據(jù) 線程;執(zhí)行文件讀寫和壓縮數(shù)據(jù)處理;所述數(shù)據(jù)線程與所述客戶端進(jìn)行數(shù)據(jù)通信。
14.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述方法還包括所述高速傳輸U(kuò)DT服務(wù) 器壓縮數(shù)據(jù)的流程;所述流程進(jìn)一步包括在壓縮數(shù)據(jù)時(shí)記錄并保存壓縮前后數(shù)據(jù)的大小。
全文摘要
本發(fā)明公開(kāi)一種高性能文件傳輸系統(tǒng)及方法,該方法采用本發(fā)明提供的系統(tǒng)來(lái)實(shí)現(xiàn);該方法包括高速傳輸TCP服務(wù)器接受客戶端事件的流程;流程進(jìn)一步包括初始化監(jiān)聽(tīng)套接字socket,并設(shè)置監(jiān)聽(tīng)模式;為監(jiān)聽(tīng)套接字socket初始化接受事件,激活接受事件,并加入libevent事件觸發(fā)網(wǎng)絡(luò)庫(kù)中;當(dāng)客戶端發(fā)起連接請(qǐng)求時(shí),高速傳輸TCP服務(wù)器自動(dòng)調(diào)用接受客戶端事件函數(shù);接受客戶端,生成客戶端套接字socket,并將控制連接句柄與請(qǐng)求的操作類型封裝成一個(gè)事件通知,加入任務(wù)隊(duì)列。本發(fā)明提供的高性能文件傳輸系統(tǒng)及方法,在FTP服務(wù)器的架構(gòu)設(shè)計(jì)上選用全異步模式,同時(shí)通過(guò)使用內(nèi)存緩存,減少磁盤磁針定位和讀寫的次數(shù),提高磁盤I/O和網(wǎng)絡(luò)I/O的利用率之比,從而將瓶頸轉(zhuǎn)移到網(wǎng)絡(luò)I/O。此外,利用了UDT協(xié)議服務(wù)器的良好彈性,實(shí)現(xiàn)了高速率傳輸,并保證了傳輸?shù)目煽啃浴?br>
文檔編號(hào)H04L29/06GK101982955SQ201010551120
公開(kāi)日2011年3月2日 申請(qǐng)日期2010年11月19日 優(yōu)先權(quán)日2010年11月19日
發(fā)明者李宏博, 蔡澤霖, 陳勇, 陳天健 申請(qǐng)人:深圳華大基因科技有限公司