專利名稱:一種文件傳輸方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及⑶N (Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò))技術(shù)領(lǐng)域,特別涉及一種文件傳輸方法及裝置。
背景技術(shù):
在⑶N領(lǐng)域中,現(xiàn)有技術(shù)一般通過(guò)將客戶端的訪問(wèn)引導(dǎo)到Cache (高速緩沖存儲(chǔ)器)服務(wù)器上,使得客戶端能夠通過(guò)Cache服務(wù)器就近獲取到需要的完整文件內(nèi)容,避免客戶端穿透各種路由到源站服務(wù)器獲取完整文件內(nèi)容,并且,現(xiàn)有技術(shù)將完整文件內(nèi)容以單個(gè)文件形式保存到Cache服務(wù)器上,從而達(dá)到加速訪問(wèn)的效果。參閱圖1所示,Cache服務(wù)器上沒有客戶端請(qǐng)求的數(shù)據(jù)(即用戶數(shù)據(jù))時(shí)的數(shù)據(jù)分發(fā)流程(即MISS回源流程)如下:步驟101:客戶端向Cache服務(wù)器A發(fā)送數(shù)據(jù)請(qǐng)求。步驟102 =Cache服務(wù)·器A向源站服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù)請(qǐng)求。步驟103:源站服務(wù)器根據(jù)接收到的數(shù)據(jù)請(qǐng)求向Cache服務(wù)器A返回?cái)?shù)據(jù)。
·
步驟104 =Cache服務(wù)器A將源站服務(wù)器返回的數(shù)據(jù)轉(zhuǎn)發(fā)給客戶端,同時(shí)將源站返回的數(shù)據(jù)以單個(gè)文件的形式保存到Cache服務(wù)器A中。參閱圖2所示,Cache服務(wù)器中儲(chǔ)存有客戶端請(qǐng)求的數(shù)據(jù)時(shí)的數(shù)據(jù)分發(fā)流程(即HIT流程)如下:步驟201:客戶端向Cache服務(wù)器A發(fā)送數(shù)據(jù)請(qǐng)求。步驟202 =Cache服務(wù)器A根據(jù)接收到的數(shù)據(jù)請(qǐng)求,向客戶端返回?cái)?shù)據(jù)。上述Cache服務(wù)器A —般為邊緣Cache服務(wù)器。在內(nèi)容分發(fā)技術(shù)領(lǐng)域中,分片存儲(chǔ)技術(shù)主要應(yīng)用于文件系統(tǒng)層面,例如NFS(Network File System,網(wǎng)絡(luò)文件系統(tǒng))。由NFS對(duì)多臺(tái)存儲(chǔ)服務(wù)器進(jìn)行組織,形成NFS存儲(chǔ)服務(wù)器集群,然后,通過(guò)NFS存儲(chǔ)器集群對(duì)文件進(jìn)行分片存儲(chǔ)和管理。對(duì)于Cache軟件而言,NFS存儲(chǔ)服務(wù)器集群是一個(gè)大的磁盤,Cache軟件直接通過(guò)NFS存儲(chǔ)服務(wù)器集群存儲(chǔ)文件,不管NFS存儲(chǔ)服務(wù)器集群具體是如何對(duì)文件的分片存儲(chǔ)和管理的。傳統(tǒng)的⑶N技術(shù)中,由于MISS回源流程首選存儲(chǔ)文件的Cache服務(wù)器是邊緣Cache服務(wù)器,所以,體積較大文件的集中存儲(chǔ)很容易導(dǎo)致邊緣Cache服務(wù)器的單盤存儲(chǔ)壓力過(guò)大,從而導(dǎo)致設(shè)備整體服務(wù)能力的下降。雖然使用NFS存儲(chǔ)服務(wù)器集群可以解決單盤存儲(chǔ)壓力過(guò)大的問(wèn)題,但是NFS存儲(chǔ)服務(wù)器集群中的存儲(chǔ)服務(wù)器不能再作為邊緣Cache服務(wù)器使用,因此,將NFS存儲(chǔ)服務(wù)器集群應(yīng)用于上述MISS回源流程會(huì)增加系統(tǒng)的復(fù)雜性,不利于問(wèn)題的排查與定位,并且還增加了服務(wù)的成本。再者,傳統(tǒng)CDN技術(shù)中,在鏈路不穩(wěn)的情況下,如果在MISS回源流程中較大文件正在傳輸時(shí),出現(xiàn)鏈路斷開的情況,那么邊緣Cache服務(wù)器將丟棄已接收到的部分文件,這樣,在下次接收到針對(duì)相同文件的請(qǐng)求時(shí),源站服務(wù)器仍然需要再次回源抓取完整的文件,這就導(dǎo)致了回源量和回源壓力的過(guò)大增加,浪費(fèi)了系統(tǒng)資源。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種文件傳輸方法及裝置,用以解決現(xiàn)有技術(shù)在鏈路不穩(wěn)定的情況下傳輸大文件時(shí),回源量和回源壓力過(guò)度增加問(wèn)題。本發(fā)明實(shí)施例提供了一種文件傳輸方法,包括:接收客戶端發(fā)送的文件請(qǐng)求,所述文件請(qǐng)求至少攜帶待獲取文件的數(shù)據(jù)總量;將所述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量;依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)所述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并將其轉(zhuǎn)發(fā)至客戶端;其中,在獲取任意一個(gè)數(shù)據(jù)片段時(shí),若鏈路中斷,則丟棄所述任意一個(gè)數(shù)據(jù)片段中的已獲取數(shù)據(jù),并在所述鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)所述任意一個(gè)數(shù)據(jù)片段,并將所述任意一個(gè)數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端。本發(fā)明實(shí)施例提供了一種文件傳輸裝置,包括:接收模塊,用于接收客戶端發(fā)送的文件請(qǐng)求,所述文件請(qǐng)求至少攜帶待獲取文件的數(shù)據(jù)總量;規(guī)劃模塊,用于將所述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量;執(zhí)行模塊,用于依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)所述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并將其轉(zhuǎn)發(fā)至客戶端;其中,在獲取任意一個(gè)數(shù)據(jù)片段時(shí),若鏈路中斷,則丟棄所述任意一個(gè)數(shù)據(jù)片段中的已獲取數(shù)據(jù),并在所述鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)所述任意一個(gè)數(shù)據(jù)片段, 并將所述任意一個(gè)數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端。本發(fā)明實(shí)施例中,將客戶端請(qǐng)求的待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量,依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)該待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并將其轉(zhuǎn)發(fā)給該客戶端,在獲取任意一個(gè)數(shù)據(jù)片段時(shí),若鏈路中斷,則丟棄該任意一個(gè)數(shù)據(jù)片段中的已獲取數(shù)據(jù),并在所述鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)該任意一個(gè)數(shù)據(jù)片段,并將該任意一個(gè)數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端,這樣,就不會(huì)因?yàn)殒溌分袛喽绊懙狡渌A(yù)設(shè)部分的已獲取數(shù)據(jù),避免了在鏈路中斷后,重新獲取整個(gè)文件的情況,從而在最大限度上減少了回源量。
圖1為現(xiàn)有技術(shù)中的MISS回源流程圖;圖2為現(xiàn)有技術(shù)中的HIT流程圖;圖3為本發(fā)明實(shí)施例設(shè)計(jì)的一種文件傳輸方法流程圖;圖4為本發(fā)明實(shí)施例中邊緣Cache服務(wù)器針對(duì)不攜帶Range的文件請(qǐng)求傳輸文件的方法流程圖;圖5為本發(fā)明實(shí)施例中邊緣Cache服務(wù)器針對(duì)攜帶Range的文件請(qǐng)求傳輸文件的方法流程圖;圖6為本發(fā)明實(shí)施例設(shè)計(jì)的文件傳輸裝置示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例設(shè)計(jì)了一種文件傳輸方法及裝置,將客戶端請(qǐng)求的待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量,依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)該待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并將其轉(zhuǎn)發(fā)給該客戶端,在獲取任意一個(gè)數(shù)據(jù)片段時(shí),若鏈路中斷,則丟棄該任意一個(gè)數(shù)據(jù)片段中的已獲取數(shù)據(jù),并在所述鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)該任意一個(gè)數(shù)據(jù)片段,并將該任意一個(gè)數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端,用以解決現(xiàn)有技術(shù)在鏈路不穩(wěn)定的情況下傳輸大文件時(shí),回源量和回源壓力過(guò)度增加問(wèn)題。下面結(jié)合
本發(fā)明的優(yōu)選實(shí)施例。參閱圖3所示,本發(fā)明實(shí)施例設(shè)計(jì)了一種文件傳輸方法,包括如下步驟:步驟301:接收客戶端發(fā)送的文件請(qǐng)求,該文件請(qǐng)求至少攜帶待獲取文件的數(shù)據(jù)總量。實(shí)際應(yīng)用時(shí),接收客戶端發(fā)送的文件請(qǐng)求后,可以判斷該文件請(qǐng)求中是否攜帶了片段(Range),若是,該文件請(qǐng)求的Range請(qǐng)求頭中就包含了待獲取文件的數(shù)據(jù)總量,否則,需要根據(jù)相應(yīng)的待獲取文件的大小在該文件請(qǐng)求前添加Range請(qǐng)求頭,將上述文件請(qǐng)求轉(zhuǎn)化成攜帶Range的文件請(qǐng)求。步驟302:將上述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量。較佳地,可以將上述待獲取文件的數(shù)據(jù)總量劃分成大小相同的若干個(gè)子數(shù)據(jù)量;或者,按照預(yù)設(shè)大小劃分上述待獲取文件的數(shù)據(jù)總量,例如,假設(shè)待獲取文件的數(shù)據(jù)總量為1010MB,按照100MB的預(yù)設(shè)大小對(duì)該數(shù)據(jù)總量進(jìn)行劃分,將該數(shù)據(jù)總量的前1000MB平均劃分成10個(gè)100MB大小的子數(shù)據(jù)量,將該數(shù)據(jù)總量中的最后IOMB作為最后一個(gè)子數(shù)據(jù)量。步驟303:依次根據(jù) 劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)上述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并將其轉(zhuǎn)發(fā)至客戶端,其中,在獲取任意一個(gè)數(shù)據(jù)片段時(shí),若鏈路中斷,則丟棄上述任意一個(gè)數(shù)據(jù)片段中的已獲取數(shù)據(jù),并在上述鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)上述任意一個(gè)數(shù)據(jù)片段,并將上述任意一個(gè)數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端。較佳地,可以在將上述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量之后,依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)上述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段之前,還包括:根據(jù)針對(duì)每一個(gè)子數(shù)據(jù)量分別設(shè)置的本地存儲(chǔ)地址建立索引。這樣,在實(shí)際應(yīng)用中,就可以通過(guò)下述較佳的方式實(shí)現(xiàn)依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)上述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段:針對(duì)任意一個(gè)子數(shù)據(jù)量,在根據(jù)已建立的索引查找并確定相應(yīng)的本地存儲(chǔ)地址空閑時(shí),通過(guò)源站服務(wù)器獲取上述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段,并對(duì)應(yīng)存儲(chǔ)到相應(yīng)的本地存儲(chǔ)地址中。通過(guò)源站服務(wù)器獲取并存儲(chǔ)上述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段的較佳實(shí)現(xiàn)方式為:向該源站服務(wù)器發(fā)送上述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的Range請(qǐng)求,接收并存儲(chǔ)該源站服務(wù)器返回的上述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段。在實(shí)際應(yīng)用中,可以在確定上述待獲取文件的數(shù)據(jù)總量達(dá)到閾值時(shí),依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取上述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并分別存儲(chǔ)在不同的存儲(chǔ)器中,以解決邊緣Cache服務(wù)器中單個(gè)存儲(chǔ)器存儲(chǔ)壓力過(guò)大的問(wèn)題。上述存儲(chǔ)器可以是硬盤、磁盤等存儲(chǔ)硬件。本發(fā)明實(shí)施例的上述文件傳輸方法適用于基于Http (Hypertext transferprotocol,超文本傳輸協(xié)議)協(xié)議下的內(nèi)容分發(fā)過(guò)程,在這一過(guò)程中,執(zhí)行上述操作的主體可以是邊緣Cache服務(wù)器。邊緣Cache服務(wù)器可以將獲取到的上述待獲取文件中的每一個(gè)數(shù)據(jù)片段當(dāng)作一個(gè)單獨(dú)的object(文件),分別存儲(chǔ)在不同的物理地址中,以緩解邊緣Cache服務(wù)器中單個(gè)存儲(chǔ)器的存儲(chǔ)壓力。下面以圖4和圖5中的基于Http協(xié)議的分片存儲(chǔ)內(nèi)容分發(fā)過(guò)程為例,說(shuō)明在⑶N領(lǐng)域中本發(fā)明實(shí)施例設(shè)計(jì)的文件傳輸方法的較佳實(shí)現(xiàn)方式。參閱圖4所示,在接收到客戶端發(fā)送的不攜帶Range的文件請(qǐng)求時(shí),邊緣Cache服務(wù)器執(zhí)行下述步驟:步驟401:接收客戶端發(fā)送的不攜帶Range的文件請(qǐng)求,該不攜帶Range的文件請(qǐng)求至少攜帶待獲取文件的數(shù)據(jù)總量。步驟402:在不攜帶Range的文件請(qǐng)求前添加Range請(qǐng)求頭,將其轉(zhuǎn)化成攜帶Range的文件請(qǐng)求。 步驟403:將上述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量,根據(jù)每一個(gè)劃分出的子數(shù)據(jù)量,將上述攜帶Range的文件請(qǐng)求轉(zhuǎn)化成上述若干子數(shù)據(jù)量分別對(duì)應(yīng)的Range請(qǐng)求,針對(duì)第一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的Range請(qǐng)求執(zhí)行步驟404。實(shí)際應(yīng)用中,邊緣Cache服務(wù)器也可以不采用上述步驟402和步驟403,而直接將步驟401中待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量,根據(jù)每一個(gè)劃分出的子數(shù)據(jù)量,將步驟401中不攜帶Range的文件請(qǐng)求轉(zhuǎn)化成上述若干子數(shù)據(jù)量分別對(duì)應(yīng)的Range請(qǐng)求。例如,在第一個(gè)子數(shù)據(jù)量的大小為100萬(wàn)字節(jié)時(shí),對(duì)應(yīng)第一個(gè)子數(shù)據(jù)量的Range請(qǐng)求頭的格式為Range:bytes=0_999999,其Range offset (開始字節(jié))為O,存儲(chǔ)地址長(zhǎng)度為100萬(wàn)字節(jié),其中,存儲(chǔ)地址長(zhǎng)度即為Range區(qū)間的長(zhǎng)度。步驟404:判斷本地是否存儲(chǔ)有當(dāng)前Range請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)片段,若是,執(zhí)行步驟407,否則,執(zhí)行步驟405。邊緣Cache服務(wù)器在判斷出當(dāng)前Range請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)片段沒有被緩存時(shí),進(jìn)入分片MISS回源流程(即進(jìn)入步驟405),當(dāng)前Range請(qǐng)求對(duì)應(yīng)的子數(shù)據(jù)量的大小即為相應(yīng)數(shù)據(jù)片段的大小,當(dāng)前Range請(qǐng)求的Range offset其即為相應(yīng)數(shù)據(jù)片段的offset。步驟405:向源站服務(wù)器發(fā)送當(dāng)前Range請(qǐng)求,進(jìn)入步驟406。步驟406:接收源站服務(wù)器返回的數(shù)據(jù)片段,并將該數(shù)據(jù)片段存儲(chǔ)到相應(yīng)的本地存儲(chǔ)地址中,同時(shí)將該數(shù)據(jù)片段發(fā)送給客戶端,進(jìn)入步驟408。上述步驟406的具體實(shí)現(xiàn)過(guò)程為:接收源站服務(wù)器針對(duì)當(dāng)前Range請(qǐng)求返回的數(shù)據(jù)片段,并將該數(shù)據(jù)片段作為單獨(dú)的Object (對(duì)象)存儲(chǔ)到相應(yīng)的本地存儲(chǔ)地址中,同時(shí)將該數(shù)據(jù)片段發(fā)送給客戶端。步驟407:將本地存儲(chǔ)的當(dāng)前Range請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)片段發(fā)送給客戶端。步驟408:判斷是否已經(jīng)將相應(yīng)待獲取文件的所有數(shù)據(jù)片段都發(fā)送給了客戶端,若是,則結(jié)束當(dāng)前流程,否則,進(jìn)入步驟409。步驟409:獲取下一個(gè)Range請(qǐng)求,返回步驟404。
邊緣Cache服務(wù)器可以通過(guò)下述兩種較佳的實(shí)現(xiàn)方式實(shí)現(xiàn)步驟404:方式一、邊緣Cache服務(wù)器可以將當(dāng)前Range請(qǐng)求中的Range offset和存儲(chǔ)地址長(zhǎng)度(或子數(shù)據(jù)量大小)作為相應(yīng)的索引因子,存儲(chǔ)到索引中,以便檢索。這樣,針對(duì)每一個(gè)Range請(qǐng)求,邊緣Cache服務(wù)器先根據(jù)當(dāng)前Range請(qǐng)求中的Range offset和存儲(chǔ)地址長(zhǎng)度(或子數(shù)據(jù)量大小),查找索引:若在索引中找到對(duì)應(yīng)的記錄,則判定相應(yīng)數(shù)據(jù)片段已經(jīng)被緩存在本地了,直接進(jìn)入HIT流程;若沒有在索引中找到對(duì)應(yīng)的記錄,則判定相應(yīng)數(shù)據(jù)片段沒有被緩存在本地,進(jìn)入分片MISS回源流程。方式二、邊緣Cache服務(wù)器直接規(guī)劃每一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的本地存儲(chǔ)地址,并將每一個(gè)子數(shù)據(jù)量自對(duì)應(yīng)的Range請(qǐng)求的Range offset和存儲(chǔ)地址長(zhǎng)度(或子數(shù)據(jù)量大小)作為索引因子,其中,每一個(gè)子數(shù)據(jù)量的索引因子和相應(yīng)的本地存儲(chǔ)地址是一一對(duì)應(yīng)關(guān)系。這樣,針對(duì)每一個(gè)Range請(qǐng)求,邊緣Cache服務(wù)器先根據(jù)該Range請(qǐng)求的Range offset和存儲(chǔ)地址長(zhǎng)度(或子數(shù)據(jù)量大小),查找索引,找出對(duì)應(yīng)的本地存儲(chǔ)地址:若確定對(duì)應(yīng)的本地存儲(chǔ)地址中已存儲(chǔ)有數(shù)據(jù),則判定相應(yīng)的數(shù)據(jù)片段已經(jīng)被緩存在本地了,直接進(jìn)入HIT流程;若確定對(duì)應(yīng)的本地存儲(chǔ)地址空閑,則判定相應(yīng)的數(shù)據(jù)片段沒有被緩存在本地,進(jìn)入分片MISS回源流程。上述方式一和方式二中,HIT流程是指:邊緣Cache服務(wù)器直接從本地緩存中讀取當(dāng)前Range請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)片段,并發(fā)送給客戶端。分片MISS回源流程是指:邊緣Cache服務(wù)器通過(guò)源站服務(wù)器獲取當(dāng)前Range請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)片段,存儲(chǔ)到本地,并發(fā)送給客戶端。在圖4的步驟406中,邊緣Cache服務(wù)器在接收源站服務(wù)器針對(duì)當(dāng)前Range請(qǐng)求返回的數(shù)據(jù)片段時(shí),如果鏈路中斷,就丟棄已獲取的當(dāng)前Range請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)片段中的已獲取數(shù)據(jù),返回步驟405,重新建立鏈路(該鏈路即為分片MISS回源鏈路),在鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)該數(shù)據(jù)片段,并將該數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端。圖4中文件傳輸方法,將客戶端的請(qǐng)求轉(zhuǎn)換成多個(gè)Range請(qǐng)求,并根據(jù)Range請(qǐng)求中的Range offset和存儲(chǔ)地址長(zhǎng)度,確定相應(yīng)數(shù)據(jù)片段是否已經(jīng)被緩存在本地,若是,則直接讀取相應(yīng)數(shù)據(jù)片段并轉(zhuǎn)發(fā)給客戶端,否則,采用Range請(qǐng)求進(jìn)入分片MISS回源流程,并將每一個(gè)Range請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)片段作為一個(gè)單獨(dú)的Object,分別進(jìn)行物理存儲(chǔ),從而實(shí)現(xiàn)將較大文件分散存儲(chǔ)到多塊存儲(chǔ)器(例如,磁盤等)的目的,同時(shí)在分片MISS回源流程中,如果鏈路不穩(wěn)定,在鏈路斷開時(shí),丟棄當(dāng)前數(shù)據(jù)片段中已獲取的數(shù)據(jù),在鏈路恢復(fù)時(shí)重新獲取并存儲(chǔ)該數(shù)據(jù)片段,并不會(huì)影響已經(jīng)獲取到的其它數(shù)據(jù)片段,進(jìn)而最大限度的減少了回源量。參閱圖5所示,在接收到客戶端發(fā)送的攜帶有Range的文件請(qǐng)求時(shí),邊緣Cache服務(wù)器執(zhí)行下述步驟:步驟501:接收客戶端發(fā)送的攜帶有Range的文件請(qǐng)求,該攜帶Range的文件請(qǐng)求至少攜帶待獲取文件的數(shù)據(jù)總量。步驟502:將上述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量,根據(jù)每一個(gè)劃分出的子數(shù)據(jù)量,將上述攜帶Range的文件請(qǐng)求轉(zhuǎn)化成上述若干子數(shù)據(jù)量分別對(duì)應(yīng)的Range請(qǐng)求,并針對(duì)第一個(gè)子數(shù)據(jù) 量對(duì)應(yīng)的Range請(qǐng)求執(zhí)行步驟503。
每一個(gè)Range請(qǐng)求中包含了 Range的起始位置(即Range offset)和結(jié)束位置。步驟503:判斷本地是否存儲(chǔ)有當(dāng)前Range請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)片段,若是,執(zhí)行步驟506,否則,執(zhí)行步驟504。步驟504:向源站服務(wù)器發(fā)送當(dāng)前Range請(qǐng)求,進(jìn)入步驟505。步驟505:接收源站服務(wù)器返回的數(shù)據(jù)片段,并將該數(shù)據(jù)片段存儲(chǔ)到相應(yīng)的本地存儲(chǔ)地址中,同時(shí)將該數(shù)據(jù)片段發(fā)送給客戶端,進(jìn)入步驟507。上述步驟505的具體實(shí)現(xiàn)過(guò)程為:接收源站服務(wù)器針對(duì)當(dāng)前Range請(qǐng)求返回的數(shù)據(jù)片段,并將該數(shù)據(jù)片段作為單獨(dú)的Object存儲(chǔ)到相應(yīng)的本地存儲(chǔ)地址中,同時(shí)將該數(shù)據(jù)片段發(fā)送給客戶端。步驟506:將本地存儲(chǔ)的當(dāng)前Range請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)片段發(fā)送給客戶端。步驟507:判斷是否已經(jīng)將相應(yīng)待獲取文件的所有數(shù)據(jù)片段都發(fā)送給了客戶端,若是,則結(jié)束當(dāng)前流程,否則,進(jìn)入步驟508。步驟508:獲取下一個(gè)Range請(qǐng)求,返回步驟503。圖5對(duì)應(yīng)的流程包含的步驟503-508和圖4對(duì)應(yīng)的流程包含的步驟404-409類似?;谕辉O(shè)計(jì)思路,本發(fā)明實(shí)施例設(shè)計(jì)了一種文件傳輸裝置,參閱圖6所示,該裝置包括:接收模塊601,用于接收客戶端發(fā)送的文件請(qǐng)求,該文件請(qǐng)求至少攜帶待獲取文件的數(shù)據(jù)總量;規(guī)劃模塊602,用于將上述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量;執(zhí)行模塊603,用于依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)上述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并將其轉(zhuǎn)發(fā)至客戶端;其中,在獲取任意一個(gè)數(shù)據(jù)片段時(shí),若鏈路中斷,則丟棄上述任意一個(gè)數(shù)據(jù)片段中的已獲取數(shù)據(jù),并在上述鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)上述任意一個(gè)數(shù)據(jù)片段,并將上述任意一個(gè)數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端。較佳地,上述執(zhí)行模塊603,還用于:在上述規(guī)劃模塊602將上述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量之后,上述執(zhí)行模塊603依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)上述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段之前,根據(jù)針對(duì)每一個(gè)子數(shù)據(jù)量分別設(shè)置的本地存儲(chǔ)地址建立索引。上述執(zhí)行模塊603,具體用于:針對(duì)任意一個(gè)子數(shù)據(jù)量,在根據(jù)已建立的索引查找并確定相應(yīng)的本地存儲(chǔ)地址空閑時(shí),通過(guò)源站服務(wù)器獲取上述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段,并對(duì)應(yīng)存儲(chǔ)到相應(yīng)的本地存儲(chǔ)地址中。上述執(zhí)行模塊603,具體用于:向上述源站服務(wù)器發(fā)送上述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的片段Range請(qǐng)求,接收并存儲(chǔ)上述源站服務(wù)器返回的上述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段。實(shí)際應(yīng)用中,較佳地,上述執(zhí)行模塊603可以在確定上述待獲取文件的數(shù)據(jù)總量達(dá)到閾值時(shí),依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取上述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并分別存儲(chǔ)在不同的存儲(chǔ)器中。上述裝置是與方法流程一一對(duì)應(yīng)的,在此不再贅述。本發(fā)明實(shí)施例中,將客戶端請(qǐng)求 的待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量,依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)該待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并將其轉(zhuǎn)發(fā)給該客戶端,在獲取任意一個(gè)數(shù)據(jù)片段時(shí),若鏈路中斷,則丟棄該任意一個(gè)數(shù)據(jù)片段中的已獲取數(shù)據(jù),并在所述鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)該任意一個(gè)數(shù)據(jù)片段,并將該任意一個(gè)數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端,避免了在鏈路中斷后,重新獲取整個(gè)文件的情況,從而在最大限度上減少了回源量,減小了系統(tǒng)資源的浪費(fèi),再者,本發(fā)明實(shí)施例采取將存儲(chǔ)客戶端請(qǐng)求的待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量,分別存儲(chǔ)每一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段的方式,解決了單個(gè)存儲(chǔ)器存儲(chǔ)壓力過(guò)大的問(wèn)題,并且不會(huì)造成的系統(tǒng)復(fù)雜性的增加,可以降低服務(wù)成本。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本 領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明實(shí)施例進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明實(shí)施例的精神和范圍。這樣,倘若本發(fā)明實(shí)施例的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種文件傳輸方法,其特征在于,包括: 接收客戶端發(fā)送的文件請(qǐng)求,所述文件請(qǐng)求至少攜帶待獲取文件的數(shù)據(jù)總量; 將所述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量; 依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)所述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并將其轉(zhuǎn)發(fā)至客戶端,其中,在獲取任意一個(gè)數(shù)據(jù)片段時(shí),若鏈路中斷,則丟棄所述任意一個(gè)數(shù)據(jù)片段中的已獲取數(shù)據(jù),并在所述鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)所述任意一個(gè)數(shù)據(jù)片段,并將所述任意一個(gè)數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端。
2.如權(quán)利要求1所述的方法,其特征在于,在將所述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量之后,依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)所述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段之前,還包括: 根據(jù)針對(duì)每一個(gè)子數(shù)據(jù)量分別設(shè)置的本地存儲(chǔ)地址建立索引。
3.如權(quán)利要求2所述的方法,其特征在于,依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)所述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,具體包括: 針對(duì)任意一個(gè)子數(shù)據(jù)量,在根據(jù)已建立的索引查找并確定相應(yīng)的本地存儲(chǔ)地址空閑時(shí),通過(guò)源站服務(wù)器獲取所述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段,并對(duì)應(yīng)存儲(chǔ)到相應(yīng)的本地存儲(chǔ)地址中。
4.如權(quán)利要求3所述的方法,其特征在于,通過(guò)源站服務(wù)器獲取所述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段,具體包括: 向所述源站服務(wù)器發(fā)送所 述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的片段Range請(qǐng)求,接收并存儲(chǔ)所述源站服務(wù)器返回的所述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段。
5.如權(quán)利要求1-4中任一項(xiàng)所述的方法,其特征在于,依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)所述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,具體包括: 在確定所述待獲取文件的數(shù)據(jù)總量達(dá)到閾值時(shí),依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取所述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并分別存儲(chǔ)在不同的存儲(chǔ)器中。
6.一種文件傳輸裝置,其特征在于,包括: 接收模塊,用于接收客戶端發(fā)送的文件請(qǐng)求,所述文件請(qǐng)求至少攜帶待獲取文件的數(shù)據(jù)總量; 規(guī)劃模塊,用于將所述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量; 執(zhí)行模塊,用于依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)所述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并將其轉(zhuǎn)發(fā)至客戶端;其中,在獲取任意一個(gè)數(shù)據(jù)片段時(shí),若鏈路中斷,則丟棄所述任意一個(gè)數(shù)據(jù)片段中的已獲取數(shù)據(jù),并在所述鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)所述任意一個(gè)數(shù)據(jù)片段,并將所述任意一個(gè)數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端。
7.如權(quán)利要求6所述的裝置,其特征在于,所述執(zhí)行模塊,還用于: 在所述規(guī)劃模塊將所述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量之后,所述執(zhí)行模塊依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)所述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段之前,根據(jù)針對(duì)每一個(gè)子數(shù)據(jù)量分別設(shè)置的本地存儲(chǔ)地址建立索引。
8.如權(quán)利要求7所述的裝置,其特征在于,所述執(zhí)行模塊,具體用于: 針對(duì)任意一個(gè)子數(shù)據(jù)量,在根據(jù)已建立的索引查找并確定相應(yīng)的本地存儲(chǔ)地址空閑時(shí),通過(guò)源站服務(wù)器獲取所述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段,并對(duì)應(yīng)存儲(chǔ)到相應(yīng)的本地存儲(chǔ)地址中。
9.如權(quán)利要求8所述的裝置,其特征在于,所述執(zhí)行模塊,具體用于: 向所述源站服務(wù)器發(fā)送所述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的片段Range請(qǐng)求,接收并存儲(chǔ)所述源站服務(wù)器返回的所述任意一個(gè)子數(shù)據(jù)量對(duì)應(yīng)的數(shù)據(jù)片段。
10.如權(quán)利要求6-9中任一項(xiàng)所述的裝置,其特征在于,所述執(zhí)行模塊,具體用于: 在確定所述待獲取文件的數(shù)據(jù)總量達(dá)到閾值時(shí),依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取所述待獲取文 件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并分別存儲(chǔ)在不同的存儲(chǔ)器中。
全文摘要
本發(fā)明公開了一種文件傳輸方法及裝置,該方法包括接收客戶端發(fā)送的文件請(qǐng)求,所述文件請(qǐng)求至少攜帶待獲取文件的數(shù)據(jù)總量;將所述待獲取文件的數(shù)據(jù)總量劃分成若干子數(shù)據(jù)量;依次根據(jù)劃分出的每一個(gè)子數(shù)據(jù)量,獲取并存儲(chǔ)所述待獲取文件中相應(yīng)數(shù)據(jù)量大小的數(shù)據(jù)片段,并將其轉(zhuǎn)發(fā)至客戶端,其中,在獲取任意一個(gè)數(shù)據(jù)片段時(shí),若鏈路中斷,則丟棄所述任意一個(gè)數(shù)據(jù)片段中的已獲取數(shù)據(jù),并在所述鏈路恢復(fù)時(shí),重新獲取并存儲(chǔ)所述任意一個(gè)數(shù)據(jù)片段,并將所述任意一個(gè)數(shù)據(jù)片段轉(zhuǎn)發(fā)至客戶端,用以解決現(xiàn)有技術(shù)在鏈路不穩(wěn)定的情況下傳輸大文件時(shí),回源量和回源壓力過(guò)度增加問(wèn)題。
文檔編號(hào)H04L29/08GK103227826SQ201310142780
公開日2013年7月31日 申請(qǐng)日期2013年4月23日 優(yōu)先權(quán)日2013年4月23日
發(fā)明者田江波, 栗偉 申請(qǐng)人:藍(lán)汛網(wǎng)絡(luò)科技(北京)有限公司