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