專利名稱:離線下載的系統(tǒng)及方法
離線下載的系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種互聯(lián)網(wǎng)技術(shù),特別是涉及一種離線下載的系統(tǒng)及方法。
背景技術(shù):
云端訂閱下載,又稱為離線下載,本質(zhì)是下載工具的服務(wù)器代替用戶先行下載。比如某個(gè)資源是冷門資源,下載速度很慢,用戶就得下載很久,如果用戶使用離線下載技術(shù),就可以讓服務(wù)商的服務(wù)器代替用戶下載,用戶就可以關(guān)掉下載工具或者機(jī)器,節(jié)約時(shí)間和電費(fèi)。等到離線下載好后,用戶再?gòu)南螺d工具的服務(wù)器上高速下載到客戶端的電腦上。離線下載能省卻許多掛機(jī)等待的時(shí)間,最重要的是能夠騰出電腦寬帶做其他的事情。以服務(wù)器高速代理下載,中轉(zhuǎn)到離線空間,再以用戶從離線下載服務(wù)器下載到本機(jī)的方式提供網(wǎng)絡(luò)加速服務(wù)的離線下載獲得了廣泛的應(yīng)用。云端訂閱的一般步驟為:用戶提交需要下載的文件下載地址;離線任務(wù)管理服務(wù)器接受用戶提交的訂閱請(qǐng)求;離線任務(wù)管理服務(wù)器收到請(qǐng)求后先查詢數(shù)據(jù)庫(kù)的映射記錄,檢測(cè)服務(wù)器端是否已經(jīng)有下載或者下載完成的對(duì)應(yīng)文件,如果有就直接通知客戶端,客戶端可以直接從服務(wù)器云端下載,同時(shí)使用P2SP(點(diǎn)對(duì)服務(wù)器和點(diǎn))技術(shù),如果沒有合適的文件在服務(wù)端匹配到,就將離線下載任務(wù)請(qǐng)求發(fā)送到離線任務(wù)分發(fā)服務(wù)器;離線任務(wù)分發(fā)服務(wù)器依據(jù)下載鏈接Hash(把任意長(zhǎng)度的輸入,通過散列算法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值)的首字節(jié)區(qū)間進(jìn)行離線任務(wù)的調(diào)度,離線下載服務(wù)器集群依據(jù)URL (Uniform/Universal Resource Locator,統(tǒng)一資源定位符,也被稱為網(wǎng)頁地址)開始啟動(dòng)下載,從因特網(wǎng)下載數(shù)據(jù);下載完成的數(shù)據(jù)同時(shí)同步到云存儲(chǔ)服務(wù)器,同時(shí)將下載結(jié)果寫入數(shù)據(jù)庫(kù)。
在一般云端訂閱下載系統(tǒng)中,下載任務(wù)分發(fā)是按照任務(wù)鏈接Hash首字節(jié)區(qū)間范圍分組,但是用戶任務(wù)需求和文件大小對(duì)應(yīng)的分布是非常不均勻的,由此造成下載服務(wù)器的負(fù)載不均勻。下載服務(wù)器由于是p2p (點(diǎn)對(duì)點(diǎn))軟件的下載,數(shù)據(jù)來源和寫入都是隨機(jī)的,下載服務(wù)器的IO非常容易成為下載系統(tǒng)的瓶頸,目前的方式只是依據(jù)下載文件鏈接Hash進(jìn)行隨機(jī)分組,實(shí)際的效果依然會(huì)導(dǎo)致部分下載服務(wù)器的磁盤IO成為系統(tǒng)瓶頸,下載任務(wù)需要排隊(duì),無法及時(shí)完成下載。此外,由于P2P(點(diǎn)對(duì)服務(wù)器和點(diǎn))網(wǎng)絡(luò)自身的特性,服務(wù)器端下載具有不確定性,下載是否能夠最終完成和什么時(shí)候能夠下載完成是難以預(yù)期的,導(dǎo)致下載服務(wù)器磁盤的實(shí)際利用和分配情況難以確定。因此,上述傳統(tǒng)的離線下載系統(tǒng)下載服務(wù)器利用率低、磁盤空間得不到充分利用。
發(fā)明內(nèi)容鑒于上述狀況,有必要針對(duì)傳統(tǒng)的離線下載系統(tǒng)下載服務(wù)器利用率低的問題,提供一種離線下載的系統(tǒng)及方法。一種離線下載的系統(tǒng),包括:下載服務(wù)器集群,所述下載服務(wù)器集群包括兩個(gè)以上下載服務(wù)器,所述下載服務(wù)器根據(jù)其負(fù)載反饋負(fù)載信息及根據(jù)離線任務(wù)從互聯(lián)網(wǎng)中獲取數(shù)據(jù)信息;分發(fā)服務(wù)器,獲得所述離線任務(wù),所述分發(fā)服務(wù)器與所述下載服務(wù)器集群通信,接收所述負(fù)載信息并根據(jù)所述負(fù)載信息生成調(diào)度規(guī)則,所述分發(fā)服務(wù)器根據(jù)所述調(diào)度規(guī)則將所述離線任務(wù)分發(fā)給所述下載服務(wù)器;及存儲(chǔ)服務(wù)器,與所述下載服務(wù)器集群通信連接,用于存儲(chǔ)所述下載服務(wù)器集群獲得的所述數(shù)據(jù)信息,并提供所述數(shù)據(jù)信息的下載。進(jìn)一步地,還包括:離線任務(wù)數(shù)據(jù)庫(kù),存儲(chǔ)所述離線任務(wù)的原始連接,所述下載服務(wù)器集群與所述離線任務(wù)數(shù)據(jù)庫(kù)通信連接,并從所述離線任務(wù)數(shù)據(jù)庫(kù)獲取所述離線任務(wù)的原始鏈接,所述下載服務(wù)器集群將與下載完成的離線任務(wù)對(duì)應(yīng)的數(shù)據(jù)信息的入口地址寫入所述離線任務(wù)數(shù)據(jù)庫(kù),并生成映射記錄;及離線任務(wù)管理器,與所述離線任務(wù)數(shù)據(jù)庫(kù)及所述分發(fā)服務(wù)器通信連接,所述離線任務(wù)管理器通過所述映射記錄判斷所述離線任務(wù)是否下載完成,若是,則直接提供所述數(shù)據(jù)信息,否則,為所述離線任務(wù)生成唯一編號(hào),且將其原始鏈接連同所述編號(hào)寫入所述離線任務(wù)數(shù)據(jù)庫(kù),并將所述離線 任務(wù)提交給所述分發(fā)服務(wù)器。進(jìn)一步地,所述下載服務(wù)器根據(jù)下載協(xié)議分為相應(yīng)類型,所述分發(fā)服務(wù)器包括任務(wù)分類模塊,所述任務(wù)分類模塊將所述離線任務(wù)根據(jù)下載協(xié)議分發(fā)給對(duì)應(yīng)類型的所述下載服務(wù)器。進(jìn)一步地,所述分發(fā)服務(wù)器包括過濾模塊,所述過濾模塊將所述離線任務(wù)與已經(jīng)存在的離線任務(wù)進(jìn)行比較,將已經(jīng)存在的所述離線任務(wù)過濾。進(jìn)一步地,所述分發(fā)服務(wù)器包括:負(fù)載調(diào)度模塊,接收所述負(fù)載信息,并根據(jù)所述負(fù)載信息生成調(diào)度規(guī)則,所述負(fù)載調(diào)度模塊維護(hù)包含所述下載服務(wù)器的信息的鏈表及所述調(diào)度規(guī)則;及任務(wù)分發(fā)模塊,根據(jù)所述調(diào)度規(guī)則及所述鏈表中的信息,將所述離線任務(wù)分發(fā)給所述下載服務(wù)器。進(jìn)一步地,所述負(fù)載信息包括CPU負(fù)載、磁盤負(fù)載、內(nèi)存負(fù)載、并行隊(duì)列長(zhǎng)度及等待隊(duì)列長(zhǎng)度,所述調(diào)度規(guī)則為與所述下載服務(wù)器的實(shí)時(shí)負(fù)載成反比例分配所述離線任務(wù),所述實(shí)時(shí)負(fù)載如下式:F = a*CPU負(fù)載+b*磁盤負(fù)載+c*內(nèi)存負(fù)載+d*并行隊(duì)列長(zhǎng)度+e*等待隊(duì)列長(zhǎng)度其中,a、b、C、d、e為0_1之間的權(quán)重參數(shù),F(xiàn)表示所述實(shí)時(shí)負(fù)載。進(jìn)一步地,還包括統(tǒng)計(jì)服務(wù)器,所述統(tǒng)計(jì)服務(wù)器獲得下載所述離線任務(wù)的下載參數(shù),并根據(jù)所述下載參數(shù)生成流水日志。本發(fā)明還提供一種離線下載的方法,該方法包括以下步驟:下載服務(wù)器根據(jù)其負(fù)載反饋負(fù)載信息;獲取離線任務(wù);根據(jù)所述下載服務(wù)器的所述負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)所述調(diào)度規(guī)則分發(fā)所述離線任務(wù);根據(jù)所述離線任務(wù)從互聯(lián)網(wǎng)中獲取數(shù)據(jù)信息,并進(jìn)行存儲(chǔ);提供所述離線任務(wù)對(duì)應(yīng)的所述數(shù)據(jù)信息,完成離線下載。
進(jìn)一步地,所述根據(jù)所述離線任務(wù)從互聯(lián)網(wǎng)中獲取數(shù)據(jù)信息,并進(jìn)行存儲(chǔ)的步驟包括:獲取所述離線任務(wù)的原始鏈接,根據(jù)所述原始鏈接獲取所述數(shù)據(jù)信息;同步存儲(chǔ)所述數(shù)據(jù)信息,記錄所述數(shù)據(jù)信息存儲(chǔ)的入口地址,并生成映射記錄。進(jìn)一步地,在所述根據(jù)下載服務(wù)器的負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)所述調(diào)度規(guī)則分發(fā)所述離線任務(wù)的步驟中,包括根據(jù)下載協(xié)議將所述離線任務(wù)分發(fā)給相應(yīng)類型的所述下載服務(wù)器的步驟。進(jìn)一步地,所述根據(jù)下載服務(wù)器的負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)所述調(diào)度規(guī)則分發(fā)所述離線任務(wù)的步驟包括:將所述離線任務(wù)與已經(jīng)存在的離線任務(wù)進(jìn)行比較,將已經(jīng)存在的所述離線任務(wù)過濾。進(jìn)一步地,所述根據(jù)下載服務(wù)器的負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)所述調(diào)度規(guī)則分發(fā)所述離線任務(wù)的步驟包括:接收所述負(fù)載信息,并根據(jù)所述負(fù)載信息生成調(diào)度規(guī)則,維護(hù)包含所述下載服務(wù)器的信息的鏈表及所述調(diào)度規(guī)則;及根據(jù)所述調(diào)度規(guī)則及所述鏈表中的信息,將所述離線任務(wù)分發(fā)給所述下載服務(wù)器。進(jìn)一步地,所述負(fù)載 信息包括CPU負(fù)載、磁盤負(fù)載、內(nèi)存負(fù)載、并行隊(duì)列長(zhǎng)度及等待隊(duì)列長(zhǎng)度,所述調(diào)度規(guī)則為與所述下載服務(wù)器的實(shí)時(shí)負(fù)載成反比例分配所述離線任務(wù),所述實(shí)時(shí)負(fù)載如下式:F = a*CPU負(fù)載+b*磁盤負(fù)載+c*內(nèi)存負(fù)載+d*并行隊(duì)列長(zhǎng)度+e*等待隊(duì)列長(zhǎng)度其中,a、b、C、d、e為0_1之間的權(quán)重參數(shù),F(xiàn)表示所述實(shí)時(shí)負(fù)載。進(jìn)一步地,在所述提供所述離線任務(wù)對(duì)應(yīng)的所述數(shù)據(jù)信息,完成離線下載的步驟之后,還包括獲得下載所述離線任務(wù)的下載參數(shù),并根據(jù)所述下載參數(shù)生成流水日志。上述離線下載的系統(tǒng)包括分發(fā)服務(wù)器,下載服務(wù)器將其負(fù)載信息實(shí)時(shí)反饋給所述分發(fā)服務(wù)器,所述分發(fā)服務(wù)器根據(jù)下載服務(wù)器的實(shí)際負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)所述調(diào)度規(guī)則對(duì)離線任務(wù)進(jìn)行分配。對(duì)于負(fù)載程度高的所述下載服務(wù)器,只分發(fā)少量或是不分發(fā)任務(wù),而對(duì)于負(fù)載程度低的所述下載服務(wù)器,則相應(yīng)的多分發(fā)任務(wù)。因此,所述下載服務(wù)器所分發(fā)到的任務(wù)與其實(shí)時(shí)負(fù)載程度相關(guān),有效的提高了下載服務(wù)器利用率、磁盤空間也得到了充分利用。
圖1為一實(shí)施例中離線下載的系統(tǒng)的模塊圖;圖2為圖1所示離線下載的系統(tǒng)下載服務(wù)器集群的詳細(xì)模塊圖;圖3為圖1所示離線下載的系統(tǒng)分發(fā)服務(wù)器的詳細(xì)模塊圖;圖4為一實(shí)施例中離線下載的方法的流程圖;圖5為圖4所示離線下載的方法步驟S230的流程圖;圖6為圖4所示離線下載的方法步驟S240的流程圖。
具體實(shí)施方式在離線下載的系統(tǒng)中,分發(fā)服務(wù)器和實(shí)際下載服務(wù)器存在數(shù)量上的巨大差異,下載服務(wù)器隨著下載需求的變化而變化,目前的方式通常在分發(fā)服務(wù)器上通過配置文件來管理下載服務(wù)器。不方便下載服務(wù)器的擴(kuò)容部署和升級(jí)。一般離線任務(wù)分發(fā)是按照任務(wù)鏈接Hash首字節(jié)區(qū)間范圍分組,但是用戶任務(wù)需求和文件大小對(duì)應(yīng)的分布是非常不均勻的,造成下載服務(wù)器的負(fù)載不均勻。下載服務(wù)器由于是P2p (點(diǎn)對(duì)點(diǎn))軟件的下載,數(shù)據(jù)來源和寫入都是隨機(jī)的,下載服務(wù)器的10(輸入輸出)非常容易成為下載系統(tǒng)的瓶頸,目前的方式只是依據(jù)下載文件鏈接Hash進(jìn)行隨機(jī)分組,實(shí)際的效果依然會(huì)導(dǎo)致部分下載服務(wù)器的磁盤IO成為系統(tǒng)瓶頸,但是下載任務(wù)排隊(duì),無法及時(shí)完成下載;由于P2P網(wǎng)絡(luò)自身的特性,下載是否能夠最終完成和什么時(shí)候能夠下載完成是難以預(yù)期的,導(dǎo)致下載服務(wù)器磁盤的實(shí)際利用和分配情況難以確定,下載任務(wù)調(diào)度分發(fā)的時(shí)候難以知道下載服務(wù)器磁盤負(fù)載的實(shí)際情況。針對(duì)上述原因,如圖1所示,一實(shí)施方式的離線下載的系統(tǒng)100包括下載服務(wù)器集群110、分發(fā)服務(wù)器120及存儲(chǔ)服務(wù)器130。如圖2所示,下載服務(wù)器集群110包括兩個(gè)以上下載服務(wù)器112,所述下載服務(wù)器112根據(jù)其負(fù)載反饋負(fù)載信息及根據(jù)離線任務(wù)從互聯(lián)網(wǎng)中獲取數(shù)據(jù)信息。下載服務(wù)器112根據(jù)下載協(xié)議分為相應(yīng)類型。具體在本實(shí)施例中,下載協(xié)議包括Bt(比特流)、eMule(電驢)及Http (超文本傳輸)三種形式,相應(yīng)的,下載服務(wù)器112包括三種與上述下載協(xié)議匹配的類型。如圖3所示,分發(fā)服務(wù)器120與下載服務(wù)器集群110通信,用于獲得離線任務(wù)。分發(fā)服務(wù)器120包括任務(wù)分類模塊122、過濾模塊124、負(fù)載調(diào)度模塊126及任務(wù)分發(fā)模塊128。任務(wù)分類模塊122將離線任務(wù)根據(jù)下載協(xié)議分發(fā)給對(duì)應(yīng)類型的下載服務(wù)器112。例如,支持下載協(xié)議Bt的 離線任務(wù),任務(wù)分類模塊122會(huì)將其分配給與下載協(xié)議Bt對(duì)應(yīng)的下載服務(wù)器112,而不會(huì)分配給其他類型不適合的下載服務(wù)器112,從而避免下載失敗。過濾模塊124將離線任務(wù)與已經(jīng)存在的離線任務(wù)進(jìn)行比較,將已經(jīng)存在的離線任務(wù)過濾。即同一個(gè)離線任務(wù)只向下載服務(wù)器集群110發(fā)送一次請(qǐng)求,若多個(gè)不同的用戶發(fā)起同一個(gè)離線任務(wù)下載請(qǐng)求,則這些不同的用戶可以共享該共同的離線任務(wù)。負(fù)載調(diào)度模塊126接收下載服務(wù)器112反饋的負(fù)載信息,并根據(jù)負(fù)載信息生成調(diào)度規(guī)則。負(fù)載調(diào)度模塊126維護(hù)包含下載服務(wù)器112的信息的鏈表及調(diào)度規(guī)則。具體到本實(shí)施例中,負(fù)載信息包括CPU負(fù)載、磁盤負(fù)載、內(nèi)存負(fù)載、并行隊(duì)列長(zhǎng)度及等待隊(duì)列長(zhǎng)度。鏈表中的元素為下載服務(wù)器112的信息,具體包括IP地址、端口(port)、下載服務(wù)器標(biāo)識(shí)(server ID)、上次上報(bào)時(shí)間(IastReportTime)及實(shí)時(shí)負(fù)載。負(fù)載調(diào)度模塊126根據(jù)下載服務(wù)器112反饋的負(fù)載信息對(duì)鏈表進(jìn)行更新。在本實(shí)施例中,下載服務(wù)器112以心跳包的形式反饋負(fù)載信息,心跳包每隔10秒發(fā)送一次,以保證鏈表中的信息最新。任務(wù)分發(fā)模塊128根據(jù)調(diào)度規(guī)則及鏈表中的信息,將離線任務(wù)分發(fā)給下載服務(wù)器112。具體在本實(shí)施例中,調(diào)度規(guī)則為:與下載服務(wù)器112的實(shí)時(shí)負(fù)載成反比例分配離線任務(wù)。實(shí)時(shí)負(fù)載如下式:F = a*CPU負(fù)載+b*磁盤負(fù)載+c*內(nèi)存負(fù)載+d*并行隊(duì)列長(zhǎng)度+e*等待隊(duì)列長(zhǎng)度
其中,a、b、c、d、e為0_1之間的權(quán)重參數(shù),F(xiàn)表示實(shí)時(shí)負(fù)載。如圖1所示,存儲(chǔ)服務(wù)器130與下載服務(wù)器集群110通信連接,用于存儲(chǔ)下載服務(wù)器集群120獲得的數(shù)據(jù)信息,并提供數(shù)據(jù)信息的下載。離線下載的系統(tǒng)100還包括離線任務(wù)數(shù)據(jù)庫(kù)140、離線任務(wù)管理器150及統(tǒng)計(jì)服務(wù)器 160。離線任務(wù)數(shù)據(jù)庫(kù)140存儲(chǔ)離線任務(wù)的原始連接。下載服務(wù)器集群110與離線任務(wù)數(shù)據(jù)庫(kù)140通信連接,并從離線任務(wù)數(shù)據(jù)庫(kù)140獲取離線任務(wù)的原始鏈接。下載服務(wù)器集群110將與下載完成的離線任務(wù)對(duì)應(yīng)的數(shù)據(jù)信息的入口地址寫入離線任務(wù)數(shù)據(jù)庫(kù)140,并生成映射記錄。離線任務(wù)管理器150與離線任務(wù)數(shù)據(jù)庫(kù)140及分發(fā)服務(wù)器120通信連接。離線任務(wù)管理器150通過映射記錄判斷離線任務(wù)是否下載完成,若是,則直接提供數(shù)據(jù)信息,否貝U,為離線任務(wù)生成唯一編號(hào),且將其原始鏈接連同編號(hào)寫入離線任務(wù)數(shù)據(jù)庫(kù)140,并將離線任務(wù)提交給分發(fā)服務(wù)器120。統(tǒng)計(jì)服務(wù)器160獲得下載離線任務(wù)的下載參數(shù),并根據(jù)下載參數(shù)生成流水日志。具體在本實(shí)施例中,下載參數(shù)包括下載過程中的URL(網(wǎng)頁地址)下載速度、下載時(shí)間、連通情況、下載結(jié)果及文件大小。生成的流水日志供日后統(tǒng)計(jì)分析。離線下載的系統(tǒng)100的功能實(shí)現(xiàn)過程:負(fù)載調(diào)度模塊126管理下載服務(wù)器112的心跳、注銷及收取其負(fù)載信息。負(fù)載調(diào)度模塊126使用雙緩沖區(qū)(buffer)的實(shí)現(xiàn)方式把下載服務(wù)器112的信息傳給任務(wù)分發(fā)模塊128。當(dāng)負(fù)載調(diào)度模塊126把數(shù)據(jù)寫入第一塊buffer時(shí),任務(wù)分發(fā)模塊128讀第二塊buffer的數(shù)據(jù)。當(dāng)負(fù)載調(diào)度模塊126寫完后,任務(wù)分發(fā)模塊128開始讀第一塊buffer的數(shù)據(jù),負(fù)載調(diào)度模塊126轉(zhuǎn)·而把數(shù)據(jù)寫入第二塊buffer。負(fù)載調(diào)度模塊126維護(hù)一個(gè)鏈表,鏈表中每個(gè)元素為下載服務(wù)器112的信息,包括IP地址、端口(port)、下載服務(wù)器標(biāo)識(shí)(server ID)、上次上報(bào)時(shí)間(IastReportTime)及實(shí)時(shí)負(fù)載,其中serverlD為64位無符號(hào)的整型,高字節(jié)為IP,低字節(jié)為port。同時(shí)再對(duì)鏈表的元素做hash索引,key (關(guān)鍵碼)為serverlD.這樣既可以保持遍歷順序,又可以快速索引到某個(gè)元素。下載服務(wù)器112向負(fù)載調(diào)度模塊126發(fā)起心跳,上報(bào)負(fù)載信息:下載服務(wù)器112向負(fù)載調(diào)度模塊126發(fā)起心跳,同時(shí)把負(fù)載信息攜帶在心跳包中。心跳包每10秒鐘一次。當(dāng)負(fù)載調(diào)度模塊126收到心跳包,查詢下載服務(wù)器信息集合(serverlnfoSet)中是否有下載服務(wù)器信息(serverlnfo)。若沒有則新插入一個(gè)下載服務(wù)器信息(serverlnfo)。比較新的負(fù)載信息是否和原來的是否不同。若不同則需要置標(biāo)記,說明有不同的負(fù)載信息,在下次和任務(wù)分發(fā)模塊128通信時(shí)需使其更新。若出現(xiàn)過載信息(如磁盤負(fù)載大于85%,磁盤空間,CPU,內(nèi)存,并行隊(duì)列長(zhǎng)度,等待隊(duì)列長(zhǎng)度超過閾值),需要立即通知任務(wù)分發(fā)模塊128。下載服務(wù)器112向負(fù)載調(diào)度模塊126注銷:當(dāng)負(fù)載調(diào)度模塊126收到下載機(jī)注銷請(qǐng)求,把此下載服務(wù)器的下載服務(wù)器信息從下載服務(wù)器信息集合中刪除,置標(biāo)記需要更新共享內(nèi)存,并立即通知任務(wù)分發(fā)模塊128。下載服務(wù)器112心跳包超時(shí):負(fù)載調(diào)度模塊126每隔十秒會(huì)遍歷一次下載服務(wù)器信息集合,把心跳包超時(shí)的下載服務(wù)器112從下載服務(wù)器信息集合中刪除,置標(biāo)記需要更新。負(fù)載調(diào)度模塊126和任務(wù)分發(fā)模塊128通信:負(fù)載調(diào)度模塊126在更新時(shí)把下載服務(wù)器信息集合中所有數(shù)據(jù)寫入buffer中,然后在buffer中以置標(biāo)記來通知任務(wù)分發(fā)模塊128讀取數(shù)據(jù)。更新的時(shí)機(jī)除了下載服務(wù)器112負(fù)載信息出現(xiàn)過載信息和下載機(jī)注銷兩種情況下,還有一種情況:每隔10秒,在清理完心跳包超時(shí)的下載服務(wù)器112后,會(huì)檢查是否需要更新,需要更新則通知任務(wù)分發(fā)模塊128。所以在正常情況下,負(fù)載調(diào)度模塊126和任務(wù)分發(fā)模塊128每10秒通信一次。任務(wù)分發(fā)模塊128在主循環(huán)中每次會(huì)檢查buffer中的標(biāo)記,若標(biāo)記為真(true),則從buffer中讀取出下載服務(wù)器112信息。具體調(diào)度實(shí)現(xiàn):基于Hash號(hào)段,按照下載服務(wù)器112的能力比率調(diào)度,如果某臺(tái)下載服務(wù)器112分配比率設(shè)置為0,不再調(diào)度任務(wù)到該臺(tái)服務(wù)器下載。當(dāng)前方案按照下載鏈接Hash首字節(jié)分配:0-255,現(xiàn)在有4臺(tái)下載服務(wù)器A、B、C、D。默認(rèn)調(diào)度分配就是隨機(jī)瓶頸A分配(0-255)的25%,B, C,D分配的一樣,對(duì)應(yīng)的規(guī)則就是:A 0-63B 64-127C 128-192D 193-255如果這個(gè)時(shí)候有第5臺(tái)下載服務(wù)器112,機(jī)器(E)注冊(cè)進(jìn)來,在不考慮其負(fù)載權(quán)重的情況下,每臺(tái)下載服務(wù)器112分配的負(fù)載是20%,那么對(duì)應(yīng)的規(guī)則就變成A 0-51B 52-101C 102-153D 154-204E 205-255當(dāng)其中某一臺(tái)下載服務(wù)器112的心跳包超時(shí),發(fā)生反注冊(cè)。就不再向這臺(tái)下載服務(wù)器112添加新的下載任務(wù),上述5臺(tái)機(jī)器退化到4臺(tái)。此時(shí)負(fù)載調(diào)度模塊126根據(jù)負(fù)載信息計(jì)算下載服務(wù)器112實(shí)時(shí)負(fù)載,并更新其維護(hù)的鏈表。任務(wù)分發(fā)模塊128從負(fù)載調(diào)度模塊126讀取鏈表信息,并根據(jù)調(diào)度規(guī)則進(jìn)行任務(wù)調(diào)度。實(shí)時(shí)負(fù)載如下式:F = a*CPU負(fù)載+b*磁盤負(fù)載+c*內(nèi)存負(fù)載+d*并行隊(duì)列長(zhǎng)度+e*等待隊(duì)列長(zhǎng)度其中,a、b、c、d、e為0_1之間的權(quán)重參數(shù),F(xiàn)表示實(shí)時(shí)負(fù)載。下載服務(wù)器都會(huì)按照同樣的規(guī)則上報(bào)一個(gè)值給任務(wù)分發(fā)模塊128,值的大小標(biāo)識(shí)這個(gè)服務(wù)器當(dāng)前的負(fù)載能力, 值越大表示當(dāng)前的負(fù)載能力越小。任務(wù)分發(fā)模塊128按照每臺(tái)下載服務(wù)器當(dāng)前的負(fù)載能力來成比例調(diào)度,如果當(dāng)前的負(fù)載能力為0,就不會(huì)有任務(wù)調(diào)度到該下載服務(wù)器上。如圖4所示,本發(fā)明還提供一種離線下載的方法,該離線下載的方法包括步驟S210 S250:步驟S210:下載服務(wù)器112根據(jù)其負(fù)載反饋負(fù)載信息。具體在本實(shí)施例中,負(fù)載信息包括負(fù)載信息包括CPU負(fù)載、磁盤負(fù)載、內(nèi)存負(fù)載、并行隊(duì)列長(zhǎng)度及等待隊(duì)列長(zhǎng)度。下載服務(wù)器112以心跳包的形式反饋負(fù)載信息,心跳包每隔10秒發(fā)送一次??梢岳斫猓?fù)載信息不限于上述幾項(xiàng),可根據(jù)下載服務(wù)器的實(shí)際情況選擇相應(yīng)的參數(shù)作為負(fù)載信息。另外,心跳包的發(fā)送的時(shí)間間隔不限于10秒,間隔越短,負(fù)載信息的更新越快,但在一定的范圍內(nèi)均能達(dá)到要求。步驟S220:獲取離線任務(wù)。離線任務(wù)一般由用戶在使用離線下載的系統(tǒng)時(shí)提供,離線任務(wù)包含視頻、音頻及文字等各種類型。根據(jù)目前主流的下載協(xié)議,離線任務(wù)可分為基于Bt、eMule及Http的三種類型。步驟S230:根據(jù)下載服務(wù)器的負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)調(diào)度規(guī)則分發(fā)離線任務(wù)。如圖5所示,在本實(shí)施例中,步驟S230的具體過程為:步驟S310:將離線任務(wù)與已經(jīng)存在的離線任務(wù)進(jìn)行比較,將已經(jīng)存在的離線任務(wù)過濾。即同一個(gè)離線任務(wù)只向下載服務(wù)器集群110發(fā)送一次請(qǐng)求,若多個(gè)不同的用戶發(fā)起同一個(gè)離線任務(wù)下載請(qǐng)求,則這些不同的用戶可以共享該共同的離線任務(wù)。步驟S320:根據(jù)下載協(xié)議將離線任務(wù)分發(fā)給相應(yīng)類型的所述下載服務(wù)器。如步驟S220所提到的,獲取的離線任務(wù)包括基于Bt、eMule及Http下載協(xié)議的三種類型。需要將不同類型的離線任務(wù)分發(fā)給對(duì)應(yīng)類型的下載服務(wù)器112,才能保證下載不出錯(cuò)。步驟S330:接收所述負(fù)載信息,并根據(jù)負(fù)載信息生成調(diào)度規(guī)則,維護(hù)包含了每個(gè)所述下載服務(wù)器的信息的鏈表及調(diào)度規(guī)則。鏈表中的元素為下載服務(wù)器112的信息,具體包括IP地址、端口(port)、下載服務(wù)器標(biāo)識(shí)(server ID)、上次上報(bào)時(shí)間(IastReportTime)及實(shí)時(shí)負(fù)載。并且鏈表根 據(jù)下載服務(wù)器112反饋的負(fù)載信息對(duì)鏈表進(jìn)行更新。具體在本實(shí)施例中,調(diào)度規(guī)則為:與下載服務(wù)器的實(shí)時(shí)負(fù)載成反比例分配離線任務(wù)。實(shí)時(shí)負(fù)載如下式:F = a*CPU負(fù)載+b*磁盤負(fù)載+c*內(nèi)存負(fù)載+d*并行隊(duì)列長(zhǎng)度+e*等待隊(duì)列長(zhǎng)度其中,a、b、C、d、e為0_1之間的權(quán)重參數(shù),F(xiàn)表示所述實(shí)時(shí)負(fù)載。步驟S340:根據(jù)調(diào)度規(guī)則及鏈表中的信息,將離線任務(wù)分發(fā)給下載服務(wù)器112。讀取鏈表中的數(shù)據(jù),獲得通過注冊(cè)的下載服務(wù)器112的信息,根據(jù)每個(gè)下載服務(wù)器112的實(shí)時(shí)負(fù)載分配離線任務(wù)。具體過程為:通過遍歷鏈表中的信息,獲得每個(gè)下載服務(wù)器112的實(shí)時(shí)負(fù)載,通過調(diào)度規(guī)則計(jì)算每個(gè)下載服務(wù)器應(yīng)分配的離線任務(wù),將計(jì)算結(jié)果與下載服務(wù)器112的IP對(duì)應(yīng),然后根據(jù)下載服務(wù)器112的IP地址,準(zhǔn)確的將離線下載任務(wù)分發(fā)到下載服務(wù)器112。步驟S240:根據(jù)離線任務(wù)從互聯(lián)網(wǎng)中獲取數(shù)據(jù)信息,并進(jìn)行存儲(chǔ)。當(dāng)下載服務(wù)器獲得離線任務(wù)后,便可從互聯(lián)網(wǎng)中獲取數(shù)據(jù),獲取完數(shù)據(jù)后,由于用戶不能立即取走,而且為了后續(xù)避免重復(fù)下載,故需存儲(chǔ)。如圖6所示,在本實(shí)施例中,步驟S240的具體過程為:步驟S410:獲取離線任務(wù)的原始鏈接,根據(jù)原始鏈接獲取數(shù)據(jù)信息。每一個(gè)離線任務(wù)都有一個(gè)原始鏈接,在獲取離線任務(wù)時(shí),為離線任務(wù)分配唯一編號(hào),并將編號(hào)及原始鏈接存儲(chǔ)于數(shù)據(jù)庫(kù)中。下載服務(wù)器112分配得到離線任務(wù)后,就根據(jù)離線任務(wù)的編號(hào)在數(shù)據(jù)庫(kù)中查找對(duì)應(yīng)的原始鏈接。
步驟S420:同步存儲(chǔ)數(shù)據(jù)信息,記錄數(shù)據(jù)信息存儲(chǔ)的入口地址,并生成映射記錄。當(dāng)離線任務(wù)下載完成后,其對(duì)應(yīng)的數(shù)據(jù)信息將會(huì)存儲(chǔ)于存儲(chǔ)服務(wù)器130中,為了方便查找數(shù)據(jù)信息,每個(gè)下載完成的數(shù)據(jù)信息都具有唯一的索引,具體在本實(shí)施例中為Hash結(jié)果。步驟S250:提供離線任務(wù)對(duì)應(yīng)的數(shù)據(jù)信息,完成離線下載。當(dāng)用戶需要下載離線任務(wù)對(duì)應(yīng)的數(shù)據(jù)信息,首先通過索引及Hash結(jié)果查找到該數(shù)據(jù)信息,然后讀取該數(shù)據(jù)信息存儲(chǔ)的入口地址,并反饋給用戶,用戶根據(jù)該入口地址就能夠下載到所需要的數(shù)據(jù)信息。另外,在完成離線下載的步驟之后,還包括獲得下載離線任務(wù)的下載參數(shù),并根據(jù)所述下載參數(shù)生成流水日志的步驟。具體在本實(shí)施例中,下載參數(shù)包括下載過程中的URL下載速度、下載時(shí)間、連通情況、下載結(jié)果及文件大小。需要指出的是,該步驟只是為了生成的流水日志供日后統(tǒng)計(jì)分析。對(duì)于完成離線下載沒有影響。上述離線下載的方法的具體實(shí)現(xiàn)過程與離線下載的系統(tǒng)100的功能實(shí)現(xiàn)過程相似,這里不再贅述。離線下載的系統(tǒng)100包括分發(fā)服務(wù)器120,下載服務(wù)器112將其負(fù)載信息反饋給分發(fā)服務(wù)器120,分發(fā)服務(wù)器120根據(jù)下載服務(wù)器112的實(shí)際負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)調(diào)度規(guī)則對(duì)離線任務(wù)進(jìn)行分配。對(duì)于負(fù)載程度高的下載服務(wù)器112,只分發(fā)少量或是不分發(fā)任務(wù),而對(duì)于負(fù)載程度低的下載服務(wù)器112,則相應(yīng)的多分發(fā)任務(wù)。因此,下載服務(wù)器112所分發(fā)到的任務(wù)與其實(shí)時(shí)負(fù)載程度相關(guān),有效的提高了下載服務(wù)器112利用率、磁盤空間也得到了充分利用。 以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種離線下載的系統(tǒng),其特征在于,包括: 下載服務(wù)器集群,所述下載服務(wù)器集群包括兩個(gè)以上下載服務(wù)器,所述下載服務(wù)器根據(jù)其負(fù)載反饋負(fù)載信息及根據(jù)離線任務(wù)從互聯(lián)網(wǎng)中獲取數(shù)據(jù)信息; 分發(fā)服務(wù)器,獲得所述離線任務(wù),所述分發(fā)服務(wù)器與所述下載服務(wù)器集群通信,接收所述負(fù)載信息并根據(jù)所述負(fù)載信息生成調(diào)度規(guī)則,所述分發(fā)服務(wù)器根據(jù)所述調(diào)度規(guī)則將所述離線任務(wù)分發(fā)給所述下載服務(wù)器;及 存儲(chǔ)服務(wù)器,與所述下載服務(wù)器集群通信連接,用于存儲(chǔ)所述下載服務(wù)器集群獲得的所述數(shù)據(jù)信息,并提供所述數(shù)據(jù)信息的下載。
2.如權(quán)利要求1所述的離線下載的系統(tǒng),其特征在于,還包括: 離線任務(wù)數(shù)據(jù)庫(kù),存儲(chǔ)所述離線任務(wù)的原始連接,所述下載服務(wù)器集群與所述離線任務(wù)數(shù)據(jù)庫(kù)通信連接,并從所述離線任務(wù)數(shù)據(jù)庫(kù)獲取所述離線任務(wù)的原始鏈接,所述下載服務(wù)器集群將與下載完成的離線任務(wù)對(duì)應(yīng)的數(shù)據(jù)信息的入口地址寫入所述離線任務(wù)數(shù)據(jù)庫(kù),并生成映射記錄;及 離線任務(wù)管理器,與所述離線任務(wù)數(shù)據(jù)庫(kù)及所述分發(fā)服務(wù)器通信連接,所述離線任務(wù)管理器通過所述映射記錄判斷所述離線任務(wù)是否下載完成,若是,則直接提供所述數(shù)據(jù)信息,否則,為所述離線任務(wù)生成唯一編號(hào),且將其原始鏈接連同所述編號(hào)寫入所述離線任務(wù)數(shù)據(jù)庫(kù),并將所述離線任務(wù)提交給所述分發(fā)服務(wù)器。
3.如權(quán)利要求1所述的離線下載的系統(tǒng),其特征在于,所述下載服務(wù)器根據(jù)下載協(xié)議分為相應(yīng)類型,所述 分發(fā)服務(wù)器包括任務(wù)分類模塊,所述任務(wù)分類模塊將所述離線任務(wù)根據(jù)下載協(xié)議分發(fā)給對(duì)應(yīng)類型的所述下載服務(wù)器。
4.如權(quán)利要求1所述的離線下載的系統(tǒng),其特征在于,所述分發(fā)服務(wù)器包括過濾模塊,所述過濾模塊將所述離線任務(wù)與已經(jīng)存在的離線任務(wù)進(jìn)行比較,將已經(jīng)存在的所述離線任務(wù)過濾。
5.如權(quán)利要求1所述的離線下載的系統(tǒng),其特征在于,所述分發(fā)服務(wù)器包括: 負(fù)載調(diào)度模塊,接收所述負(fù)載信息,并根據(jù)所述負(fù)載信息生成調(diào)度規(guī)則,所述負(fù)載調(diào)度模塊維護(hù)包含所述下載服務(wù)器的信息的鏈表及所述調(diào)度規(guī)則;及 任務(wù)分發(fā)模塊,根據(jù)所述調(diào)度規(guī)則及所述鏈表中的信息,將所述離線任務(wù)分發(fā)給所述下載服務(wù)器。
6.如權(quán)利要求5所述的離線下載的系統(tǒng),其特征在于,所述負(fù)載信息包括CPU負(fù)載、磁盤負(fù)載、內(nèi)存負(fù)載、并行隊(duì)列長(zhǎng)度及等待隊(duì)列長(zhǎng)度,所述調(diào)度規(guī)則為與所述下載服務(wù)器的實(shí)時(shí)負(fù)載成反比例分配所述離線任務(wù),所述實(shí)時(shí)負(fù)載如下式: F = a*CPU負(fù)載+b*磁盤負(fù)載+c*內(nèi)存負(fù)載+d*并行隊(duì)列長(zhǎng)度+e*等待隊(duì)列長(zhǎng)度 其中,a、b、C、d、e為0-1之間的權(quán)重參數(shù),F(xiàn)表示所述實(shí)時(shí)負(fù)載。
7.如權(quán)利要求1所述的離線下載的系統(tǒng),其特征在于,還包括統(tǒng)計(jì)服務(wù)器,所述統(tǒng)計(jì)服務(wù)器獲得下載所述離線任務(wù)的下載參數(shù),并根據(jù)所述下載參數(shù)生成流水日志。
8.一種離線下載的方法,其特征在于,包括以下步驟: 下載服務(wù)器根據(jù)其負(fù)載反饋負(fù)載信息; 獲取離線任務(wù); 根據(jù)所述下載服務(wù)器的所述負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)所述調(diào)度規(guī)則分發(fā)所述離線任務(wù); 根據(jù)所述離線任務(wù)從互聯(lián)網(wǎng)中獲取數(shù)據(jù)信息,并進(jìn)行存儲(chǔ); 提供所述離線任務(wù)對(duì)應(yīng)的所述數(shù)據(jù)信息,完成離線下載。
9.如權(quán)利要求8所述的離線下載的方法,其特征在于,所述根據(jù)所述離線任務(wù)從互聯(lián)網(wǎng)中獲取數(shù)據(jù)信息,并進(jìn)行存儲(chǔ)的步驟包括: 獲取所述離線任務(wù)的原始鏈接,根據(jù)所述原始鏈接獲取所述數(shù)據(jù)信息; 同步存儲(chǔ)所述數(shù)據(jù)信息,記錄所述數(shù)據(jù)信息存儲(chǔ)的入口地址,并生成映射記錄。
10.如權(quán)利要求8所述的離線下載的方法,其特征在于,在所述根據(jù)下載服務(wù)器的負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)所述調(diào)度規(guī)則分發(fā)所述離線任務(wù)的步驟中,包括根據(jù)下載協(xié)議將所述離線任務(wù)分發(fā)給相應(yīng)類型的所述下載服務(wù)器的步驟。
11.如權(quán)利要求8所述的離線下載的方法,其特征在于,所述根據(jù)下載服務(wù)器的負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)所述調(diào)度規(guī)則分發(fā)所述離線任務(wù)的步驟包括: 將所述離線任務(wù)與已經(jīng)存在的離線任務(wù)進(jìn)行比較,將已經(jīng)存在的所述離線任務(wù)過濾。
12.如權(quán)利要求8所述的離線下載的方法,其特征在于,所述根據(jù)下載服務(wù)器的負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)所述調(diào)度規(guī)則分發(fā)所述離線任務(wù)的步驟包括: 接收所述負(fù)載信息,并根據(jù)所述負(fù)載信息生成調(diào)度規(guī)則,維護(hù)包含所述下載服務(wù)器的信息的鏈表及所述調(diào)度規(guī)則;及 根據(jù)所述調(diào)度規(guī)則及所述鏈表中的信息,將所述離線任務(wù)分發(fā)給所述下載服務(wù)器。
13.如權(quán)利要求12所述的離線下載的方法,其特征在于,所述負(fù)載信息包括CPU負(fù)載、磁盤負(fù)載、內(nèi)存負(fù)載、并行隊(duì)列長(zhǎng)度及等待隊(duì)列長(zhǎng)度,所述調(diào)度規(guī)則為與所述下載服務(wù)器的實(shí)時(shí)負(fù)載成反比例分配所述離線任務(wù),所述實(shí)時(shí)負(fù)載如下式: F = a*CPU負(fù)載+b*磁盤負(fù)載+c*內(nèi)存負(fù)載+d*并行隊(duì)列長(zhǎng)度+e*等待隊(duì)列長(zhǎng)度 其中,a、b、C、d、e為0-1之間的權(quán)重參數(shù),F(xiàn)表示所述實(shí)時(shí)負(fù)載。
14.如權(quán)利要求8所述的離線下載的方法,其特征在于,在所述提供所述離線任務(wù)對(duì)應(yīng)的所述數(shù)據(jù)信息,完成離線下載的步驟之后,還包括獲得下載所述離線任務(wù)的下載參數(shù),并根據(jù)所述下載參數(shù)生成流水日志。
全文摘要
一種離線下載的系統(tǒng)包括下載服務(wù)器集群、分發(fā)服務(wù)器及存儲(chǔ)服務(wù)器。下載服務(wù)器集群包括兩個(gè)以上下載服務(wù)器,所述下載服務(wù)器根據(jù)其負(fù)載反饋負(fù)載信息及根據(jù)離線任務(wù)從互聯(lián)網(wǎng)中獲取數(shù)據(jù)信息。下載服務(wù)器獲取的數(shù)據(jù)信息儲(chǔ)存在存儲(chǔ)服務(wù)器。分發(fā)服務(wù)器與所述下載服務(wù)器集群通信,可根據(jù)下載服務(wù)器的實(shí)際負(fù)載信息生成調(diào)度規(guī)則,并根據(jù)所述調(diào)度規(guī)則對(duì)離線任務(wù)進(jìn)行分配。對(duì)于負(fù)載程度高的所述下載服務(wù)器,只分發(fā)少量或是不分發(fā)任務(wù),而對(duì)于負(fù)載程度低的所述下載服務(wù)器,則相應(yīng)的多分發(fā)任務(wù)。因此,所述下載服務(wù)器所分發(fā)到的任務(wù)與其實(shí)時(shí)負(fù)載程度相關(guān),有效的提高了下載服務(wù)器利用率、磁盤空間也得到了充分利用。本發(fā)明還提供一種離線下載的方法。
文檔編號(hào)H04L29/08GK103248636SQ20121002447
公開日2013年8月14日 申請(qǐng)日期2012年2月3日 優(yōu)先權(quán)日2012年2月3日
發(fā)明者劉剛, 莊慶 申請(qǐng)人:深圳市騰訊計(jì)算機(jī)系統(tǒng)有限公司