本發(fā)明實施例涉及通信技術(shù)領(lǐng)域,尤其涉及一種對象文件的追加、截斷方法及裝置。
背景技術(shù):
對象存儲與文件存儲的存儲結(jié)構(gòu)不同。傳統(tǒng)的文件存儲是通過目錄樹的結(jié)構(gòu)對文件進(jìn)行存儲,然而對象存儲并不以目錄分層的結(jié)構(gòu)存儲,而是通過將每一對象都置于同一存儲池中,形成扁平且相同的層級,每一級的每個元素在存儲系統(tǒng)中都有唯一的標(biāo)識,用戶設(shè)備通過此標(biāo)識來訪問存儲池或?qū)ο?。由于扁平的?shù)據(jù)組織結(jié)構(gòu)拋棄了嵌套式的文件夾,從而避免了維護(hù)龐大的目錄樹所導(dǎo)致的負(fù)擔(dān)過重。在大數(shù)據(jù)和互聯(lián)網(wǎng)時代,存儲的文件以及存儲的對象高達(dá)上百萬個,單位時間內(nèi)的訪問次數(shù)以及并發(fā)訪問量也達(dá)到了前所未有的量級,在這種情況下,采用傳統(tǒng)的文件存儲形式,即目錄樹形式將會給存儲系統(tǒng)帶來很大的開銷以及負(fù)擔(dān),這將會嚴(yán)重的制約著處理效率,成為系統(tǒng)提速的瓶頸。對象存儲在提供海量的存儲空間的同時,超文本傳輸協(xié)議(HTTP,Hyper Text Transfer Protocol)接口也簡化了開發(fā)者的開發(fā)流程。因此,對象存儲受到了大量的關(guān)注,并得到了迅速的發(fā)展。
然而,發(fā)明人發(fā)現(xiàn)在對象存儲中,若要對對象文件進(jìn)行追加或截斷的操作,只能通過將追加后的對象文件或截斷后的對象文件向服務(wù)器重新上傳。當(dāng)用戶存儲日志或者處理大數(shù)據(jù)時,平均每個小時均需要向?qū)ο笪募M(jìn)行一次追加或截斷操作,若采用現(xiàn)有技術(shù)每次將追加或截斷后的對象文件重傳一遍,將嚴(yán)重浪費公網(wǎng)帶寬,影響服務(wù)器的處理效率。
綜上所述,若用戶采用現(xiàn)有技術(shù)對日志進(jìn)行存儲或者對大數(shù)據(jù)進(jìn)行處理,平均每小時均需將追加或截斷后的對象文件重傳一遍,導(dǎo)致公網(wǎng)帶寬的利用率低。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種對象文件的追加、截斷方法及裝置,用以解決現(xiàn)有技術(shù)中公網(wǎng)帶寬的利用率低,存儲對象文件的服務(wù)器的處理效率低的問題,實現(xiàn)提高公網(wǎng)帶寬的利用率。
本發(fā)明實施例提供一種對象文件的追加方法,包括:
接收用戶設(shè)備發(fā)送的預(yù)約請求,其中,所述預(yù)約請求包括需要進(jìn)行追加操作的對象文件的標(biāo)識;
根據(jù)所述需要進(jìn)行追加操作的對象文件的標(biāo)識,確定該標(biāo)識對應(yīng)的對象文件,并向所述用戶設(shè)備返回確定的對象文件是否可追加的響應(yīng);
若返回的響應(yīng)為確定的對象文件可追加的響應(yīng),則接收用戶設(shè)備發(fā)送的針對所述對象文件的追加請求,其中,所述追加請求包括追加內(nèi)容以及追加的起始位置;
根據(jù)所述追加內(nèi)容以及所述追加的起始位置,對所述對象文件進(jìn)行追加,得到追加后的對象文件。
本發(fā)明實施例提供一種對象文件的截斷方法,包括:
接收用戶設(shè)備發(fā)送的截斷請求,其中,所述截斷請求包括:需要進(jìn)行截斷操作的對象文件的標(biāo)識以及截斷長度;
根據(jù)所述需要進(jìn)行截斷操作的對象文件的標(biāo)識,確定需要進(jìn)行截斷操作的對象文件;
根據(jù)所述截斷長度,對所述對象文件進(jìn)行截斷,得到截斷后的對象文件。
本發(fā)明實施例提供一種對象文件的追加裝置,包括:
第一接收模塊,用于接收用戶設(shè)備發(fā)送的包括需要進(jìn)行追加操作的對象文件的標(biāo)識的預(yù)約請求;
響應(yīng)模塊,用于根據(jù)所述需要進(jìn)行追加操作的對象文件的標(biāo)識,確定需要進(jìn)行追加操作的對象文件,并向所述用戶設(shè)備返回所述對象文件是否可追加的響應(yīng);
第二接收模塊,用于若返回的響應(yīng)為所述對象文件可追加的響應(yīng),則接收用戶設(shè)備發(fā)送的針對對象文件的追加請求,其中,所述追加請求包括追加內(nèi)容以及追加的起始位置;
追加模塊,用于根據(jù)所述追加內(nèi)容以及所述追加的起始位置,對所述對象文件進(jìn)行追加,得到追加后的對象文件。
本發(fā)明實施例提供一種對象文件的截斷裝置,包括:
接收模塊,用于接收用戶設(shè)備發(fā)送的截斷請求,其中,所述截斷請求包括,需要進(jìn)行截斷操作的對象文件的標(biāo)識以及截斷的起始位置;
確定模塊,用于根據(jù)所述需要進(jìn)行截斷操作的對象文件的標(biāo)識,確定需要進(jìn)行截斷操作的對象文件;
截斷模塊,用于根據(jù)所述截斷的起始位置,對所述對象文件進(jìn)行截斷,得到截斷后的對象文件。
本發(fā)明實施例提供的對象文件的追加、截斷方法及裝置,通過追加請求中的追加的起始位置或截斷請求中的截斷長度,從而確定將追加內(nèi)容添加到對象文件中的位置,或確定截斷對象文件的截斷區(qū)域,從而實現(xiàn)在服務(wù)器側(cè)對對象文件的追加操作與截斷操作,避免了在用戶設(shè)備側(cè)對對象文件進(jìn)行追加操作或截斷操作,再將追加或截斷后的對象文件重新上傳服務(wù)器,在服務(wù)器側(cè)對對象文件進(jìn)行操作,減小了追加或截斷后的對象文件上傳所占的帶寬,提高了公網(wǎng)帶寬的利用率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明對象文件的追加方法實施例流程圖;
圖2為本發(fā)明對象文件的追加方法實施例流程圖;
圖3為本發(fā)明對象文件的追加方法實施例流程圖;
圖4為本發(fā)明對象文件的截斷方法實施例流程圖;
圖5為本發(fā)明對象文件的截斷方法實施例流程圖;
圖6為本發(fā)明對象文件的截斷方法實施例流程圖;
圖7為本發(fā)明對象文件的追加裝置實施例結(jié)構(gòu)示意圖;
圖8為本發(fā)明對象文件的截斷裝置實施例結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實施例提供一種對象文件的追加、截斷方法及裝置,用以解決現(xiàn)有技術(shù)中公網(wǎng)帶寬的利用率低,存儲對象文件的服務(wù)器的處理效率低的問題,實現(xiàn)提高公網(wǎng)帶寬的利用率。
參見圖1,本發(fā)明實施例提供一種對象文件的追加方法,包括:
S101、接收用戶設(shè)備發(fā)送的預(yù)約請求,其中,所述預(yù)約請求包括需要進(jìn)行追加操作的對象文件的標(biāo)識;
S102、根據(jù)所述需要進(jìn)行追加操作的對象文件的標(biāo)識,確定該標(biāo)識對應(yīng)的對象文件,并向所述用戶設(shè)備返回確定的對象文件是否可追加的響應(yīng);
S103、若返回的響應(yīng)為確定的對象文件可追加的響應(yīng),則接收用戶設(shè)備發(fā)送的針對所述對象文件的追加請求,其中,所述追加請求包括追加內(nèi)容以及追加的起始位置;
S104、根據(jù)所述追加內(nèi)容以及所述追加的起始位置,對所述對象文件進(jìn)行追加,得到追加后的對象文件。
參見圖2,步驟S102中“向所述用戶設(shè)備返回確定的對象文件是否可追加的響應(yīng)”包括:
S201、判斷確定的對象文件是否設(shè)置有互斥鎖,其中,所述互斥鎖用于禁止除設(shè)置該互斥鎖的用戶設(shè)備以外的用戶設(shè)備追加或截斷設(shè)置互斥鎖的對象文件;
S202、若是,則向所述用戶設(shè)備返回所述對象文件不可追加的響應(yīng);否則,向所述用戶設(shè)備返回所述對象文件可追加的響應(yīng)。
其中,根據(jù)所述需要進(jìn)行追加操作的對象文件的標(biāo)識,查詢預(yù)設(shè)的數(shù)據(jù)庫,確定需要進(jìn)行追加操作的對象文件,根據(jù)確定的對象文件,再次查詢數(shù)據(jù)庫,確定該對象文件是否設(shè)置有互斥鎖。其中,所述數(shù)據(jù)庫中包括對象文件的標(biāo)識與該對象文件的映射關(guān)系,以及對象文件與該對象文件是否設(shè)置互斥鎖的映射關(guān)系,且所述映射關(guān)系均為一一映射。
本發(fā)明實施例中,通過在接收用戶設(shè)備發(fā)送追加請求之前,檢測需要進(jìn)行追加操作的對象文件是否被其他用戶設(shè)備設(shè)置有互斥鎖,避免了由于該對象文件被其他用戶設(shè)備設(shè)置有互斥鎖,導(dǎo)致的追加操作失敗,從而提高了追加操作的效率。
其中,所述對象文件可追加的響應(yīng)包括,所述對象文件的偏移位置,其中,所述用戶設(shè)備根據(jù)所述對象文件的偏移位置生成追加的起始位置以及追加的終止位置。
具體地,所述追加的起始位置為所述對象文件的偏移位置。
本發(fā)明實施例中,用戶設(shè)備接收服務(wù)器發(fā)送的對象文件可追加的響應(yīng),并根據(jù)該響應(yīng)中的對象文件的偏移位置,確定追加的起始位置以及追加的終止位置,并根據(jù)確定的追加的起始位置、追加的終止位置以及追加內(nèi)容,生成追加請求。通過根據(jù)服務(wù)器發(fā)送的偏移位置,確定追加范圍,即追加的起始位置以及追加的終止位置,從而避免服務(wù)器中記錄的該對象文件的長度與用戶設(shè)備中記錄的該對象文件的長度不一致,導(dǎo)致的追加失敗,從而提高了追加操作的效率。
其中,所述預(yù)約請求包括,追加內(nèi)容的長度;
具體地,步驟S202中若確定的對象文件沒有設(shè)置有互斥鎖,該方法還包括:
設(shè)定所述預(yù)約請求中追加內(nèi)容的長度為約定的追加長度;
在步驟S104根據(jù)所述追加內(nèi)容以及所述追加的起始位置,對所述對象文件進(jìn)行追加之前,該方法還包括:
判斷所述追加內(nèi)容的長度與約定的追加長度是否一致;
若所述追加內(nèi)容的長度與約定的追加長度不一致,則向所述用戶設(shè)備發(fā)送重新申請偏移位置的響應(yīng);若一致,則執(zhí)行步驟S104。
本發(fā)明實施例中,通過判斷追加的內(nèi)容的長度與約定的追加長度是否一致,確定是否進(jìn)行追加,實現(xiàn)了在接收到預(yù)約請求時,服務(wù)器為追加的內(nèi)容占位,提高了服務(wù)器進(jìn)行追加操作的速度,從而提高操作效率。
其中,步驟S201中確定的對象文件若未設(shè)置互斥鎖,該方法還包括:
對所述對象文件設(shè)置互斥鎖。
本發(fā)明實施例中,通過對確定的對象文件設(shè)置互斥鎖,從而防止多個用戶設(shè)備同時對同一對象文件進(jìn)行追加或截斷操作的問題,實現(xiàn)在同一時間只有一用戶設(shè)備對該對象文件進(jìn)行操作,禁止其他用戶對對象文件進(jìn)行追加或截斷操作。
其中,在步驟S104對所述對象文件進(jìn)行追加之后,該方法還包括:
去除對所述對象文件設(shè)置的互斥鎖。
本發(fā)明實施例中,在對所述對象文件進(jìn)行追加之后,去除對所述對象文件設(shè)置的互斥鎖,此時其他用戶設(shè)備亦可對該對象文件進(jìn)行追加或截斷操作。
為便于理解,下面將結(jié)合圖3,對對象文件追加的整體流程進(jìn)一步進(jìn)行解釋說明。
S301、用戶設(shè)備向服務(wù)器發(fā)送用于對對象文件追加的預(yù)約請求,其中,所述預(yù)約請求包括追加內(nèi)容的長度;
S302、所述服務(wù)器根據(jù)接收到的預(yù)約請求,判斷該對象文件是否為可追加狀態(tài);若所述對象文件為可追加狀態(tài),則執(zhí)行下述步驟;否則,返回所述對象文件不可追加的響應(yīng);
S303、所述服務(wù)器對所述對象文件設(shè)置互斥鎖,其中,所述互斥鎖用于禁止除所述用戶設(shè)備以外的用戶設(shè)備追加或截斷設(shè)置互斥鎖的對象文件;
S304、所述服務(wù)器設(shè)定所述預(yù)約請求中追加內(nèi)容的長度為約定追加長度;
S305、所述服務(wù)器返回包括所述對象文件的偏移位置的響應(yīng);
S306、所述用戶設(shè)備分析所述服務(wù)器返回的響應(yīng);若接收到的響應(yīng)為所述對象文件不可追加的響應(yīng),則繼續(xù)執(zhí)行步驟S301;
S307、若接收到的響應(yīng)為包括所述對象文件的偏移位置的響應(yīng),則根據(jù)所述對象文件的偏移位置,確定追加的起始位置及終止位置,生成并向所述服務(wù)器發(fā)送追加請求,其中,所述追加請求包括追加的起始位置、終止位置以及所述追加內(nèi)容;
S308、所述服務(wù)器根據(jù)接收到的追加請求,得到追加內(nèi)容,根據(jù)所述追加內(nèi)容,確定追加內(nèi)容的長度,并判斷確定的追加內(nèi)容的長度與約定追加長度是否相等;
S309、若是,則根據(jù)所述追加的起始位置及終止位置,對所述追加內(nèi)容進(jìn)行追加,生成追加后的對象文件,并返回包括追加后的對象文件的長度的響應(yīng),打開互斥鎖;否則,所述服務(wù)器打開互斥鎖,并返回寫入追加內(nèi)容失敗的響應(yīng);
S310、所述用戶設(shè)備接收所述服務(wù)器發(fā)送的響應(yīng),若接收到的響應(yīng)為包括追加后的對象文件的長度的響應(yīng),則所述用戶設(shè)備更新該對象文件的長度參數(shù);若接收到的響應(yīng)為寫入追加內(nèi)容失敗的響應(yīng),則重新執(zhí)行步驟S301。
其中,不限制步驟S303、步驟S304以及步驟S305的執(zhí)行順序。
具體地,步驟S307中根據(jù)所述對象文件的偏移位置,確定追加的起始位置,包括:
將所述對象文件的偏移位置以及追加內(nèi)容的長度添加到HTTP請求的RANG的頭里。
具體地,在步驟S307之后,步驟S308之前,該方法還包括:
所述服務(wù)器確定發(fā)送追加請求的用戶設(shè)備是否有權(quán)限對對象文件修改,即所述對象文件的互斥鎖的對象是否為該用戶設(shè)備。
為保證本發(fā)明流程的完整性,補(bǔ)充在步驟S301之前的部分。即用戶設(shè)備向所述服務(wù)器發(fā)送上傳對象文件的請求;所述服務(wù)器將接收到該請求中的對象文件寫入到所述服務(wù)器中,并記錄所述對象文件的長度。
其中,所述服務(wù)器將接收到該請求中的對象文件寫入到所述服務(wù)器中,包括:所述服務(wù)器將接收到該請求中的對象文件按副本數(shù)規(guī)則寫入到磁盤中。
假設(shè)在步驟S301之前,所述服務(wù)器保存的對象文件的長度為L0,追加內(nèi)容的長度為L1,那么所述用戶設(shè)備發(fā)送給所述服務(wù)器的預(yù)約請求中的追加內(nèi)容的長度為L1,所述服務(wù)器返回的響應(yīng)中偏移位置為L0,追加的起始位置為L0,追加的終止位置為L0+L1,所述用戶設(shè)備確定的追加位置的區(qū)間為[L0,L0+L1],所述服務(wù)器返回的響應(yīng)中追加后的對象文件的長度為L0+L1。
參見圖4,本發(fā)明實施例提供一種對象文件的截斷方法,包括:
S401、接收用戶設(shè)備發(fā)送的截斷請求,其中,所述截斷請求包括:需要進(jìn)行截斷操作的對象文件的標(biāo)識以及截斷長度;
S402、根據(jù)所述需要進(jìn)行截斷操作的對象文件的標(biāo)識,確定需要進(jìn)行截斷操作的對象文件;
S403、根據(jù)所述截斷長度,對所述對象文件進(jìn)行截斷,得到截斷后的對象文件。
其中,參見圖5,步驟S403包括:
S501、比較所述截斷長度與所述對象文件的長度;
S502、根據(jù)所述對象文件,得到截斷后的對象文件。
具體地,步驟S502包括以下三種情況:
情況一:若所述截斷長度小于所述對象文件的長度,則從所述對象文件結(jié)尾的位置開始,清除所述對象文件的內(nèi)容,直到所述對象文件的長度與所述截斷長度相等為止,得到截斷后的對象文件;
情況二:若所述截斷長度等于所述對象文件的長度,則確定截斷后的對象文件為截斷前的所述對象文件;
情況三:若所述截斷長度大于所述對象文件的長度,則從所述對象文件結(jié)尾的位置開始,填充空白內(nèi)容,直到所述對象文件的長度與所述截斷長度相等為止,得到截斷后的對象文件。
其中,在步驟S402之后,該方法還包括:
若所述對象文件設(shè)置有互斥鎖,則返回所述對象文件不可截斷的響應(yīng),其中,所述互斥鎖用于禁止除設(shè)置該互斥鎖的用戶設(shè)備以外的用戶設(shè)備追加或截斷設(shè)置互斥鎖的對象文件。
為便于理解,下面將結(jié)合圖6,對對象文件截斷的整體流程進(jìn)一步進(jìn)行解釋說明。
S601、用戶設(shè)備向服務(wù)器發(fā)送包括截斷長度的預(yù)約請求;
S602、所述服務(wù)器判斷所述截斷長度與所述預(yù)約請求所對應(yīng)的對象文件的長度是否相等;若是,執(zhí)行步驟S605;否則,執(zhí)行步驟S603;
S603、所述服務(wù)器向所述用戶設(shè)備返回包括所述對象文件的偏移位置的響應(yīng);
S604、所述用戶設(shè)備根據(jù)返回的所述對象文件的偏移位置,確定截斷長度,重新執(zhí)行步驟S601;
S605、用戶設(shè)備向服務(wù)器發(fā)送包括截斷長度的截斷請求;
S606、所述服務(wù)器判斷接收到的所述截斷請求所對應(yīng)的對象文件是否為可截斷狀態(tài);若是,則執(zhí)行步驟S607,否則,執(zhí)行步驟S609;
S607、比較所述截斷長度與所述對象文件的長度;若所述截斷長度小于所述對象文件的長度,則從所述對象文件結(jié)尾的位置開始,清除所述對象文件的內(nèi)容,直到所述對象文件的長度與所述截斷長度相等為止,得到截斷后的對象文件;若所述截斷長度等于所述對象文件的長度,則確定截斷后的對象文件為截斷前的所述對象文件;若所述截斷長度大于所述對象文件的長度,則從所述對象文件結(jié)尾的位置開始,填充空白內(nèi)容,直到所述對象文件的長度與所述截斷長度相等為止,得到截斷后的對象文件;
S608、所述服務(wù)器返回包括所述截斷后的對象文件的長度的響應(yīng);
S609、返回所述對象文件不可截斷的響應(yīng)。
假設(shè)所述服務(wù)器中的對象文件的長度為L0+L1,那么所述預(yù)約請求中的截斷長度為L2。因此,步驟S502中的情況一,即若L2小于L0+L1,則清除所述截斷區(qū)間即[L2,L0+L1]的對象文件的內(nèi)容,得到截斷后的對象文件;情況二,即若L2等于L0+L1,則確定所述截斷后的對象文件為截斷前的所述對象文件;情況三,若L2大于L0+L1,則所述對象文件在截斷區(qū)間即[L0+L1,L2]填充空白內(nèi)容,得到截斷后的對象文件。
其中,所述填充的空白內(nèi)容為空字符即“0”。
參見圖7,本發(fā)明實施例提供一種對象文件的追加裝置,包括:
第一接收模塊701,接收用戶設(shè)備發(fā)送的預(yù)約請求,其中,所述預(yù)約請求包括需要進(jìn)行追加操作的對象文件的標(biāo)識;
響應(yīng)模塊702,用于根據(jù)所述需要進(jìn)行追加操作的對象文件的標(biāo)識,確定該標(biāo)識對應(yīng)的對象文件,并向所述用戶設(shè)備返回確定的對象文件是否可追加的響應(yīng);
第二接收模塊703,用于若返回的響應(yīng)為確定的對象文件可追加的響應(yīng),則接收用戶設(shè)備發(fā)送的針對所述對象文件的追加請求,其中,所述追加請求包括追加內(nèi)容以及追加的起始位置;
追加模塊704,用于根據(jù)所述追加內(nèi)容以及所述追加的起始位置,對所述對象文件進(jìn)行追加,得到追加后的對象文件。
具體地,向所述用戶設(shè)備返回確定的對象文件是否可追加的響應(yīng),所述響應(yīng)模塊702具體用于:
判斷確定的對象文件是否設(shè)置有互斥鎖,其中,所述互斥鎖用于禁止除設(shè)置該互斥鎖的用戶設(shè)備以外的用戶設(shè)備追加或截斷設(shè)置互斥鎖的對象文件;
若是,則向所述用戶設(shè)備返回所述對象文件不可追加的響應(yīng);否則,向所述用戶設(shè)備返回所述對象文件可追加的響應(yīng)。
具體地,所述對象文件可追加的響應(yīng)包括:所述對象文件的偏移位置,其中,所述用戶設(shè)備根據(jù)所述對象文件的偏移位置生成追加的起始位置。
具體地,所述預(yù)約請求包括,追加內(nèi)容的長度;
若確定的對象文件未設(shè)置有互斥鎖,所述響應(yīng)模塊702還用于:
設(shè)定所述預(yù)約請求中追加內(nèi)容的長度為約定的追加長度;
所述追加模塊704還用于:
判斷所述追加的起始位置所對應(yīng)的長度與約定的追加長度是否一致;
若所述追加的起始位置所對應(yīng)的長度與約定的追加長度不一致,則向所述用戶設(shè)備發(fā)送重新申請偏移位置的響應(yīng)。
具體地,若確定的對象文件未設(shè)置互斥鎖,所述響應(yīng)模塊702還用于:
對所述對象文件設(shè)置互斥鎖。
具體地,所述追加模塊704還用于:
去除對所述對象文件設(shè)置的互斥鎖。
參見圖8,本發(fā)明實施例提供一種對象文件的截斷裝置,包括:
接收模塊801,用于接收用戶設(shè)備發(fā)送的截斷請求,其中,所述截斷請求包括:需要進(jìn)行截斷操作的對象文件的標(biāo)識以及截斷長度;
確定模塊802,用于根據(jù)所述需要進(jìn)行截斷操作的對象文件的標(biāo)識,確定需要進(jìn)行截斷操作的對象文件;
截斷模塊803,用于根據(jù)所述截斷長度,對所述對象文件進(jìn)行截斷,得到截斷后的對象文件。
具體地,所述截斷模塊803,具體用于:
比較所述截斷長度與所述對象文件的長度;
若所述截斷長度小于所述對象文件的長度,則從所述對象文件結(jié)尾的位置開始,清除所述對象文件的內(nèi)容,直到所述對象文件的長度與所述截斷長度相等為止,得到截斷后的對象文件;
若所述截斷長度等于所述對象文件的長度,則確定截斷后的對象文件為截斷前的所述對象文件;
若所述截斷長度大于所述對象文件的長度,則從所述對象文件結(jié)尾的位置開始,填充空白內(nèi)容,直到所述對象文件的長度與所述截斷長度相等為止,得到截斷后的對象文件。
具體地,所述截斷模塊803,還用于:
若所述對象文件設(shè)置有互斥鎖,則返回所述對象文件不可截斷的響應(yīng),其中,所述互斥鎖用于禁止除設(shè)置該互斥鎖的用戶設(shè)備以外的用戶設(shè)備追加或截斷設(shè)置互斥鎖的對象文件。
本發(fā)明實施例提供一種服務(wù)器,該服務(wù)器包括上述的第一接收模塊701、響應(yīng)模塊702、第二接收模塊703、追加模塊704以及接收模塊801、確定模塊802、截斷模塊803。
其中,所述服務(wù)器可為對象存儲集群。所述服務(wù)器還包括硬件處理器(hardware processor),且本發(fā)明實施例中的相關(guān)功能模塊均可以通過硬件處理器來實現(xiàn)。
綜上所述,本發(fā)明實施例提供了一種對象文件的追加、截斷方法及裝置,用以通過追加請求中的追加的起始位置或截斷請求中的截斷長度,從而確定將追加內(nèi)容添加到對象文件中的位置,或確定截斷對象文件的截斷區(qū)域,從而實現(xiàn)在服務(wù)器側(cè)對對象文件的追加操作與截斷操作,避免了在用戶設(shè)備側(cè)對對象文件進(jìn)行追加操作或截斷操作,再將追加或截斷后的對象文件重新上傳服務(wù)器,在服務(wù)器側(cè)對對象文件進(jìn)行操作,減小了追加或截斷后的對象文件上傳所占的帶寬,提高了公網(wǎng)帶寬的利用率。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件。基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品可以存儲在計算機(jī)可讀存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個實施例或者實施例的某些部分所述的方法。
最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。