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