專利名稱:一種數(shù)據(jù)下載系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)下載系統(tǒng)及方法。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,人們?nèi)找媪?xí)慣于通過網(wǎng)絡(luò)來獲取各種數(shù)據(jù)。例如,ー種通常的方式就是通過數(shù)據(jù)下載系統(tǒng)來下載所需的內(nèi)容。目前使用較多的下載架構(gòu)主要有兩種,ー種是傳統(tǒng)的CDN(Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò))多層緩存架構(gòu),另ー種是一般的視頻網(wǎng)站使用較多的下載架構(gòu)。CDN多層緩存架構(gòu)的示意圖如圖1所示,在這種架構(gòu)中,全局數(shù)據(jù)僅存儲在頂層源站設(shè)備中,每個邊緣服務(wù)節(jié)點由Nginx做反向代理,將請求轉(zhuǎn)給后端的Squid,Squid接到用戶請求后回源站抓取數(shù)據(jù)提供服務(wù),前端使用DNS方式進行負載均衡。這種架構(gòu)通常適用于整體數(shù)據(jù)量不大,且熱點集中的下載業(yè)務(wù)。視頻網(wǎng)站使用較多的下載架構(gòu)如圖2所示,在這種架構(gòu)中,全局建立若干分布式存儲集群,各集群間數(shù)據(jù)沒有冗余或冗余較低,使用基于HTTPOlyperText Transfer I^otocol,超文本傳輸協(xié)議)的第七層負載均衡設(shè)備對全局的Nginx服務(wù)器進行負載均衡。 這種架構(gòu)通常適用于視頻下載業(yè)務(wù),整體并發(fā)度較低,多為連續(xù)讀取。但是現(xiàn)在一些場合(例如大型軟件、游戲等安裝程序下載等)中的下載服務(wù)通常有如下特點存儲數(shù)據(jù)量大、文件數(shù)量大,且某部分業(yè)務(wù)用戶訪問熱點不集中等等。因此,迫切需要本領(lǐng)域技術(shù)人員解決的技術(shù)問題就在干,如何提供一種新的下載架構(gòu),能夠滿足上述要求。
發(fā)明內(nèi)容
本發(fā)明提供了一種數(shù)據(jù)下載系統(tǒng)及方法,能夠滿足存儲數(shù)據(jù)量大、文件數(shù)量大,且某部分業(yè)務(wù)用戶訪問熱點不集中時的下載服務(wù)需求。本發(fā)明提供了如下方案ー種數(shù)據(jù)下載系統(tǒng),包括多個下載集群,每個下載集群中包括Linux虛擬服務(wù)器 LVS、至少兩個下載節(jié)點Nginx以及ー個分布式文件系統(tǒng)HDFS,所述Nginx的操作系統(tǒng)通過用戶空間文件系統(tǒng)FUSE掛載HDFS的存儲服務(wù);其中所述LVS用于接收用戶的下載請求,對各個Nginx進行調(diào)度選擇,將所述下載請求轉(zhuǎn)發(fā)給選中的Nginx;所述Nginx用于在接收到LVS轉(zhuǎn)發(fā)的下載請求后,通過FUSE訪問HDFS中存儲的數(shù)據(jù),響應(yīng)用戶的下載請求;所述HDFS用于存儲數(shù)據(jù)。其中,所述LVS具體用于接收到用戶的下載請求后,根據(jù)各個Nginx的性能和/ 或當(dāng)前負載狀況對各個Nginx進行調(diào)度選擇,將所述下載請求發(fā)送給性能和/或當(dāng)前負載狀態(tài)符合預(yù)置條件的Nginx。
其中,所述LVS為兩個。其中,兩個LVS互為主備,每個LVS通過一個處于主模式的虛IP向用戶提供下載服務(wù),同時存在一個處于備用模式的虛IP ;當(dāng)一個LVS無法提供服務(wù)時,另一個LVS通過啟動所述處于備用模式的虛IP來接管該LVS的下載服務(wù)。其中,所述HDFS包括名字節(jié)點及至少兩個數(shù)據(jù)節(jié)點,所述名字節(jié)點與LVS復(fù)用一臺服務(wù)器,每個數(shù)據(jù)節(jié)點與一個Nginx復(fù)用一臺服務(wù)器。其中,Nginx的數(shù)目與數(shù)據(jù)節(jié)點的數(shù)目相同。一種數(shù)據(jù)下載方法,應(yīng)用于一數(shù)據(jù)下載系統(tǒng)中,所述數(shù)據(jù)下載系統(tǒng)包括多個下載集群,每個下載集群中包括Linux虛擬服務(wù)器LVS、至少兩個下載節(jié)點Nginx以及一個分布式文件系統(tǒng)HDFS,所述HDFS用于存儲數(shù)據(jù),所述Nginx的操作系統(tǒng)通過用戶空間文件系統(tǒng)FUSE掛載HDFS的存儲服務(wù);所述方法包括通過所述LVS接收用戶的下載請求,并由所述LVS對各個Nginx進行調(diào)度選擇,將所述下載請求轉(zhuǎn)發(fā)給選中的Nginx ;Nginx在接收到LVS轉(zhuǎn)發(fā)的下載請求后,通過FUSE訪問HDFS中存儲的數(shù)據(jù),響應(yīng)用戶的下載請求。其中,所述對各個Nginx進行調(diào)度選擇,將所述下載請求轉(zhuǎn)發(fā)給選中的Nginx包括根據(jù)各個Nginx的性能和/或當(dāng)前負載狀況對各個Nginx進行調(diào)度選擇,將所述下載請求發(fā)送給性能和/或當(dāng)前負載狀態(tài)符合預(yù)置條件的Nginx。其中,所述LVS為兩個。其中,兩個LVS互為主備,每個LVS通過一個處于主模式的虛IP向用戶提供下載服務(wù),同時存在一個處于備用模式的虛IP ;當(dāng)一個LVS無法提供服務(wù)時,另一個LVS通過啟動所述處于備用模式的虛IP來接管該LVS的下載服務(wù)。其中,所述HDFS包括名字節(jié)點及至少兩個數(shù)據(jù)節(jié)點,所述名字節(jié)點與LVS復(fù)用一臺服務(wù)器,每個數(shù)據(jù)節(jié)點與一個Nginx復(fù)用一臺服務(wù)器。其中,Nginx的數(shù)目與數(shù)據(jù)節(jié)點的數(shù)目相同。其中,還包括對Nginx的參數(shù)進行調(diào)整,所調(diào)整的參數(shù)包括kndfile選項、worker進程數(shù)、單進程最大連接數(shù)、backlog參數(shù)、output-buffers中的一個或多個。其中,還包括對HDFS參數(shù)進行調(diào)整,所調(diào)整的參數(shù)包括read函數(shù)的參數(shù)數(shù)目、IPCserverlisten隊列長度、IPC Server工作線程數(shù)、數(shù)據(jù)傳輸最大線程數(shù)中的一個或多個。根據(jù)本發(fā)明提供的具體實施例,本發(fā)明公開了以下技術(shù)效果第一,由于在下載系統(tǒng)中應(yīng)用了 HDFS,因此,使得單個下載集群能夠提供百TB級別存儲,可通過簡單的插拔方式增加存儲服務(wù)器,提高存儲能力,滿足大存儲數(shù)據(jù)量的需求;同時,由于不使用硬件RAID卡,而是通過HDFS服務(wù)對各磁盤進行并行讀取,因此,可以實現(xiàn)單機各磁盤獨立讀取,能夠很好地滿足用戶訪問無熱點、文件讀取分散的高I/O需求,并提高數(shù)據(jù)吞吐量。實驗數(shù)據(jù)顯示,在使用12塊7200轉(zhuǎn)SATA盤的情況下,單機的總IOPS可達1000以上;最高可實現(xiàn)單機15000以上的并發(fā)連接,1( 以上的帶寬吞吐。
第二,由于每個集群僅將LVS暴露給用戶,因此,使得每個集群具有高內(nèi)聚的特點,也即,如果某個或某些Nginx由于發(fā)生故障等無法向外提供服務(wù),可以通過LVS在集群內(nèi)部予以解決(例如,可以對后端Nginx進行可用性監(jiān)控,對異常Nginx進行秒級摘除等),不會影響到其他的集群。第三,可以直接由LVS在集群內(nèi)部進行負載均衡。第四,由于每個集群內(nèi)容都對數(shù)據(jù)進行了存儲,因此,可以實現(xiàn)數(shù)據(jù)在不同集群間的完全冗余,可以保證能夠快速地進行流量調(diào)度與切換。第五,采用上述結(jié)構(gòu),可以很容易的實現(xiàn)對系統(tǒng)的擴展。例如,若發(fā)現(xiàn)前端LVS的網(wǎng)絡(luò)性能成為瓶頸,可增加獨立的LVS服務(wù)器或在現(xiàn)有服務(wù)器上增加網(wǎng)卡,快速實現(xiàn)性能擴展;若數(shù)據(jù)存儲空間不足、或下載服務(wù)不能滿足需求,可簡單通過增加HDFS的數(shù)據(jù)節(jié)點進行存儲空間及下載服務(wù)性能擴展,相應(yīng)的,HDFS會自動完成新節(jié)點的數(shù)據(jù)同步。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是現(xiàn)有技術(shù)中的下載架構(gòu)示意圖;圖2是現(xiàn)有技術(shù)中的另一下載架構(gòu)示意圖;圖3是本發(fā)明實施例提供的系統(tǒng)的示意圖;圖4是本發(fā)明實施例提供的系統(tǒng)中各服務(wù)的物理部署示意圖;圖5是本發(fā)明實施例提供的方法的流程圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例首先提供了一種數(shù)據(jù)下載系統(tǒng),其示意圖如圖3所示。在該系統(tǒng)中,包括多個下載集群(圖中僅示出一個下載集群),每個下載集群中都包括LVS(LinuXVirtual Server, Linux虛擬服務(wù)器)、至少兩個下載節(jié)點Nginx以及一個HDFS(HadoopDistributed File System,分布式文件系統(tǒng)),其中,Nginx所運行的操作系統(tǒng)通過FUSE (Filesystem in herspace,用戶空間文件系統(tǒng))掛載HDFS的存儲服務(wù)。為了便于理解本發(fā)明實施例,下面首先對HDFS、LVS、Nginx以及FUSE進行簡單地介紹。HDFS有著高容錯性的特點,并且設(shè)計用來部署在低廉的硬件上,而且它提供高吞吐量來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應(yīng)用程序。正是由于HDFS具有上述特點,本發(fā)明實施例試圖將HDFS應(yīng)用到在線的下載服務(wù)中,并提供相應(yīng)的解決方案。當(dāng)然,在現(xiàn)有技術(shù)中,HDFS 一般用于線下的數(shù)據(jù)存儲,尚未有將HDFS應(yīng)用于在線的數(shù)據(jù)下載架構(gòu)中的應(yīng)用。LVS是一個開源的軟件,可以實現(xiàn)LINUX平臺下的簡單負載均衡。LVS采用IP負載均衡技術(shù)和基于內(nèi)容請求分發(fā)技術(shù),其調(diào)度器具有很好的吞吐率,將請求均衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,且調(diào)度器能夠自動屏蔽掉服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個高性能的、高可用的虛擬服務(wù)器。整個服務(wù)器集群的結(jié)構(gòu)對客戶是透明的,而且無需修改客戶端和服務(wù)器端的程序。Nginx是一個高性能的HTTP和反向代理服務(wù)器,在高連接并發(fā)的情況下,Nginx是一個不錯的選擇。FUSE是Linux操作系統(tǒng)中的概念,指完全在用戶態(tài)實現(xiàn)的文件系統(tǒng),用于掛載某些網(wǎng)絡(luò)空間,到本地文件系統(tǒng)的模塊。傳統(tǒng)上操作系統(tǒng)在內(nèi)核層面上對文件系統(tǒng)提供支持,而通常內(nèi)核態(tài)的代碼難以調(diào)試,生產(chǎn)率較低;但在利用了 FUSE之后,能夠大幅提高生產(chǎn)率,簡化為操作系統(tǒng)提供新的文件系統(tǒng)的工作量,特別適用于各種虛擬文件系統(tǒng)和網(wǎng)絡(luò)文件系統(tǒng)。基于上述特點,本發(fā)明實施例提供了一種新型的數(shù)據(jù)下載系統(tǒng)。其中,在每個集群內(nèi)部,數(shù)據(jù)通過HDFS進行存儲,集群最外層暴露LVS虛IP向用戶提供服務(wù),也即,由LVS接收用戶的下載請求;并且LVS在接收到用戶的下載請求之后,會對各個Nginx進行調(diào)度,選擇合適的Nginx,并將用戶的下載請求轉(zhuǎn)發(fā)給該選中的Nginx。Nginx在接收到用戶的下載請求之后,就可以通過FUSE訪問HDFS中存儲的數(shù)據(jù),以此來響應(yīng)用戶的下載請求。其中,LVS具體在對Nginx進行調(diào)度時,可以依據(jù)各個Nginx的性能(包括服務(wù)器的硬件性能指標等)和/或當(dāng)前負載狀況進行,選擇出性能和/或當(dāng)前負載狀態(tài)符合預(yù)置條件的Nginx,并將用戶的下載請求發(fā)送給該Nginx即可。通過上述系統(tǒng)架構(gòu),可以使得本發(fā)明實施例提供的數(shù)據(jù)下載系統(tǒng)具有以下特點第一,由于在下載系統(tǒng)中應(yīng)用了 HDFS,因此,使得單個下載集群能夠提供百TB級別存儲,可通過簡單的插拔方式增加存儲服務(wù)器,提高存儲能力,滿足大存儲數(shù)據(jù)量的需求;同時,由于不使用硬件RAID卡,而是通過HDFS服務(wù)對各磁盤進行并行讀取,因此,可以實現(xiàn)單機各磁盤獨立讀取,能夠很好地滿足用戶訪問無熱點、文件讀取分散的高I/O需求,并提高數(shù)據(jù)吞吐量。實驗數(shù)據(jù)顯示,在使用12塊7200轉(zhuǎn)SATA盤的情況下,單機的總IOPS可達1000以上;最高可實現(xiàn)單機15000以上的并發(fā)連接,1( 以上的帶寬吞吐。第二,由于每個集群僅將LVS暴露給用戶,因此,使得每個集群具有高內(nèi)聚的特點,也即,如果某個或某些Nginx由于發(fā)生故障等無法向外提供服務(wù),可以通過LVS在集群內(nèi)部予以解決(例如,可以對后端Nginx進行可用性監(jiān)控,對異常Nginx進行秒級摘除等),不會影響到其他的集群。第三,可以直接由LVS在集群內(nèi)部進行負載均衡。第四,由于每個集群內(nèi)容都對數(shù)據(jù)進行了存儲,因此,可以實現(xiàn)數(shù)據(jù)在不同集群間的完全冗余,可以保證能夠快速地進行流量調(diào)度與切換。第五,采用上述結(jié)構(gòu),可以很容易的實現(xiàn)對系統(tǒng)的擴展。例如,若發(fā)現(xiàn)前端LVS的網(wǎng)絡(luò)性能成為瓶頸,可增加獨立的LVS服務(wù)器或在現(xiàn)有服務(wù)器上增加網(wǎng)卡,快速實現(xiàn)性能擴展;若數(shù)據(jù)存儲空間不足、或下載服務(wù)不能滿足需求,可簡單通過增加HDFS的數(shù)據(jù)節(jié)點進行存儲空間及下載服務(wù)性能擴展,相應(yīng)的,HDFS會自動完成新節(jié)點的數(shù)據(jù)同步。
由于可以對系統(tǒng)進行擴展,因此,在實際應(yīng)用中,LVS可以是多個。例如,在圖3所示的示意圖中,LVS可以為兩個,同時向用戶提供下載服務(wù)。此時,這兩個LVS可以互為主備,每個LVS通過一個處于主模式的虛IP向用戶提供下載服務(wù),同時存在一個處于備用模式的虛IP ;當(dāng)一個LVS無法提供服務(wù)時,另一個LVS通過啟動所述處于備用模式的虛IP來接管該LVS的下載服務(wù)。通過這種機制,進一步保證了單個集群內(nèi)部的高可靠性,避免由于LVS出現(xiàn)故障導(dǎo)致下載服務(wù)的失敗。此外,HDFS還具有以下特點HDFS是一個主從結(jié)構(gòu)的體系,一個HDFS集群是由名字節(jié)點(NameNode,NN)和數(shù)據(jù)節(jié)點(DataNode,DN)組成,名字節(jié)點是一個管理文件的命名空間和調(diào)節(jié)客戶端訪問文件的主服務(wù)器,數(shù)據(jù)節(jié)點用來管理存儲。換言之,名字節(jié)點操作文件命名空間的文件或目錄操作,如打開,關(guān)閉,重命名,等等,它同時確定數(shù)據(jù)與數(shù)據(jù)節(jié)點的映射。數(shù)據(jù)節(jié)點來負責(zé)來自文件系統(tǒng)用戶的讀寫請求,同時還要執(zhí)行數(shù)據(jù)的創(chuàng)建,刪除,和來自名字節(jié)點的數(shù)據(jù)復(fù)制指示。其中,名字節(jié)點和數(shù)據(jù)節(jié)點都是軟件運行在普通的機器之上。在實際應(yīng)用中,為了實現(xiàn)硬件資源的充分利用,降低系統(tǒng)規(guī)模,提高系統(tǒng)的維護性,各個服務(wù)在物理上可以通過以下方式進行部署參見圖4,HDFS的名字節(jié)點(NN)服務(wù)與LVS服務(wù)進行服務(wù)器的復(fù)用,例如,圖4中,當(dāng)存在兩個LVS時,系統(tǒng)中也可以同時存在兩個名字節(jié)點。也即,在名字節(jié)點上部署數(shù)據(jù)同步客戶端,并部署FUSE掛載HDFS,通過FUSE向HDFS更新數(shù)據(jù)。在下載服務(wù)過程中,名字節(jié)點僅響應(yīng)集群內(nèi)部少量的RPC請求,負載很低;LVS服務(wù)屬于CPU與網(wǎng)絡(luò)密集型服務(wù),但效率很高,因此,這樣進行復(fù)用,能夠充分利用系統(tǒng)資源且不會對HDFS服務(wù)產(chǎn)生影響。另外,如圖4所示,每個數(shù)據(jù)節(jié)點可以與一個Nginx復(fù)用一臺服務(wù)器,也即,在每個數(shù)據(jù)節(jié)點(DN)上部署FUSE和Nginx提供下載服務(wù)。此時,每個數(shù)據(jù)節(jié)點中存儲的數(shù)據(jù)都可以是全部的數(shù)據(jù),并且Nginx的數(shù)目與數(shù)據(jù)節(jié)點的數(shù)目可以是相同的,也即,在一個集群內(nèi)部的各個不同的下載節(jié)點之間,也可以實現(xiàn)數(shù)據(jù)的完全冗余??傊?,這種機制可以進一步提高系統(tǒng)的可靠性,同時,得益于HDFS的特性,對HDFS數(shù)據(jù)的絕大多數(shù)請求都直接訪問本機的HDFS服務(wù),不會發(fā)生跨機訪問,因此,可以提高響應(yīng)速度,規(guī)避內(nèi)網(wǎng)傳輸瓶頸。當(dāng)然,在實際應(yīng)用中,在不同的Nginx之間,也可以實現(xiàn)數(shù)據(jù)的部分冗余。需要說明的是,LVS具有兩種路由模式,一種是NAT模式,另一種是DR(DirectRouting)模式。在本發(fā)明實施例中,LVS可以工作于DR模式,在這種模式下,入流量(用戶請求)通過LVS,但出流量(響應(yīng)數(shù)據(jù))可以直接從后面的數(shù)據(jù)節(jié)點返回,不再流經(jīng)LVS。這樣可以避免NAT模式中,出入流量都走LVS,使得LVS成為網(wǎng)絡(luò)帶寬瓶頸的問題。在具體實現(xiàn)時,為了更好地適應(yīng)下載服務(wù)高并發(fā)、低延遲、高數(shù)據(jù)吞吐量的要求,還可以對Nginx參數(shù)以及HDFS服務(wù)進行調(diào)整。其中,在調(diào)整Nginx參數(shù)時,可以包括以下方面(a)關(guān)閉kndfile選項;(b)將worker進程數(shù)從默認的1增加為256 ; (c)將單進程最大連接數(shù)調(diào)整為512 ; (d)將hcklog參數(shù)調(diào)整為204800 ;(e)將output-buffers設(shè)置為“ 1128k”。在調(diào)整HDFS服務(wù)時,可以包括下方面(a) Hi. read 1 publicsynchronized int read (byte buf [], int off, intlen) throws IOException包括三個參數(shù)=Buf (緩存)、Off (數(shù)據(jù)在buf偏移),Len (讀取長度),本發(fā)明實施例可以在此基礎(chǔ)上增加一個參數(shù)position (文件偏移),以此來減少數(shù)
8據(jù)預(yù)讀,降低讀請求壓力;(b)將IPC server listen隊列長度由128增加為1024 ; (c) IPCServer工作線程數(shù)增加由3為IOM ; (d)數(shù)據(jù)傳輸最大線程數(shù)由256增加為4096。當(dāng)然,在實際應(yīng)用中,也可以根據(jù)實際需要,調(diào)整其中的一部分參數(shù),或者將這些參數(shù)的具體數(shù)值調(diào)整為其他的值,或者調(diào)整其他的參數(shù),等等,這里不進行限定。與本發(fā)明實施例提供的數(shù)據(jù)下載系統(tǒng)相對應(yīng),本發(fā)明實施例還提供了一種數(shù)據(jù)下載方法,該方法應(yīng)用于圖3所示的數(shù)據(jù)下載系統(tǒng)中,參見圖5,該方法包括以下步驟S501 通過所述LVS接收用戶的下載請求,并由所述LVS對各個Nginx進行調(diào)度選擇,將所述下載請求轉(zhuǎn)發(fā)給選中的Nginx ;S502 =Nginx在接收到LVS轉(zhuǎn)發(fā)的下載請求后,通過FUSE訪問HDFS中存儲的數(shù)據(jù),響應(yīng)用戶的下載請求。其中,在具體實現(xiàn)時,LVS具體可以在接收到用戶的下載請求后,根據(jù)各個Nginx的性能和/或當(dāng)前負載狀況對各個Nginx進行調(diào)度選擇,將所述下載請求發(fā)送給性能和/或當(dāng)前負載狀態(tài)符合預(yù)置條件的Nginx。另外,系統(tǒng)中的LVS為兩個,并且,兩個LVS可以互為主備,每個LVS通過一個處于主模式的虛IP向用戶提供下載服務(wù),同時存在一個處于備用模式的虛IP ;當(dāng)一個LVS無法提供服務(wù)時,另一個LVS通過啟動所述處于備用模式的虛IP來接管該LVS的下載服務(wù)。為了實現(xiàn)硬件資源的充分利用,降低系統(tǒng)規(guī)模,提高系統(tǒng)的維護性,HDFS的名字節(jié)點可以與LVS復(fù)用一臺服務(wù)器,HDFS的每個數(shù)據(jù)節(jié)點與一個Nginx復(fù)用一臺服務(wù)器。并且,Nginx的數(shù)目與數(shù)據(jù)節(jié)點的數(shù)目可以是相同的。另外,在實際應(yīng)用中,為了更好地適應(yīng)下載服務(wù)高并發(fā)、低延遲、高數(shù)據(jù)吞吐量的要求,還可以對Nginx參數(shù)以及HDFS服務(wù)進行調(diào)整。通過以上的實施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于裝置或系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置及系統(tǒng)實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。以上對本發(fā)明所提供的一種數(shù)據(jù)下載系統(tǒng)及方法,進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種數(shù)據(jù)下載系統(tǒng),其特征在干,包括多個下載集群,每個下載集群中包括Linux虛擬服務(wù)器LVS、至少兩個下載節(jié)點Nginx以及ー個分布式文件系統(tǒng)HDFS,所述Nginx的操作系統(tǒng)通過用戶空間文件系統(tǒng)FUSE掛載HDFS的存儲服務(wù);其中所述LVS用于接收用戶的下載請求,對各個Nginx進行調(diào)度選擇,將所述下載請求轉(zhuǎn)發(fā)給選中的Nginx ;所述Nginx用于在接收到LVS轉(zhuǎn)發(fā)的下載請求后,通過FUSE訪問HDFS中存儲的數(shù)據(jù), 響應(yīng)用戶的下載請求;所述HDFS用于存儲數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在干,所述LVS具體用于接收到用戶的下載請求后,根據(jù)各個Nginx的性能和/或當(dāng)前負載狀況對各個Nginx進行調(diào)度選擇,將所述下載請求發(fā)送給性能和/或當(dāng)前負載狀態(tài)符合預(yù)置條件的Nginx。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在干,所述LVS為兩個。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在干,兩個LVS互為主備,每個LVS通過ー個處于主模式的虛IP向用戶提供下載服務(wù),同時存在一個處于備用模式的虛IP ;當(dāng)ー個LVS無法提供服務(wù)時,另ー個LVS通過啟動所述處于備用模式的虛IP來接管該LVS的下載服務(wù)。
5.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在干,所述HDFS包括名字節(jié)點及至少兩個數(shù)據(jù)節(jié)點,所述名字節(jié)點與LVS復(fù)用一臺服務(wù)器,每個數(shù)據(jù)節(jié)點與ー個Nginx復(fù)用一臺服務(wù)器。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在干,Nginx的數(shù)目與數(shù)據(jù)節(jié)點的數(shù)目相同。
7.ー種數(shù)據(jù)下載方法,應(yīng)用于一數(shù)據(jù)下載系統(tǒng)中,其特征在干,所述數(shù)據(jù)下載系統(tǒng)包括多個下載集群,每個下載集群中包括Linux虛擬服務(wù)器LVS、至少兩個下載節(jié)點Nginx以及 ー個分布式文件系統(tǒng)HDFS,所述HDFS用于存儲數(shù)據(jù),所述Nginx的操作系統(tǒng)通過用戶空間文件系統(tǒng)FUSE掛載HDFS的存儲服務(wù);所述方法包括通過所述LVS接收用戶的下載請求,并由所述LVS對各個Nginx進行調(diào)度選擇,將所述下載請求轉(zhuǎn)發(fā)給選中的Nginx;Nginx在接收到LVS轉(zhuǎn)發(fā)的下載請求后,通過FUSE訪問HDFS中存儲的數(shù)據(jù),響應(yīng)用戶的下載請求。
8.根據(jù)權(quán)利要求7所述的方法,其特征在干,所述對各個Nginx進行調(diào)度選擇,將所述下載請求轉(zhuǎn)發(fā)給選中的Nginx包括根據(jù)各個Nginx的性能和/或當(dāng)前負載狀況對各個Nginx進行調(diào)度選擇,將所述下載請求發(fā)送給性能和/或當(dāng)前負載狀態(tài)符合預(yù)置條件的Nginx。
9.根據(jù)權(quán)利要求7所述的方法,其特征在干,所述LVS為兩個。
10.根據(jù)權(quán)利要求9所述的方法,其特征在干,兩個LVS互為主備,每個LVS通過ー個處于主模式的虛IP向用戶提供下載服務(wù),同時存在一個處于備用模式的虛IP ;當(dāng)ー個LVS無法提供服務(wù)時,另ー個LVS通過啟動所述處于備用模式的虛IP來接管該LVS的下載服務(wù)。
11.根據(jù)權(quán)利要求7所述的方法,其特征在干,所述HDFS包括名字節(jié)點及至少兩個數(shù)據(jù)節(jié)點,所述名字節(jié)點與LVS復(fù)用一臺服務(wù)器,每個數(shù)據(jù)節(jié)點與ー個Nginx復(fù)用一臺服務(wù)器。
12.根據(jù)權(quán)利要求11所述的方法,其特征在干,Nginx的數(shù)目與數(shù)據(jù)節(jié)點的數(shù)目相同。
13.根據(jù)權(quán)利要求7所述的方法,其特征在于,還包括對Nginx的參數(shù)進行調(diào)整,所調(diào)整的參數(shù)包括kndfile選項、worker進程數(shù)、單進程最大連接數(shù)、backlog參數(shù)、output-buffers中的ー個或多個。
14.根據(jù)權(quán)利要求7所述的方法,其特征在于,還包括對HDFS參數(shù)進行調(diào)整,所調(diào)整的參數(shù)包括read函數(shù)的參數(shù)數(shù)目、IPCserver listen隊列長度、IPC Server工作線程數(shù)、數(shù)據(jù)傳輸最大線程數(shù)中的ー個或多個。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)下載系統(tǒng)及方法,其中,所述系統(tǒng)包括多個下載集群,每個下載集群中包括Linux虛擬服務(wù)器LVS、至少兩個下載節(jié)點Nginx以及一個分布式文件系統(tǒng)HDFS,所述Nginx的操作系統(tǒng)通過用戶空間文件系統(tǒng)FUSE掛載HDFS的存儲服務(wù);其中LVS用于接收用戶的下載請求,對各個Nginx進行調(diào)度選擇,將所述下載請求轉(zhuǎn)發(fā)給選中的Nginx;Nginx用于在接收到LVS轉(zhuǎn)發(fā)的下載請求后,通過FUSE訪問HDFS中存儲的數(shù)據(jù),響應(yīng)用戶的下載請求;HDFS用于存儲數(shù)據(jù)。通過本發(fā)明,能夠滿足存儲數(shù)據(jù)量大、文件數(shù)量大,且某部分業(yè)務(wù)用戶訪問熱點不集中時的下載服務(wù)需求。
文檔編號H04L29/08GK102571959SQ20121000767
公開日2012年7月11日 申請日期2012年1月11日 優(yōu)先權(quán)日2012年1月11日
發(fā)明者王力, 王 鋒 申請人:北京奇虎科技有限公司