中,僅根據(jù)其在文件分享過程中的身份不同被劃分為發(fā)送終端和接收終端)。在圖1中,與發(fā)送終端對應(yīng)的分發(fā)節(jié)點(diǎn)為分發(fā)節(jié)點(diǎn)22,與接收終端14對應(yīng)的分發(fā)節(jié)點(diǎn)為分發(fā)節(jié)點(diǎn)24。相對接收終端14而言,分發(fā)節(jié)點(diǎn)24即為接收終端14的本地分發(fā)節(jié)點(diǎn),分發(fā)節(jié)點(diǎn)22和分發(fā)節(jié)點(diǎn)26即分別為接收終端14的第一遠(yuǎn)程分發(fā)節(jié)點(diǎn)和第二遠(yuǎn)程分發(fā)節(jié)點(diǎn)。業(yè)務(wù)服務(wù)器30則用于轉(zhuǎn)發(fā)發(fā)送終端12和接收終端14的消息(不進(jìn)行文件流的轉(zhuǎn)發(fā))。發(fā)送終端12和接收終端14均可以是智能手機(jī)、平板電腦、筆記本電腦或臺式電腦等安裝有智能操作系統(tǒng)或桌面操作系統(tǒng)的終端設(shè)備。分發(fā)節(jié)點(diǎn)則可以是CDN節(jié)點(diǎn)或者與類似CDN具有內(nèi)容分發(fā)功能的網(wǎng)絡(luò)系統(tǒng)中的數(shù)據(jù)存儲節(jié)點(diǎn)。業(yè)務(wù)服務(wù)器則可以是與終端上運(yùn)行的具有文件分享功能的即時(shí)通信應(yīng)用或內(nèi)容分享應(yīng)用的服務(wù)器設(shè)備,其上可運(yùn)行即時(shí)通信應(yīng)用或內(nèi)容分享應(yīng)用的服務(wù)器程序。
[0042]前述文件發(fā)送方法即可運(yùn)行于發(fā)送終端12之上,前述的文件接收方法即可運(yùn)行于接收終端14之上。且上述文件發(fā)送方法和文件接收方法均可依賴于計(jì)算機(jī)程序,可運(yùn)行于馮諾依曼體系的計(jì)算機(jī)系統(tǒng)之上。
[0043]具體的,在本實(shí)施例中,文件發(fā)送方法如圖2所示,包括:
[0044]步驟S102:獲取目標(biāo)文件,將目標(biāo)文件上傳至分發(fā)服務(wù)器。
[0045]目標(biāo)文件即為操作發(fā)送終端的用戶分享給他人的文件。例如,用戶在操作智能手機(jī)上的即時(shí)通信應(yīng)用時(shí),可打開即時(shí)分享圖片的功能,然后使用手機(jī)相機(jī)拍照生成目標(biāo)文件分享給好友?;蛘哂脩艨纱蜷_發(fā)送語音的功能,然后對麥克風(fēng)說話,從而通過錄音生成目標(biāo)文件分享給好友?;蛘?,用戶也可點(diǎn)擊發(fā)送文件,然后在彈出的文件選取框中選中文件作為目標(biāo)文件。
[0046]在上述應(yīng)用場景中,用戶點(diǎn)擊“發(fā)送”或者“分享”按鈕,并沒有將該目標(biāo)文件直接發(fā)送給接收終端,也沒有通過發(fā)送給業(yè)務(wù)服務(wù)器,由業(yè)務(wù)服務(wù)器轉(zhuǎn)發(fā)至接收終端,而是先上傳至與其對應(yīng)的分發(fā)服務(wù)器。通常情況下,發(fā)送終端通過IP地址與分發(fā)服務(wù)器對應(yīng)。不同的分發(fā)服務(wù)器對應(yīng)不同的IP段(通常也與地理區(qū)域相關(guān),運(yùn)營商為同一地區(qū)的分配的IP地址通常屬于同一個(gè)IP段),處于相同IP段的終端對應(yīng)一個(gè)分發(fā)服務(wù)器。發(fā)送終端可向統(tǒng)一的⑶N入口域名發(fā)起文件上傳請求,然后由⑶N入口服務(wù)器根據(jù)發(fā)送終端的IP地址將該請求重定向至與IP地址對應(yīng)的分發(fā)服務(wù)器進(jìn)行處理。
[0047]步驟S104:接收該分發(fā)服務(wù)器返回的與該目標(biāo)文件對應(yīng)的索引值,該索引值包括與該目標(biāo)文件對應(yīng)的文件標(biāo)識數(shù)據(jù)段以及與該分發(fā)服務(wù)器對應(yīng)的分發(fā)地址數(shù)據(jù)段。
[0048]與發(fā)送終端對應(yīng)的分發(fā)服務(wù)器接收到該目標(biāo)文件之后,將目標(biāo)文件緩存,然后計(jì)算目標(biāo)文件的哈希值即可得到目標(biāo)文件的摘要,以該摘要作為目標(biāo)文件的標(biāo)識。分發(fā)服務(wù)器即可根據(jù)該標(biāo)識生成與目標(biāo)文件對應(yīng)的索引值。
[0049]在本實(shí)施例中,分發(fā)服務(wù)器生成的索引值可如圖3所示,包括多個(gè)數(shù)據(jù)段。其中,可包括版本數(shù)據(jù)段(即圖3中vers1n標(biāo)識塊)、索引長度數(shù)據(jù)段(即圖3中的length標(biāo)識塊)、上傳時(shí)間數(shù)據(jù)段(即圖3中的uptime標(biāo)識塊)、文件標(biāo)識數(shù)據(jù)段(即圖3中的filekey標(biāo)識塊)、分發(fā)地址數(shù)據(jù)段(即圖3中的flag標(biāo)識塊)以及校驗(yàn)和數(shù)據(jù)段(即圖3中的checksum標(biāo)識塊)。
[0050]版本數(shù)據(jù)段可用于標(biāo)識該索引值的結(jié)構(gòu)的版本,例如若文件哈希算法升級或者分發(fā)地址編碼方式升級或者索引值的結(jié)構(gòu)發(fā)生變化添加了新的數(shù)據(jù)段,則可通過變更版本數(shù)據(jù)段進(jìn)行識別。文件標(biāo)識數(shù)據(jù)段則可將前述計(jì)算的目標(biāo)文件的摘要添加,用于識別目標(biāo)文件。分發(fā)地址數(shù)據(jù)段則通過對分發(fā)服務(wù)器的地址進(jìn)行編碼得到。
[0051]在一個(gè)實(shí)施例中,分發(fā)服務(wù)器可獲取其分發(fā)服務(wù)器鏈接地址,即IP地址或域名的字符串,通過編碼變換成二進(jìn)制數(shù)據(jù)段,然后添加到索引值中。例如,若分發(fā)服務(wù)器的IP地址為10.0.0.3 (優(yōu)選為內(nèi)容分發(fā)網(wǎng)絡(luò)分配的虛擬IP,可方便擴(kuò)容和縮容),則可將該地址通過編碼變換成:
[0052]0000101 00000000 00000000 00000011
[0053]的數(shù)據(jù)段,即每8位表示一個(gè)IPv4的網(wǎng)段(在IPv4中,一個(gè)網(wǎng)段的取值區(qū)間為O至 255)ο
[0054]在一個(gè)實(shí)施例中,分發(fā)服務(wù)器為分發(fā)中心的一個(gè)子服務(wù)器,其地址不僅包括分發(fā)中心的域名,還包括分發(fā)中心中的子服務(wù)器的編號,分發(fā)地址數(shù)據(jù)段包括分發(fā)中心數(shù)據(jù)段以及子服務(wù)器編號數(shù)據(jù)段。例如,若發(fā)送終端對應(yīng)的分發(fā)中心由20臺服務(wù)器組成,且分發(fā)中心的IP地址為10.0.0.3,實(shí)際存儲目標(biāo)文件的分發(fā)服務(wù)器的編號為14,則該分發(fā)服務(wù)器的實(shí)際訪問地址可表示為:
[0055]10.0.0.3 ? SID = 14 ;
[0056]通過編碼即可變換成:
[0057]0000101 00000000 00000000 00000011 01110(假定分發(fā)中心最多由 32 臺分發(fā)服務(wù)器)。
[0058]在另一個(gè)實(shí)施例中,分發(fā)服務(wù)器還可根據(jù)預(yù)設(shè)的存儲地址映射表查詢得到分發(fā)地址數(shù)據(jù)段。預(yù)設(shè)的存儲地址映射表可由CDN網(wǎng)絡(luò)在構(gòu)建時(shí)或者加入或刪除分發(fā)服務(wù)器更新,其中包含了分發(fā)中心的IP地址或域名與分發(fā)中心編號的對應(yīng)關(guān)系。如上例中,分發(fā)服務(wù)器可根據(jù)其所在的分發(fā)中心的分發(fā)中心鏈接地址(IP地址或域名)查詢該預(yù)設(shè)的存儲地址映射表,即可得到該分發(fā)服務(wù)器所在的分發(fā)中心的編號,該編號即可作為分發(fā)中心數(shù)據(jù)段;然后再獲取該分發(fā)服務(wù)器在分發(fā)中心中的服務(wù)器編號,該編號即可作為子服務(wù)器編號數(shù)據(jù)段,將分發(fā)中心數(shù)據(jù)段和子服務(wù)器編號數(shù)據(jù)段拼接即可得到分發(fā)地址數(shù)據(jù)段。
[0059]例如,可在索引值中分配32位作為分發(fā)地址數(shù)據(jù)段,其中高12位為擴(kuò)展位,中16位為分發(fā)中心數(shù)據(jù)段,低4位為子服務(wù)器編號數(shù)據(jù)段。
[0060]步驟S106:將該索引值發(fā)送至接收終端,由該接收終端解析后根據(jù)該文件摘要值以及該分發(fā)地址數(shù)據(jù)段從該分發(fā)服務(wù)器下載目標(biāo)文件。
[0061]在本實(shí)施例中,如圖1所示,發(fā)送終端12可通過業(yè)務(wù)服務(wù)器30將索引值發(fā)送至接收終端14。例如,若發(fā)送終端12和接收終端14上運(yùn)行的是即時(shí)通信應(yīng)用,則可通過該即時(shí)通信應(yīng)用的協(xié)議將該索引值封裝,即通知接收終端該消息為發(fā)送文件的索引值而不是即時(shí)通信消息,然后由業(yè)務(wù)服務(wù)器30上運(yùn)行該即時(shí)通信應(yīng)用的服務(wù)器程序進(jìn)行轉(zhuǎn)發(fā)。
[0062]也就是說,用戶在即時(shí)通信應(yīng)用的操作界面上點(diǎn)擊了文件分享的按鈕后,并沒有直接將該文件發(fā)送給接收終端,而是先將目標(biāo)文件上傳至分發(fā)服務(wù)器得到返回的索引值,然后將索引值發(fā)送給了接收終端,再由接收終端根據(jù)該索引值去分發(fā)服務(wù)器下載,從而節(jié)省了業(yè)務(wù)服務(wù)器的轉(zhuǎn)發(fā)流量。
[0063]相應(yīng)的,如圖4所示,運(yùn)行在接收終端上的文件接收方法可包括:
[0064]步驟S202:接收發(fā)送終端發(fā)送的索引值,該索引值由該發(fā)送終端對應(yīng)的第一遠(yuǎn)程分發(fā)服務(wù)器在接收到該發(fā)送終端上傳的目標(biāo)文件后生成。
[0065]步驟S204:提取該索引值中的文件標(biāo)識數(shù)據(jù)段和分發(fā)地址數(shù)據(jù)段。
[0066]步驟S206:向該分發(fā)地址數(shù)據(jù)段對應(yīng)的分發(fā)服務(wù)器發(fā)送包含該文件標(biāo)識數(shù)據(jù)段的下載請求。
[0067]步驟S208:接收該第一遠(yuǎn)程分發(fā)服務(wù)器下發(fā)的與該文件標(biāo)識數(shù)據(jù)段對應(yīng)的目標(biāo)文件。
[0068]在本實(shí)施例中,如圖1所示,以接收終端14的視角而言,分發(fā)節(jié)點(diǎn)22即對應(yīng)接收終端14的第一遠(yuǎn)程分發(fā)服務(wù)器,而分發(fā)節(jié)點(diǎn)24即對應(yīng)接收終端14的本地分發(fā)服務(wù)器。
[0069]接收終端14在接收到索引值之后,首先對索引值進(jìn)行解析,得到文件標(biāo)識數(shù)據(jù)