專利名稱:文件下載方法、系統(tǒng)及cdn中的服務(wù)器節(jié)點(diǎn)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)應(yīng)用領(lǐng)域,具體涉及一種⑶N (Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò))中的服務(wù)器節(jié)點(diǎn)、一種文件下載系統(tǒng)以及文件下載方法。
背景技術(shù):
由于種種原因,下載服務(wù)器中往往會缺少一些文件。當(dāng)用戶訪問這些不存在的文件時,文件下載器會返回相應(yīng)文件缺失的響應(yīng)消息,例如,若文件下載服務(wù)器是HTTP(Hypertext transfer protocol,超文本傳輸協(xié)議)服務(wù)器,則HTTP服務(wù)器會返回狀態(tài)碼為404的響應(yīng)。為了防止缺失文件這種狀況發(fā)生,提高用戶訪問質(zhì)量,下載服務(wù)器會在其他服務(wù)器上抓取缺失文件。目前架構(gòu)中,缺失文件存在于哪些服務(wù)器上對于下載服務(wù)器而言是未知的。目前,應(yīng)用較為廣泛的技術(shù),是建立一個離線源服務(wù)器集群,在集群中存儲有大量文件。集群本身不在線提供下載服務(wù),由下載服務(wù)器回源服務(wù)器集群抓取其所缺失的文件。由于源服務(wù)器集群不對外提供下載服務(wù),為了避免過多的資源浪費(fèi),因而集群規(guī)模往往較小。但是,較小的集群規(guī)模會造成回源下載速度較慢,同時,由于回源下載速度無法保證,回源次數(shù)會更多,因而源服務(wù)器的壓力會更大。另外,若源服務(wù)器集群發(fā)生故障時,下載服務(wù)器回源失敗,用戶訪問質(zhì)量無法保證。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便`提供一種克服上述問題或者至少部分地解決上述問題的CDN中的服務(wù)器節(jié)點(diǎn)、文件下載系統(tǒng)以及相應(yīng)的文件下載方法。依據(jù)本發(fā)明的一個方面,提供了一種CDN中的服務(wù)器節(jié)點(diǎn),該服務(wù)器節(jié)點(diǎn)包括:文件存儲器,配置為存儲一個或者多個文件;文件下載器,配置為接收文件信息,從文件索引信息服務(wù)器中獲取該文件的索引信息;并且從索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件;以及文件請求處理器,配置為接收客戶端發(fā)送的文件請求,從文件存儲器中查找與該文件請求相對應(yīng)的文件,當(dāng)查找到相應(yīng)文件時,將該文件返回到客戶端;當(dāng)未查找到相應(yīng)文件時,將該文件信息發(fā)送給文件下載器,以便經(jīng)由文件下載器來下載相應(yīng)文件并返回所下載的文件到客戶%5。可選地,該服務(wù)器節(jié)點(diǎn)還可以包括:文件監(jiān)控器,配置為監(jiān)控文件存儲器中的各文件;若文件發(fā)生了變化,則將相應(yīng)的文件信息發(fā)送到文件索引信息服務(wù)器??蛇x地,相應(yīng)的文件信息包括下列至少之一:本地主機(jī)名、IP地址、文件大小、文件的摘要信息、修改時間??蛇x地,文件索引信息服務(wù)器中存儲的索引信息包括下列至少之一:文件大小、內(nèi)容、md5值、文件所在服務(wù)器名稱、文件所在服務(wù)器地址??蛇x地,索引信息的存儲格式為關(guān)鍵字-值key-value格式。
可選地,文件下載器還配置為向文件索引信息服務(wù)器發(fā)出查詢請求,其中,查詢請求包括該服務(wù)器節(jié)點(diǎn)的主機(jī)名以及該文件的文件路徑的md5值;以及接收文件索引信息服務(wù)器返回的響應(yīng)消息,其中,響應(yīng)消息的內(nèi)容包括具有該文件的服務(wù)器節(jié)點(diǎn)信息以及文件大小信息??蛇x地,文件下載器還配置為:若多個服務(wù)器節(jié)點(diǎn)中都存儲有相應(yīng)文件,則將該文件分割為多份,分別從每個服務(wù)器節(jié)點(diǎn)下載分割生成的部分文件;以及在下載結(jié)束后,對從各個服務(wù)節(jié)點(diǎn)中下載的部分文件進(jìn)行組合,生成完整文件??蛇x地,文件下載器還配置為:若從文件索引信息服務(wù)器中未獲取到下載文件的索引信息,從源服務(wù)器集群中下載相應(yīng)的文件。依據(jù)本發(fā)明的另一個方面,還提供了一種文件下載系統(tǒng),包括上述任一項(xiàng)的⑶N中的服務(wù)器節(jié)點(diǎn),還包括多個客戶端以及文件索引信息服務(wù)器,其中客戶端,配置為發(fā)送文件請求至服務(wù)器節(jié)點(diǎn);文件索引信息服務(wù)器,配置為當(dāng)服務(wù)器節(jié)點(diǎn)在本地未能查找到客戶端請求訪問的文件時,根據(jù)服務(wù)器節(jié)點(diǎn)的查詢請求提供相應(yīng)文件的索引信息,以便服務(wù)器節(jié)點(diǎn)從索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件。可選地,該系 統(tǒng)還包括源服務(wù)器集群,該源服務(wù)器集群中存儲有客戶端請求訪問的文件,服務(wù)器節(jié)點(diǎn)還配置為當(dāng)從文件索引信息服務(wù)器未獲取到相應(yīng)文件的索引信息時,從源服務(wù)器集群下載客戶端請求訪問的文件。依據(jù)本發(fā)明的另一個方面,還提供了一種文件下載方法,包括:接收客戶端發(fā)送的文件請求并解析,查找與該文件請求相對應(yīng)的文件;當(dāng)查找到相應(yīng)文件時,將該文件返回到客戶端;當(dāng)未查找到相應(yīng)文件時,從文件索引信息服務(wù)器中獲取該文件的索引信息;從索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件以便返回所下載的文件到客戶端??蛇x地,上述方法還包括:監(jiān)控各服務(wù)器節(jié)點(diǎn)本地存儲的各文件狀態(tài);若文件狀態(tài)發(fā)生了變化,則將相應(yīng)的文件信息通知發(fā)送到文件索引信息服務(wù)器??蛇x地,在根據(jù)本發(fā)明的方法中,從文件索引信息服務(wù)器中獲取該文件的索引信息的步驟包括:向文件索引信息服務(wù)器發(fā)出查詢請求,其中,查詢請求包括該服務(wù)器節(jié)點(diǎn)的主機(jī)名以及該文件的文件路徑的md5值;以及接收文件索引信息服務(wù)器返回的響應(yīng)消息,其中,響應(yīng)消息的內(nèi)容包括具有該文件的服務(wù)器節(jié)點(diǎn)信息、以及文件大小信息??蛇x地,在根據(jù)本發(fā)明的方法中,從索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件的步驟包括:若多個服務(wù)器節(jié)點(diǎn)中都存儲有客戶端請求訪問的相應(yīng)文件,則將該文件分割為多份,分別從每個服務(wù)器節(jié)點(diǎn)下載分割生成的部分文件,并且在多個服務(wù)器節(jié)點(diǎn)中同時進(jìn)行多路下載;以及在下載結(jié)束后,對從各個服務(wù)節(jié)點(diǎn)中下載的部分文件進(jìn)行組合,生成完整文件。可選地,根據(jù)本發(fā)明的方法還包括:若從文件索引信息服務(wù)器中未獲取到下載文件的索引信息,從源服務(wù)器集群中下載相應(yīng)的文件。采用本發(fā)明實(shí)施例提供的方案,服務(wù)器節(jié)點(diǎn)能夠從文件索引信息服務(wù)器中獲知下載文件具體位于哪些服務(wù)器節(jié)點(diǎn)中,不需要每次均回源到源服務(wù)器集群中抓取或下載相應(yīng)文件,提高了服務(wù)器節(jié)點(diǎn)下載文件的速度以及效率,同時緩解了對源服務(wù)器集群的壓力,節(jié)省了下載資源。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式
。
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:圖1示出了根據(jù)本發(fā)明一個實(shí)施例的CDN網(wǎng)絡(luò)中文件下載系統(tǒng)的結(jié)構(gòu)框圖;圖2示出了根據(jù)本發(fā)明一個實(shí)施例的文件下載系統(tǒng)的網(wǎng)絡(luò)環(huán)境示意圖;圖3示出了根據(jù)本發(fā)明一個實(shí)施例的文件下載方法的處理流程圖;以及圖4示出了根據(jù)本發(fā)明一個實(shí)施例的從文件索引信息服務(wù)器中獲取該文件的索引信息的處理流程圖。
具體實(shí)施例方式在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了 CDN網(wǎng)絡(luò)中的文件下載系統(tǒng),利用該系統(tǒng),可以方便在文件下載系統(tǒng)中的服務(wù)器節(jié)點(diǎn)進(jìn)行文件下載。圖1示出了根據(jù)本發(fā)明一個實(shí)施例的CDN網(wǎng)絡(luò)中文件下載系統(tǒng)的結(jié)構(gòu)框圖。參見圖1,該系統(tǒng)中至少包括多個服務(wù)器節(jié)點(diǎn)以及多個客戶端,將服務(wù)器節(jié)點(diǎn)分別標(biāo)號為
11-1N,客戶端分別標(biāo)號為21-2N。此處的標(biāo)號僅僅是用于區(qū)別不同的主體,對于主體本身并不會起到限定作用。在本發(fā)明實(shí)施例中,客戶端2i (I ^ i ^ N)發(fā)送文件請求至服務(wù)器節(jié)點(diǎn)Ij(I ^ j ^ N),請求下載文件請求相應(yīng)的文件。若服務(wù)器節(jié)點(diǎn)Ij上存在相應(yīng)文件,則直接將相應(yīng)文件輸出給客戶端2i。若服務(wù)器節(jié)點(diǎn)Ij上不存在相應(yīng)文件,此時,服務(wù)器節(jié)點(diǎn)Ij就需要到其他的服務(wù)器節(jié)點(diǎn)上下載相應(yīng)文件。多個客戶端可以在同一個服務(wù)器節(jié)點(diǎn)上下載文件,因此,如圖1所示,客戶端21-2N均與服務(wù)器節(jié)點(diǎn)11相耦合。由于服務(wù)器節(jié)點(diǎn)較多,但各服務(wù)器節(jié)點(diǎn)的功能以及構(gòu)架均相同,因此本發(fā)明實(shí)施例僅以服務(wù)器節(jié)點(diǎn)11為例進(jìn)行詳細(xì)說明。在本例中,假設(shè)客戶端21向服務(wù)器節(jié)點(diǎn)11發(fā)起文件請求。參見圖1,服務(wù)器節(jié)點(diǎn)11中設(shè)置有文件請求處理器111,用于實(shí)現(xiàn)服務(wù)器節(jié)點(diǎn)11與客戶端21間的信息交互。文件請求處理器111接收到客戶端21發(fā)送的文件請求,在服務(wù)器節(jié)點(diǎn)11內(nèi)部,即文件存儲器112中查找是否存儲有相應(yīng)的文件。若服務(wù)器 節(jié)點(diǎn)11中存儲有客戶端21請求下載的文件,則由文件請求處理器111從文件存儲器112中獲取相應(yīng)的文件并將其傳輸給客戶端21即可。參見圖1,服務(wù)器節(jié)點(diǎn)11中設(shè)置有文件存儲器112,用于存儲一個或者多個文件。由此可見,文件存儲器112用于存儲文件。例如,圖1中文件存儲器112中存儲有文件1、文件2以及文件3。若服務(wù)器節(jié)點(diǎn)11接收或下載或抓取到其他相應(yīng)文件,可以將其放置在文件存儲器112中進(jìn)行存儲。相應(yīng)的,若其他服務(wù)器節(jié)點(diǎn)到本服務(wù)器節(jié)點(diǎn)11中下載或抓取相應(yīng)文件,則服務(wù)器節(jié)點(diǎn)11會在文件存儲器112中查詢是否存在相應(yīng)文件,進(jìn)而進(jìn)行文件獲取。在本發(fā)明實(shí)施例,文件請求處理器111與文件存儲器112相耦接,從文件存儲器112中獲取相應(yīng)文件傳輸給客戶端21??紤]到文件存儲器112的功能,可以利用硬盤、閃存、記憶棒等存儲介質(zhì)實(shí)現(xiàn)該器件功能。文件存儲器112中可存儲的文件的數(shù)量取決于存儲介質(zhì)的性質(zhì)以及容量。本發(fā)明不受限于文件存儲器112的具體實(shí)現(xiàn)方式,任何可以存儲文件的文件存儲器都在本發(fā)明的保護(hù)范圍之內(nèi)。若服務(wù)器節(jié)點(diǎn)11中不存在客戶端21請求下載的文件,則服務(wù)器節(jié)點(diǎn)11需要到其他服務(wù)器節(jié)點(diǎn)上下載或抓取相應(yīng)文件。相關(guān)技術(shù)中提及,服務(wù)器節(jié)點(diǎn)11并不知曉哪個服務(wù)器節(jié)點(diǎn)上會存儲有它需要的相應(yīng)文件。因此,為解決該技術(shù)問題,本發(fā)明實(shí)施例在文件下載系統(tǒng)中增加了文件索引信息服務(wù)器31。參見圖1,文件索引信息服務(wù)器31與服務(wù)器節(jié)點(diǎn)11相耦接,例如經(jīng)由網(wǎng)絡(luò)互聯(lián)。文件索引信息服務(wù)器31中存儲了文件信息列表。文件信息列表中存儲有文件標(biāo)識以及該文件的文件信息。文件標(biāo)識可以是該文件的文件名(例如可以包括文件目錄)。此處的文件信息包括相應(yīng)文件的各種信息(包括索引信息),可選的,相應(yīng)的文件信息還包括下列至少之一:·主機(jī)名、IP (Internet Protocol,因特網(wǎng)協(xié)議)地址、文件大小、文件的摘要信息、修改時間。而其中的索引信息則可以包括下列至少之一:文件大小、內(nèi)容、md5 (Message-Digest Algorithm5,信息-摘要算法5)值、文件所在服務(wù)器名稱、文件所在服務(wù)器地址。為保證索引信息的可辨認(rèn)性,本發(fā)明實(shí)施例中的索引信息采用固定的存儲格式,可選的,該存儲格式為關(guān)鍵字-值(key-value )格式。現(xiàn)提供一個文件的存儲格式的具體實(shí)例,本例中,key為文件路徑(包括文件名)的md5值,value為一個集合。其中每一個元素為該文件在各個主機(jī)上的相關(guān)信息。示例:md5 ( “softdl.#/dummy,,)=>[“tmpl.qiho0.net|32768|127.0.0.117al4cea55933883d8ecf4bde927bd8d5”,“tmp2.qiho0.net|32768|192.168.0.1105ed3al42661ec09657aeb32dlc02e64”,];在這個示例中,文件softdl.#/dummy存在于兩臺服務(wù)器tmpl.qiho0.net和tmp2.qiho0.net中,這兩臺服務(wù)器的IP地址分別為127.0.0.1和192.168.0.1,文件大小為32768,并且在這兩臺服務(wù)器上的文件的MD5值分別為7al4cea55933883d8ecf4bde927bd8d5 和 05ed3al42661ec09657aeb32dlc02e64。與存儲格式相應(yīng),文件索引信息服務(wù)器31可以使用REDIS (—種高性能的key-value內(nèi)存數(shù)據(jù)庫)存儲文件信息,保證數(shù)據(jù)傳輸?shù)母卟l(fā)性和低延時性。當(dāng)服務(wù)器節(jié)點(diǎn)11在本地未能查找到客戶端21請求訪問的文件時,服務(wù)器節(jié)點(diǎn)11向文件索引信息服務(wù)器31發(fā)出該文件的查詢請求,查詢該文件存儲在哪些服務(wù)器節(jié)點(diǎn)上。相應(yīng)地,文件索引信息服務(wù)器31根據(jù)服務(wù)器節(jié)點(diǎn)11的查詢請求提供相應(yīng)文件的索引信息,以便服務(wù)器節(jié)點(diǎn)11從索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件。文件索引信息服務(wù)器31提供的索引信息的內(nèi)容以及具體格式參見上文所述。
在服務(wù)器節(jié)點(diǎn)11內(nèi)部,文件請求處理器111在本地未能查找到客戶端21請求訪問的文件時,文件請求處理器111將該文件信息發(fā)送給服務(wù)器節(jié)點(diǎn)11內(nèi)設(shè)置的文件下載器113,以便由文件下載器113來下載相應(yīng)文件。文件下載器113與文件索引信息服務(wù)器31相耦接,接收來自文件請求處理器111的文件信息后,向文件索引信息服務(wù)器31發(fā)出查詢請求,其中,查詢請求可以包括該服務(wù)器節(jié)點(diǎn)的主機(jī)名以及該文件的文件路徑及名稱的md5值。文件下載器113接收文件索引信息服務(wù)器31返回的響應(yīng)消息,其中,響應(yīng)消息的內(nèi)容包括具有該文件的服務(wù)器節(jié)點(diǎn)信息以及文件大小信息。文件下載器113從文件索引信息服務(wù)器31返回的響應(yīng)消息中獲取該文件的索引信息,并且從索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件?,F(xiàn)提供一個查詢請求以及響應(yīng)消息的內(nèi)容的實(shí)例,具體如下。查詢請求內(nèi)容:主機(jī)名及要下載文件路徑的md5值如:hostname=demol.qiho0.net&md5=7e5ecl4a85f545991758a4ecb680ab4f響應(yīng)消息內(nèi)容:擁有該文件的主機(jī)名及文件大小信息。如:tmpl.qiho0.net: 32768 | tmp2.qiho0.net: 32768單一地從一個服務(wù)器節(jié)點(diǎn)中下載相應(yīng)文件,費(fèi)時費(fèi)力,且安全性較低。在網(wǎng)絡(luò)時代,同一個文件通??梢源鎯υ诙鄠€服務(wù)器節(jié)點(diǎn)中,為了加速下載,若多個服務(wù)器節(jié)點(diǎn)中都存儲有相應(yīng)文件的情況下,下載服務(wù)器113可以將該文件分割為多份,分別從每個服務(wù)器節(jié)點(diǎn)下載分割生成的部分文件。在各部分的下載文件下載結(jié)束后,下載服務(wù)器113再對從各個服務(wù)節(jié)點(diǎn)中下載的部分文件進(jìn)行組合,生成完整文件。例如,本發(fā)明實(shí)施例中的多路并行下載可以采用開源的下載工具ARIA2,該程序會完成文件分割及組合、檢查等功能??蛇x地,待文件下載結(jié)束后,文件下載器113可以將相應(yīng)文件傳遞給文件請求處理器111,經(jīng)由文件請求處理器111將所下載的文件返回至客戶端21。當(dāng)然,為了加快給客戶端的響應(yīng)速度,可以直接向客戶端返回文件不存在的指示,而同時由文件下載器113下載客戶端請求的文件,這樣可以方便為各種客戶端的后續(xù)請求服務(wù)。進(jìn)一步,若文件索引信息服務(wù)器31中并沒有存儲該下載文件的索引信息,則參見圖1,文件下載器113可以直接到源服務(wù)器集群41中下載或抓取相應(yīng)的文件,當(dāng)然,該源服務(wù)器集群中存儲有客戶端21請求訪問的文件。在本發(fā)明實(shí)施例中,由于各服務(wù)器節(jié)點(diǎn)均到文件索引信息服務(wù)器31獲取文件信息,因此,文件索引信息服務(wù)器31需保證其存儲的文件信息的時效性。為達(dá)到保證時效性的目的,文件索引信息服務(wù)器31可以定期訪問各服務(wù)器節(jié)點(diǎn),獲取各服務(wù)器節(jié)點(diǎn)中的文件信息。優(yōu)選的,服務(wù)器節(jié)點(diǎn)可以自行將文件信息(尤其是文件發(fā)生變化)實(shí)時上報至文件索引信息服務(wù)器端。例如,參見圖1,可以在服務(wù)器節(jié)點(diǎn)11中設(shè)置文件監(jiān)控器114,利用文件監(jiān)控器114監(jiān)控文件存儲器112中的各文件。若文件發(fā)生了變化,則文件監(jiān)控器114實(shí)時將相應(yīng)的文件信息發(fā)送到文件索引信息服務(wù)器31,達(dá)到保證文件索引信息服務(wù)器31中的文件信息的時效性的目的。
圖1是文件下載系統(tǒng)的結(jié)構(gòu)框圖,為方便用戶理解,圖2示出了根據(jù)本發(fā)明一個實(shí)施例的文件下載系統(tǒng)的網(wǎng)絡(luò)環(huán)境示意圖。在該網(wǎng)絡(luò)環(huán)境中存在多個下載服務(wù)器(即前文的服務(wù)器節(jié)點(diǎn))。每一臺下載服務(wù)服務(wù)器上運(yùn)行一個文件監(jiān)控進(jìn)程(用于實(shí)現(xiàn)前文提及的文件監(jiān)控器)。該進(jìn)程可以通過Iinux內(nèi)核文件系統(tǒng)變化通知(inotify)機(jī)制監(jiān)控文件變化。當(dāng)文件發(fā)生變化時,下載服務(wù)器通過網(wǎng)絡(luò)將變化的文件信息(包括本地主機(jī)名,IP地址,文件名稱和路徑、文件大小,md5信息,修改時間等相關(guān)信息)匯報給文件索引信息服務(wù)器,保證文件索引信息服務(wù)器處的文件信息的時效性。當(dāng)用戶訪問一臺下載服務(wù)器上的缺失文件時,下載服務(wù)器上的下載程序(用于實(shí)現(xiàn)前文提及的文件下載器)通過訪問文件索引信息服務(wù)器,從而得到該文件的索引信息,包括文件本身信息,如大小,內(nèi)容md5值,位于哪些服務(wù)器上。然后到索引信息指示的其他下載服務(wù)器進(jìn)行文件下載,為加快下載速率,下載程序可以從擁有該文件的服務(wù)器中同時進(jìn)行多路并行下載。若其他下載服務(wù)器中同樣不存在該下載文件,則直接到源服務(wù)器集群中進(jìn)行該文件的下載或抓取。采用本發(fā)明實(shí)施例提供的文件下載系統(tǒng),服務(wù)器節(jié)點(diǎn)能夠從文件索引信息服務(wù)器中獲知下載文件具體位于哪些服務(wù)器節(jié)點(diǎn)中,不需要每次均回源到源服務(wù)器集群中抓取或下載相應(yīng)文件,提高了服務(wù)器節(jié)點(diǎn)下載文件的速度以及效率,同時緩解了對源服務(wù)器集群的壓力,節(jié)省了下載資源。進(jìn)一步,若下載文件同時存在多個服務(wù)器節(jié)點(diǎn)中,服務(wù)器節(jié)點(diǎn)會從多個服務(wù)器節(jié)點(diǎn)上并行下載,進(jìn)一步提高下載文件的速度,并且,多個服務(wù)器中的就近訪問會大大提高下載速度。另外,添加了文件索引信息服務(wù)器的文件下載系統(tǒng)的健壯性大大提高。若源服務(wù)器集群故障,服務(wù)器節(jié)點(diǎn)能夠從其他服務(wù)器節(jié)點(diǎn)下載相應(yīng)文件,而若文件索引信息服務(wù)器單方面故障,服務(wù)器節(jié)點(diǎn)能夠到源服務(wù)器集群上進(jìn)行文件抓取或下載,因此,源服務(wù)器集群或文件索引信息服務(wù)器的抓取都不會對 回源機(jī)制造成影響。因此,本發(fā)明實(shí)施例提供的文件下載系統(tǒng)保證了用戶的文件訪問質(zhì)量。本發(fā)明實(shí)施例還提供了一種文件下載方法,該方法可以基于上述任意一個優(yōu)選實(shí)施例或其組合所提供的服務(wù)器節(jié)點(diǎn),以及該服務(wù)器節(jié)點(diǎn)所位于的文件下載系統(tǒng)。圖3示出了根據(jù)本發(fā)明一個實(shí)施例的文件下載方法的處理流程圖。參見圖3,該文件下載方法始于步驟S302,在本步驟中,接收客戶端發(fā)送的文件請求并解析,查找與該文件請求相對應(yīng)的文件。查找結(jié)果不同,則后續(xù)操作也不同。因此,在步驟S304中需判斷是否查找到與步驟S302中的文件請求相對應(yīng)的文件,根據(jù)判斷結(jié)果選擇后續(xù)操作。當(dāng)查找到相應(yīng)文件時,執(zhí)行步驟S306,將查找到的文件返回到客戶端,本次文件下載結(jié)束。當(dāng)未查找到相應(yīng)文件時,執(zhí)行步驟S308,從文件索引信息服務(wù)器中獲取該文件的索引信息,并繼續(xù)執(zhí)行后續(xù)步驟步驟。其中,文件索引信息服務(wù)器中存儲的索引信息是指可以指示文件在各個服務(wù)器上的位置的信息,例如索引信息可以包括可以包括下列內(nèi)容中的一個或者多個:文件大小、標(biāo)識、文件的唯一 md5值、文件所在服務(wù)器名稱、文件所在服務(wù)器的IP地址等。本發(fā)明實(shí)施例中的索引信息采用固定的存儲格式,可選的,該存儲格式為關(guān)鍵字-值(key-value )格式。文件索引信息服務(wù)器中除上述索引信息外,還可以存儲有文件的其他文件信息,以保證所提供的信息的準(zhǔn)確性。相應(yīng)的文件信息至少包括下列至少之一:本地主機(jī)名、IP地址、文件大小、文件的摘要信息、修改時間。為保證文件索引信息服務(wù)器中的文件信息的時效性,需要隨時監(jiān)控各服務(wù)器節(jié)點(diǎn)本地存儲的各文件狀態(tài),若文件狀態(tài)發(fā)生了變化,則將相應(yīng)的文件信息通知發(fā)送到文件索引信息服務(wù)器。圖4示出了根據(jù)本發(fā)明一個實(shí)施例的從文件索引信息服務(wù)器中獲取該文件的索引信息的處理流程圖。參見圖2,索引信息的獲取方法包括步驟S402至步驟S404。首先,在步驟S402中,從服務(wù)器節(jié)點(diǎn)向文件索引信息服務(wù)器發(fā)出查詢請求。查詢請求中需要說明發(fā)起請求的主體以及其請求的具體文件,因此,查詢請求可以包括該服務(wù)器節(jié)點(diǎn)的主機(jī)名以及該文件的文件路徑(含文件名)的md5值。文件索引信息服務(wù)器接收到步驟S402中提及的查詢請求后,會從文件索引信息服務(wù)器所存儲的索引信息中查找與查詢請求相對應(yīng)的文件信息,并返回所查找到的文件信息作為響應(yīng)。在步驟S404中,服務(wù)器節(jié)點(diǎn)接收文件索引信息服務(wù)器返回的響應(yīng)消息,與查詢消息相對應(yīng),響應(yīng)消息需說明所請求的文件在哪些服務(wù)器節(jié)點(diǎn)中存在以及該文件的相關(guān)信息。因此,響應(yīng)消息的內(nèi)容可以包括具有該文件的服務(wù)器節(jié)點(diǎn)信息、以及文件大小信息。但是由于文件索引信息服務(wù)器存儲容量有限以及文件時效性的原因,并不能保證每個文件均在其中有記載。因此,根據(jù)本發(fā)明實(shí)施例的方法中提供了步驟S310,在步驟S310中,判斷文件索引信息服務(wù)器中是否存儲有相應(yīng)文件的索引信息,能否在文件索引信息服務(wù)器中獲取到上述索引信息。若從文件索引信息服務(wù)器中能夠獲取到相應(yīng)文件的索引信息,則執(zhí)行步驟S312,從索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件,并返回所下載的文件到客戶端,本次文件下載結(jié)束。在步驟S312的下載 過程中,若多個服務(wù)器節(jié)點(diǎn)中都存儲有客戶端請求訪問的相應(yīng)文件,則可以將該文件分割為多份,分別從每個服務(wù)器節(jié)點(diǎn)下載分割生成的部分文件,并且在多個服務(wù)器節(jié)點(diǎn)中同時進(jìn)行多路下載。由于從各服務(wù)器節(jié)點(diǎn)下載的文件并不是一個完整的文件,而是一個文件的一部分,因此,在下載結(jié)束后,對從各個服務(wù)節(jié)點(diǎn)中下載的部分文件進(jìn)行組合,生成完整文件。隨后,可以將完整的文件返回到客戶端,本次文件下載結(jié)束。若步驟S310的判斷結(jié)果為在文件索引信息服務(wù)器中并未獲取到相應(yīng)文件的索引信息,則執(zhí)行步驟S314,直接從源服務(wù)器集群中下載相應(yīng)的文件,并返回所下載的文件到客戶端,本次文件下載結(jié)束。需要說明的是,除CDN網(wǎng)絡(luò)外,本發(fā)明實(shí)施例提供的方法及系統(tǒng)也可以適用于其他存在文件下載的網(wǎng)絡(luò)。本發(fā)明實(shí)施例能夠達(dá)到如下有益效果:采用本發(fā)明實(shí)施例提供的文件下載系統(tǒng)以及相應(yīng)的方法,服務(wù)器節(jié)點(diǎn)能夠從文件索引信息服務(wù)器中獲知下載文件具體位于哪些服務(wù)器節(jié)點(diǎn)中,不需要每次均回源到源服務(wù)器集群中抓取或下載相應(yīng)文件,提高了服務(wù)器節(jié)點(diǎn)下載文件的速度以及效率,同時緩解了對源服務(wù)器集群的壓力,節(jié)省了下載資源。進(jìn)一步,若下載文件同時存在多個服務(wù)器節(jié)點(diǎn)中,服務(wù)器節(jié)點(diǎn)會從多個服務(wù)器節(jié)點(diǎn)上并行下載,進(jìn)一步提高下載文件的速度,并且,多個服務(wù)器中的就近訪問會大大提高下載速度。另外,添加了文件索引信息服務(wù)器的文件下載系統(tǒng)的健壯性大大提高。若源服務(wù)器集群故障,服務(wù)器節(jié)點(diǎn)能夠從其他服務(wù)器節(jié)點(diǎn)下載相應(yīng)文件,而若文件索引信息服務(wù)器單方面故障,服務(wù)器節(jié)點(diǎn)能夠到源服務(wù)器集群上進(jìn)行文件抓取或下載,因此,源服務(wù)器集群或文件索引信息服務(wù)器的抓取都不會對回源機(jī)制造成影響。因此,本發(fā)明實(shí)施例提供的文件下載系統(tǒng)保證了用戶的文件訪問質(zhì)量。根據(jù)本發(fā)明的服務(wù)器節(jié)點(diǎn),其中所述文件索引信息服務(wù)器中存儲的索引信息包括下列至少之一:文件大小、內(nèi)容、md5值、文件所在服務(wù)器名稱、文件所在服務(wù)器地址。根據(jù)本發(fā)明的服務(wù)器節(jié)點(diǎn),所述索引信息的存儲格式為關(guān)鍵字-值key-value格式。根據(jù)本發(fā)明的服務(wù)器節(jié)點(diǎn),所述文件下載器還配置為:向所述文件索引信息服務(wù)器發(fā)出查詢請求,其中,所述查詢請求包括該服務(wù)器節(jié)點(diǎn)的主機(jī)名以及該文件的文件路徑的md5值;以及接收所述文件索引信息服務(wù)器返回的響應(yīng)消息,其中,所述響應(yīng)消息的內(nèi)容包括具有該文件的服務(wù)器節(jié)點(diǎn)信息以及文件大小信息。根據(jù)本發(fā)明的系統(tǒng),其特征在于,該系統(tǒng)還包括源服務(wù)器集群,該源服務(wù)器集群中存儲有所述客戶端請求訪問的文件,則所述服務(wù)器節(jié)點(diǎn)還配置為當(dāng)從所述文件索引信息服務(wù)器未獲取到相應(yīng)文件的索引信息時,從所述源服務(wù)器集群下載所述客戶端請求訪問的文件。
·
根據(jù)本發(fā)明的方法,所述文件索引信息服務(wù)器中存儲的索引信息包括下列至少之文件大小、內(nèi)容、md5值、文件所在服務(wù)器名稱、文件所在服務(wù)器地址。根據(jù)本發(fā)明的方法,所述索引信息的存儲格式為關(guān)鍵字-值key-value格式。根據(jù)本發(fā)明的方法,所述從文件索引信息服務(wù)器中獲取該文件的索引信息,包括:向所述文件索引信息服務(wù)器發(fā)出查詢請求,其中,所述查詢請求包括該服務(wù)器節(jié)點(diǎn)的主機(jī)名以及該文件的文件路徑的md5值;以及接收所述文件索引信息服務(wù)器返回的響應(yīng)消息,其中,所述響應(yīng)消息的內(nèi)容包括具有該文件的服務(wù)器節(jié)點(diǎn)信息、以及文件大小信息。根據(jù)本發(fā)明的方法,還包括:若從所述文件索引信息服務(wù)器中未獲取到下載文件的索引信息,從源服務(wù)器集群中下載相應(yīng)的文件。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實(shí)施例的所有特征。因此,遵循具體實(shí)施方式
的權(quán)利要求書由此明確地并入該具體實(shí)施方式
,其中每個權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個或多個設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個或者多個處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP )來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的服務(wù)器節(jié)點(diǎn)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之 前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
權(quán)利要求
1.一種內(nèi)容分發(fā)網(wǎng)絡(luò)CDN中的服務(wù)器節(jié)點(diǎn),包括: 文件存儲器,配置為存儲一個或者多個文件; 文件下載器,配置為接收文件信息,從文件索引信息服務(wù)器中獲取該文件的索引信息;并且從所述索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件;以及 文件請求處理器,配置為接收客戶端發(fā)送的文件請求,從所述文件存儲器中查找與該文件請求相對應(yīng)的文件,當(dāng)查找到相應(yīng)文件時,將該文件返回到所述客戶端;當(dāng)未查找到相應(yīng)文件時,將該文件信息發(fā)送給所述文件下載器,以便經(jīng)由所述文件下載器來下載相應(yīng)文件并返回所下載的文件到所述客戶端。
2.根據(jù)權(quán)利要求1所述的服務(wù)器節(jié)點(diǎn),還包括: 文件監(jiān)控器,配置為監(jiān)控所述文件存儲器中的各文件;若文件發(fā)生了變化,則將相應(yīng)的文件信息發(fā)送到所述文件索引信息服務(wù)器。
3.根據(jù)權(quán)利要求2所述的服務(wù)器節(jié)點(diǎn),所述相應(yīng)的文件信息包括下列至少之一: 本地主機(jī)名、IP地址、文件大小、文件的摘要信息、修改時間。
4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的服務(wù)器節(jié)點(diǎn),所述文件下載器還配置為: 若多個服務(wù)器節(jié)點(diǎn)中都存儲有相應(yīng)文件,則將該文件分割為多份,分別從每個服務(wù)器節(jié)點(diǎn)下載分割生成的部分文件;以及 在下載結(jié)束后,對從各個服務(wù)節(jié)點(diǎn)中下載的部分文件進(jìn)行組合,生成完整文件。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的服務(wù)器節(jié)點(diǎn),所述文件下載器還配置為: 若從所述文件索引信息服務(wù)器中未獲取`到下載文件的索引信息,從源服務(wù)器集群中下載相應(yīng)的文件。
6.一種文件下載系統(tǒng),包括多個權(quán)利要求1至5任一項(xiàng)所述的⑶N中的服務(wù)器節(jié)點(diǎn),還包括多個客戶端以及文件索引信息服務(wù)器,其中, 所述客戶端,配置為發(fā)送文件請求至所述服務(wù)器節(jié)點(diǎn); 所述文件索引信息服務(wù)器,配置為當(dāng)所述服務(wù)器節(jié)點(diǎn)在本地未能查找到所述客戶端請求訪問的文件時,根據(jù)所述服務(wù)器節(jié)點(diǎn)的查詢請求提供相應(yīng)文件的索引信息,以便所述服務(wù)器節(jié)點(diǎn)從所述索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件。
7.一種文件下載方法,包括: 接收客戶端發(fā)送的文件請求并解析,查找與該文件請求相對應(yīng)的文件; 當(dāng)查找到相應(yīng)文件時,將該文件返回到所述客戶端; 當(dāng)未查找到相應(yīng)文件時,從文件索引信息服務(wù)器中獲取該文件的索引信息; 從所述索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件,并返回所下載的文件到所述客戶端。
8.根據(jù)權(quán)利要求7所述的方法,還包括: 監(jiān)控各服務(wù)器節(jié)點(diǎn)本地存儲的各文件狀態(tài); 若所述文件狀態(tài)發(fā)生了變化,則將相應(yīng)的文件信息通知發(fā)送到所述文件索引信息服務(wù)器。
9.根據(jù)權(quán)利要求8所述的方法,所述相應(yīng)的文件信息包括下列至少之一: 本地主機(jī)名、IP地址、文件大小、文件的摘要信息、修改時間。
10.根據(jù)權(quán)利要求7至9任一項(xiàng)所述的方法,從所述索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件,包括:若多個服務(wù)器節(jié)點(diǎn)中都存儲有所述客戶端請求訪問的相應(yīng)文件,則將該文件分割為多份,分別從每個服務(wù)器節(jié)點(diǎn)下載分割生成的部分文件,并且在多個服務(wù)器節(jié)點(diǎn)中同時進(jìn)行多路下載;以及 在下載結(jié)束后,對從各個服務(wù)節(jié)點(diǎn)中下載的部分文件進(jìn)行組合,生成完整文件。
全文摘要
本發(fā)明公開了一種文件下載方法、系統(tǒng)及CDN中的服務(wù)器節(jié)點(diǎn)。服務(wù)器節(jié)點(diǎn)包括文件存儲器,配置為存儲一個或者多個文件;文件下載器,配置為接收文件信息,從文件索引信息服務(wù)器中獲取該文件的索引信息;并且從索引信息指示的服務(wù)器節(jié)點(diǎn)下載該文件;以及文件請求處理器,配置為接收客戶端發(fā)送的文件請求,從文件存儲器中查找與該文件請求相對應(yīng)的文件,當(dāng)查找到相應(yīng)文件時,將該文件返回到客戶端;當(dāng)未查找到相應(yīng)文件時,將該文件信息發(fā)送給文件下載器,以便經(jīng)由文件下載器來下載相應(yīng)文件以便返回所下載的文件到客戶端。采用本發(fā)明能夠解決缺失文件下載資源不明確的問題。
文檔編號H04L29/06GK103248695SQ20131016509
公開日2013年8月14日 申請日期2013年5月7日 優(yōu)先權(quán)日2013年5月7日
發(fā)明者馮顧, 劉浩, 胡振勇, 王力 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司