本發(fā)明涉及計(jì)算機(jī)軟件及網(wǎng)絡(luò)應(yīng)用技術(shù)領(lǐng)域,具體涉及一種在云存儲(chǔ)系統(tǒng)中實(shí)現(xiàn)文件快速上傳的方法。
背景技術(shù):
隨著云計(jì)算時(shí)代的到來(lái),可擴(kuò)展、高可用、高安全的云存儲(chǔ)成為一個(gè)主流方向。公有云、私有云、企業(yè)云等紛紛出現(xiàn),向大眾或小區(qū)域的用戶提供云存儲(chǔ)服務(wù)。
用戶數(shù)據(jù)內(nèi)容多種多樣。但某些云存儲(chǔ)系統(tǒng)所面向的用戶擁有的數(shù)據(jù)可能具有很大的重復(fù)性。若云存儲(chǔ)系統(tǒng)針能夠辨別這類數(shù)據(jù),不僅能夠節(jié)省存儲(chǔ)空間,同樣可以節(jié)省服務(wù)的網(wǎng)絡(luò)資源以及服務(wù)提供者和用戶的時(shí)間成本,提高用戶體驗(yàn)。
當(dāng)前的某些云存儲(chǔ)環(huán)境主要使用場(chǎng)景是存儲(chǔ)用戶上傳的數(shù)據(jù)文件,不同用戶的文件可能會(huì)具有較高的重復(fù)性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題是:本發(fā)明針對(duì)以上問(wèn)題,提供一種在云存儲(chǔ)系統(tǒng)中實(shí)現(xiàn)文件快速上傳的方法。
本發(fā)明所采用的技術(shù)方案為:
一種在云存儲(chǔ)系統(tǒng)中實(shí)現(xiàn)文件快速上傳的方法,所述方法在使用HTTP1.1協(xié)議向云存儲(chǔ)服務(wù)上傳文件時(shí),云存儲(chǔ)服務(wù)判斷該文件是否已經(jīng)被存儲(chǔ)過(guò),如果該文件已經(jīng)存儲(chǔ)過(guò),則云存儲(chǔ)中斷接受文件,向用戶發(fā)送已經(jīng)成功接受的消息,從而實(shí)現(xiàn)文件的快速上傳,極大的節(jié)省網(wǎng)絡(luò)資源及時(shí)間成本。
當(dāng)前的某些云存儲(chǔ)環(huán)境主要使用場(chǎng)景是存儲(chǔ)用戶上傳的數(shù)據(jù)文件,不同用戶的文件可能會(huì)具有較高的重復(fù)性。本發(fā)明不是加快了網(wǎng)絡(luò)傳輸速率,而是阻止了不必要上傳文件的上傳操作,節(jié)省了傳輸時(shí)間。
所述方法通過(guò)在云存儲(chǔ)服務(wù)端持久化當(dāng)前被存儲(chǔ)的每個(gè)文件的摘要信息,在用戶上傳文件時(shí)通過(guò)對(duì)比摘要信息判斷被上傳的文件是否已經(jīng)存在于云存儲(chǔ)服務(wù)中而實(shí)現(xiàn)文件的快速上傳。
持久化(Persistence),即把數(shù)據(jù)(如內(nèi)存中的對(duì)象)保存到可永久保存的存儲(chǔ)設(shè)備中(如磁盤)。持久化的主要應(yīng)用是將內(nèi)存中的對(duì)象存儲(chǔ)在關(guān)系型的數(shù)據(jù)庫(kù)中,當(dāng)然也可以存儲(chǔ)在磁盤文件中、XML數(shù)據(jù)文件中等等。持久化是將程序數(shù)據(jù)在持久狀態(tài)和瞬時(shí)狀態(tài)間轉(zhuǎn)換的機(jī)制。
所述文件摘要信息的獲取方式及兩個(gè)文件是否相同的判斷過(guò)程如下:
1)通過(guò)云存儲(chǔ)服務(wù)端一個(gè)云存儲(chǔ)系統(tǒng)軟件,其內(nèi)部持久化了當(dāng)前所有已存儲(chǔ)文件各自的MD5值以及各自頭部1024字節(jié)數(shù)據(jù)的MD5值;
2)用戶在向云存儲(chǔ)系統(tǒng)上傳數(shù)據(jù)時(shí),預(yù)先計(jì)算出該文件的MD5值,將其寫入上傳請(qǐng)求的標(biāo)頭Header中;
3) 云存儲(chǔ)系統(tǒng)在接受到請(qǐng)求后,第一步先接收1024字節(jié)的數(shù)據(jù),計(jì)算MD5值,同時(shí)讀取用戶計(jì)算出的文件整體MD5值,與持久化的數(shù)據(jù)對(duì)比,判斷該文件是否已經(jīng)存儲(chǔ)過(guò);
4)如果已經(jīng)存儲(chǔ)過(guò),則中斷上傳請(qǐng)求;如果未存儲(chǔ)過(guò),則繼續(xù)收數(shù)據(jù)進(jìn)行存儲(chǔ)。
從而實(shí)現(xiàn)了在一個(gè)HTTP請(qǐng)求中實(shí)現(xiàn)文件快速上傳的方法。
標(biāo)頭 (header) 是服務(wù)器以 HTTP 協(xié)議傳 HTML 資料到瀏覽器前所送出的字串,在標(biāo)頭與 HTML 文件之間尚需空一行分隔。
計(jì)算文件的MD5值(一般可把MD5稱為文件的“摘要信息”)進(jìn)行判斷是一種有效且高效的方法。兩段不同數(shù)據(jù)的MD5值相同的概率極低,甚至可以說(shuō)不會(huì)相同;如果采用二次判斷的方式,對(duì)比不同文件兩處數(shù)據(jù)段的MD5值,我們這里認(rèn)為它們絕對(duì)不會(huì)相同。本發(fā)明正是基于這個(gè)假設(shè)做出的設(shè)計(jì)。
基于TCP協(xié)議的HTTP協(xié)議是一種用普遍使用的可靠數(shù)據(jù)傳輸方式。HTTP1.1協(xié)議支持用戶在請(qǐng)求中添加自定義的Header向服務(wù)器傳輸區(qū)別于被上傳數(shù)據(jù)額外的信息。數(shù)據(jù)的MD5值可以通過(guò)這種方式發(fā)送給服務(wù)器。
本發(fā)明的有益效果為:
本發(fā)明方法不是加快了網(wǎng)絡(luò)傳輸速率,而是阻止了不必要上傳文件的上傳操作,節(jié)省了傳輸時(shí)間,從而實(shí)現(xiàn)文件的快速上傳,極大的節(jié)省網(wǎng)絡(luò)資源及時(shí)間成本。
具體實(shí)施方式
下面結(jié)合具體實(shí)施方式對(duì)本發(fā)明進(jìn)一步說(shuō)明:
實(shí)施例1:
一種在云存儲(chǔ)系統(tǒng)中實(shí)現(xiàn)文件快速上傳的方法,所述方法在使用HTTP1.1協(xié)議向云存儲(chǔ)服務(wù)上傳文件時(shí),云存儲(chǔ)服務(wù)判斷該文件是否已經(jīng)被存儲(chǔ)過(guò),如果該文件已經(jīng)存儲(chǔ)過(guò),則云存儲(chǔ)中斷接受文件,向用戶發(fā)送已經(jīng)成功接受的消息,從而實(shí)現(xiàn)文件的快速上傳,極大的節(jié)省網(wǎng)絡(luò)資源及時(shí)間成本。
當(dāng)前的某些云存儲(chǔ)環(huán)境主要使用場(chǎng)景是存儲(chǔ)用戶上傳的數(shù)據(jù)文件,不同用戶的文件可能會(huì)具有較高的重復(fù)性。本發(fā)明不是加快了網(wǎng)絡(luò)傳輸速率,而是阻止了不必要上傳文件的上傳操作,節(jié)省了傳輸時(shí)間。
實(shí)施例2
在實(shí)施例1的基礎(chǔ)上,本實(shí)施例所述方法通過(guò)在云存儲(chǔ)服務(wù)端持久化當(dāng)前被存儲(chǔ)的每個(gè)文件的摘要信息,在用戶上傳文件時(shí)通過(guò)對(duì)比摘要信息判斷被上傳的文件是否已經(jīng)存在于云存儲(chǔ)服務(wù)中而實(shí)現(xiàn)文件的快速上傳。
持久化(Persistence),即把數(shù)據(jù)(如內(nèi)存中的對(duì)象)保存到可永久保存的存儲(chǔ)設(shè)備中(如磁盤)。持久化的主要應(yīng)用是將內(nèi)存中的對(duì)象存儲(chǔ)在關(guān)系型的數(shù)據(jù)庫(kù)中,當(dāng)然也可以存儲(chǔ)在磁盤文件中、XML數(shù)據(jù)文件中等等。持久化是將程序數(shù)據(jù)在持久狀態(tài)和瞬時(shí)狀態(tài)間轉(zhuǎn)換的機(jī)制。
實(shí)施例3
在實(shí)施例2的基礎(chǔ)上,本實(shí)施例所述文件摘要信息的獲取方式及兩個(gè)文件是否相同的判斷過(guò)程如下:
1)通過(guò)云存儲(chǔ)服務(wù)端一個(gè)云存儲(chǔ)系統(tǒng)軟件,其內(nèi)部持久化了當(dāng)前所有已存儲(chǔ)文件各自的MD5值以及各自頭部1024字節(jié)數(shù)據(jù)的MD5值;
2)用戶在向云存儲(chǔ)系統(tǒng)上傳數(shù)據(jù)時(shí),預(yù)先計(jì)算出該文件的MD5值,將其寫入上傳請(qǐng)求的標(biāo)頭Header中;
3) 云存儲(chǔ)系統(tǒng)在接受到請(qǐng)求后,第一步先接收1024字節(jié)的數(shù)據(jù),計(jì)算MD5值,同時(shí)讀取用戶計(jì)算出的文件整體MD5值,與持久化的數(shù)據(jù)對(duì)比,判斷該文件是否已經(jīng)存儲(chǔ)過(guò);
4)如果已經(jīng)存儲(chǔ)過(guò),則中斷上傳請(qǐng)求;如果未存儲(chǔ)過(guò),則繼續(xù)收數(shù)據(jù)進(jìn)行存儲(chǔ)。
從而實(shí)現(xiàn)了在一個(gè)HTTP請(qǐng)求中實(shí)現(xiàn)文件快速上傳的方法。
標(biāo)頭 (header) 是服務(wù)器以 HTTP 協(xié)議傳 HTML 資料到瀏覽器前所送出的字串,在標(biāo)頭與 HTML 文件之間尚需空一行分隔。
實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。