一種數(shù)據(jù)下載系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)下載系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著信息技術(shù)的發(fā)展,人們?nèi)找媪?xí)慣于通過網(wǎng)絡(luò)來獲取各種數(shù)據(jù)。例如,一種通常的方式就是通過數(shù)據(jù)下載系統(tǒng)來下載所需的內(nèi)容。
[0003]目前使用較多的下載架構(gòu)主要有兩種,一種是傳統(tǒng)的⑶N(Content DeliveryNetwork,內(nèi)容分發(fā)網(wǎng)絡(luò))多層緩存架構(gòu),另一種是一般的視頻網(wǎng)站使用較多的下載架構(gòu)。
[0004]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ù)。
[0005]視頻網(wǎng)站使用較多的下載架構(gòu)如圖2所示,在這種架構(gòu)中,全局建立若干分布式存儲(chǔ)集群,各集群間數(shù)據(jù)沒有冗余或冗余較低,使用基于HTTP (HyperText TransferProtocol,超文本傳輸協(xié)議)的第七層負(fù)載均衡設(shè)備對(duì)全局的Nginx服務(wù)器進(jìn)行負(fù)載均衡。這種架構(gòu)通常適用于視頻下載業(yè)務(wù),整體并發(fā)度較低,多為連續(xù)讀取。
[0006]但是現(xiàn)在一些場(chǎng)合(例如大型軟件、游戲等安裝程序下載等)中的下載服務(wù)通常有如下特點(diǎn):存儲(chǔ)數(shù)據(jù)量大、文件數(shù)量大,且某部分業(yè)務(wù)用戶訪問熱點(diǎn)不集中等等。因此,迫切需要本領(lǐng)域技術(shù)人員解決的技術(shù)問題就在于,如何提供一種新的下載架構(gòu),能夠滿足上述要求。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供了一種數(shù)據(jù)下載系統(tǒng)及方法,能夠滿足存儲(chǔ)數(shù)據(jù)量大、文件數(shù)量大,且某部分業(yè)務(wù)用戶訪問熱點(diǎn)不集中時(shí)的下載服務(wù)需求。
[0008]本發(fā)明提供了如下方案:
[0009]一種數(shù)據(jù)下載系統(tǒng),包括多個(gè)下載集群,每個(gè)下載集群中包括Linux虛擬服務(wù)器LVS、至少兩個(gè)下載節(jié)點(diǎn)Nginx以及一個(gè)分布式文件系統(tǒng)HDFS,所述Nginx的操作系統(tǒng)通過用戶空間文件系統(tǒng)FUSE掛載HDFS的存儲(chǔ)服務(wù);其中:
[0010]所述LVS用于接收用戶的下載請(qǐng)求,對(duì)各個(gè)Nginx進(jìn)行調(diào)度選擇,將所述下載請(qǐng)求轉(zhuǎn)發(fā)給選中的Nginx ;
[0011]所述Nginx用于在接收到LVS轉(zhuǎn)發(fā)的下載請(qǐng)求后,通過FUSE訪問HDFS中存儲(chǔ)的數(shù)據(jù),響應(yīng)用戶的下載請(qǐng)求;
[0012]所述HDFS用于存儲(chǔ)數(shù)據(jù)。
[0013]其中,所述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。
[0014]其中,所述LVS為兩個(gè)。
[0015]其中,兩個(gè)LVS互為主備,每個(gè)LVS通過一個(gè)處于主模式的虛IP向用戶提供下載服務(wù),同時(shí)存在一個(gè)處于備用模式的虛IP ;當(dāng)一個(gè)LVS無法提供服務(wù)時(shí),另一個(gè)LVS通過啟動(dòng)所述處于備用模式的虛IP來接管該LVS的下載服務(wù)。
[0016]其中,所述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è)Ngi nx復(fù)用一臺(tái)服務(wù)器。
[0017]其中,Nginx的數(shù)目與數(shù)據(jù)節(jié)點(diǎn)的數(shù)目相同。
[0018]一種數(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)通過用戶空間文件系統(tǒng)FUSE掛載HDFS的存儲(chǔ)服務(wù);所述方法包括:
[0019]通過所述LVS接收用戶的下載請(qǐng)求,并由所述LVS對(duì)各個(gè)Nginx進(jìn)行調(diào)度選擇,將所述下載請(qǐng)求轉(zhuǎn)發(fā)給選中的Nginx ;
[0020]Nginx在接收到LVS轉(zhuǎn)發(fā)的下載請(qǐng)求后,通過FUSE訪問HDFS中存儲(chǔ)的數(shù)據(jù),響應(yīng)用戶的下載請(qǐng)求。
[0021]其中,所述對(duì)各個(gè)Nginx進(jìn)行調(diào)度選擇,將所述下載請(qǐng)求轉(zhuǎn)發(fā)給選中的Nginx包括:
[0022]根據(jù)各個(gè)Nginx的性能和/或當(dāng)前負(fù)載狀況對(duì)各個(gè)Nginx進(jìn)行調(diào)度選擇,將所述下載請(qǐng)求發(fā)送給性能和/或當(dāng)前負(fù)載狀態(tài)符合預(yù)置條件的Nginx。
[0023]其中,所述LVS為兩個(gè)。
[0024]其中,兩個(gè)LVS互為主備,每個(gè)LVS通過一個(gè)處于主模式的虛IP向用戶提供下載服務(wù),同時(shí)存在一個(gè)處于備用模式的虛IP ;當(dāng)一個(gè)LVS無法提供服務(wù)時(shí),另一個(gè)LVS通過啟動(dòng)所述處于備用模式的虛IP來接管該LVS的下載服務(wù)。
[0025]其中,所述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ù)器。
[0026]其中,Nginx的數(shù)目與數(shù)據(jù)節(jié)點(diǎn)的數(shù)目相同。
[0027]其中,還包括:
[0028]對(duì)Nginx的參數(shù)進(jìn)行調(diào)整,所調(diào)整的參數(shù)包括Sendfile選項(xiàng)、worker進(jìn)程數(shù)、單進(jìn)程最大連接數(shù)、backlog參數(shù)、output_buffers中的一個(gè)或多個(gè)。
[0029]其中,還包括:
[0030]對(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è)。
[0031]根據(jù)本發(fā)明提供的具體實(shí)施例,本發(fā)明公開了以下技術(shù)效果:
[0032]第一,由于在下載系統(tǒng)中應(yīng)用了 HDFS,因此,使得單個(gè)下載集群能夠提供百TB級(jí)別存儲(chǔ),可通過簡(jiǎn)單的插拔方式增加存儲(chǔ)服務(wù)器,提高存儲(chǔ)能力,滿足大存儲(chǔ)數(shù)據(jù)量的需求;同時(shí),由于不使用硬件RAID卡,而是通過HDFS服務(wù)對(duì)各磁盤進(jìn)行并行讀取,因此,可以實(shí)現(xiàn)單機(jī)各磁盤獨(dú)立讀取,能夠很好地滿足用戶訪問無熱點(diǎn)、文件讀取分散的高I/O需求,并提高數(shù)據(jù)吞吐量。實(shí)驗(yàn)數(shù)據(jù)顯示,在使用12塊7200轉(zhuǎn)SATA盤的情況下,單機(jī)的總1PS可達(dá)1000以上;最高可實(shí)現(xiàn)單機(jī)15000以上的并發(fā)連接,IGb以上的帶寬吞吐。
[0033]第二,由于每個(gè)集群僅將LVS暴露給用戶,因此,使得每個(gè)集群具有高內(nèi)聚的特點(diǎn),也即,如果某個(gè)或某些Nginx由于發(fā)生故障等無法向外提供服務(wù),可以通過LVS在集群內(nèi)部予以解決(例如,可以對(duì)后端Nginx進(jìn)行可用性監(jiān)控,對(duì)異常Nginx進(jìn)行秒級(jí)摘除等),不會(huì)影響到其他的集群。
[0034]第三,可以直接由LVS在集群內(nèi)部進(jìn)行負(fù)載均衡。
[0035]第四,由于每個(gè)集群內(nèi)容都對(duì)數(shù)據(jù)進(jìn)行了存儲(chǔ),因此,可以實(shí)現(xiàn)數(shù)據(jù)在不同集群間的完全冗余,可以保證能夠快速地進(jìn)行流量調(diào)度與切換。
[0036]第五,采用上述結(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)單通過增加HDFS的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行存儲(chǔ)空間及下載服務(wù)性能擴(kuò)展,相應(yīng)的,HDFS會(huì)自動(dòng)完成新節(jié)點(diǎn)的數(shù)據(jù)同步。
【附圖說明】
[0037]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0038]圖1是現(xiàn)有技術(shù)中的下載架構(gòu)示意圖;
[0039]圖2是現(xiàn)有技術(shù)中的另一下載架構(gòu)不意圖;
[0040]圖3是本發(fā)明實(shí)施例提供的系統(tǒng)的示意圖;
[0041]圖4是本發(fā)明實(shí)施例提供的系統(tǒng)中各服務(wù)的物理部署示意圖;
[0042]圖5是本發(fā)明實(shí)施例提供的方法的流程圖。
【具體實(shí)施方式】
[0043]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中