反饋的文件寫入成功的響應,任務2收到了數據服務器反饋的寫入失敗的響應,或者,客戶端代理在預設的時間內未收到數據服務器反饋的任務2寫入成功的響應,則客戶端代理生成寫入失敗標識。此時,如果收到了業(yè)務服務器發(fā)送的刷盤請求,客戶端代理根據刷盤請求中的文件句柄找到文件的業(yè)務標識,確定文件為預設業(yè)務的文件,但此時客戶端代理中有寫入失敗標識,則不更新文件的元數據,即不更新文件的大小至元數據服務器。此時,文件已上傳的大小依然為0M。此時,如果出現故障,在進行斷點續(xù)傳的時候,會從文件的OM位置開始上傳,從而,保證了文件上傳的完整性。
[0083]第三種情況為:如果文件的A部分都成功上傳,且在收到刷盤請求后,客戶端代理更新了文件的元數據,此時,元數據服務器中文件的大小為3M。業(yè)務服務器將文件的B部分發(fā)送給客戶端代理,客戶端代理將B部分存儲在緩存中,此時,如果客戶端代理的緩存需要進行一次刷新,則客戶端代理需要將文件的B部分發(fā)送給數據服務器,客戶端代理將其緩存中的文件的B部分分塊、多任務多線程發(fā)送給數據服務器。假設分成3個任務,任務I將B部分的3M-4M發(fā)送給數據服務器,任務2將B部分的4M-5M發(fā)送給數據服務器,任務3將B部分的5M-6M發(fā)送給數據服務器。如果任務I和任務3都收到了數據服務器反饋的文件寫入成功的響應,任務2收到了數據服務器反饋的寫入失敗的響應,或者,客戶端代理在預設的時間內未收到數據服務器反饋的任務2寫入成功的響應,則客戶端代理生成寫入失敗標識。此時,如果收到了業(yè)務服務器發(fā)送的刷盤請求,客戶端代理根據刷盤請求中的文件句柄找到文件的業(yè)務標識,確定文件為預設業(yè)務的文件,但此時客戶端代理中有寫入失敗標識,則不更新文件的元數據。此時,元數據服務器中文件的大小依然為3M。此時,如果出現故障,在進行斷點續(xù)傳的時候,會從文件的3M位置開始上傳,從而,保證了文件上傳的完整性。
[0084]需要說明的是,客戶端代理在收到業(yè)務服務器發(fā)送的文件的刷盤請求之后,還需判斷緩存中是否有還未寫入數據服務器的數據,如果有,則需要將客戶端代理緩存中的數據都寫入數據服務器后,再確定是否更新文件的元數據。業(yè)務服務器將文件的A部分發(fā)送給客戶端代理,再將文件的B部分發(fā)送給客戶端代理,客戶端代理將A部分和B部分存儲后,此時,如果客戶端代理的緩存需要進行一次刷新,客戶端代理將文件的A部分和B部分分成至少一個分塊多任務多線程地發(fā)送給數據服務器??蛇x的,在本發(fā)明實施例中,在文件上傳完成后,業(yè)務服務器向客戶端代理發(fā)送關閉文件請求,客戶端代理清除業(yè)務標識,以便于客戶端代理對其他業(yè)務提供服務。
[0085]圖3為本發(fā)明實施例提供的文件上傳方法實施例二的一種實現方式的信令流程示意圖。如圖3所示,在本實現方式中,業(yè)務服務器為FTP服務器。FTP客戶端將文件上傳至FTP服務器,FTP服務器通過以下步驟將文件上傳至數據服務器并更新文件的元數據至元數據服務器中:
[0086]步驟1:FTP服務器發(fā)送打開文件請求,包括:FTP業(yè)務標識。
[0087]步驟2:客戶端代理將FTP業(yè)務標識存儲在緩存中。
[0088]步驟3:客戶端代理向FTP服務器發(fā)送成功響應,包括:文件的文件句柄。
[0089]步驟4:FTP服務器向客戶端代理發(fā)送文件的寫入請求,包括:文件的數據和文件句柄。
[0090]步驟5:客戶端代理將文件的數據存儲在緩存中。
[0091]步驟6:客戶端代理將文件的數據發(fā)送給數據服務器。
[0092]步驟7:客戶端代理接收數據服務器的反饋的文件的寫入響應,根據寫入響應確定生成文件寫入狀態(tài)標識。
[0093]步驟8:FTP服務器發(fā)送刷盤請求。刷盤請求用于請求客戶端代理更新文件的元數據。
[0094]步驟9:客戶端代理根據文件的業(yè)務標識確定文件為FTP文件。
[0095]步驟10:客戶端代理根據寫入狀態(tài)標識,確定是否更新文件的大小至元數據服務器中。如果客戶端代理中有寫入失敗標識,則不更新文件的大小至元數據服務器中。
[0096]步驟11:如果客戶端代理中沒有寫入失敗標識,則更新文件的大小。
[0097]需要說明的是,在上述步驟中,步驟6和步驟7是循環(huán)進行的,以將客戶端代理緩存中的文件的數據都發(fā)送給數據服務器。步驟4-步驟11是循環(huán)進行的,以實現FTP服務器將文件上傳至數據服務器同時將上傳至數據服務器的文件的大小更新至元數據服務器。
[0098]可選的,在文件上傳完成后,執(zhí)行以下步驟:
[0099]步驟12:FTP服務器向客戶端代理發(fā)送關閉文件請求。
[0100]步驟13:客戶端代理清除FTP業(yè)務標識。
[0101]本發(fā)明實施例提供的文件上傳方法,通過客戶端代理接收業(yè)務服務器發(fā)送的打開文件請求,打開文件請求中包括文件的業(yè)務標識,客戶端代理將業(yè)務標識存儲在緩存中,客戶端代理向業(yè)務服務器發(fā)送文件的文件句柄,客戶端代理接收業(yè)務服務器發(fā)送的文件的寫入請求,寫入請求中包含文件的數據和文件句柄,客戶端代理根據數據服務器反饋的文件的寫入響應,確定生成文件寫入狀態(tài)標識,客戶端代理接收業(yè)務服務器發(fā)送的文件的刷盤請求,刷盤請求用于請求客戶端代理更新文件的元數據,客戶端代理根據文件的業(yè)務標識確定文件為預設業(yè)務的文件,客戶端代理根據寫入狀態(tài)標識,確定是否更新文件的元數據,可見,客戶端代理能在接收到業(yè)務服務器發(fā)送的刷盤請求之后,根據寫入狀態(tài)標識確定是否更新文件的元數據,文件寫入狀態(tài)標識反映了客戶端代理是否在數據服務器中寫入文件成功,保證了文件的元數據與文件的上傳數據相適應,從而,在進行斷點續(xù)傳時,實現了斷點之前的文件都已經成功上傳,保證了上傳的文件的數據完整性。
[0102]圖4為本發(fā)明實施例提供的文件上傳方法實施例三的流程示意圖。如圖4所示,本實施例提供的文件上傳方法包括:
[0103]S401:業(yè)務服務器生成文件的刷盤請求,所述刷盤請求用于請求客戶端代理更新文件的元數據。
[0104]S402:業(yè)務服務器向客戶端代理發(fā)送文件的刷盤請求。
[0105]進一步地,在本發(fā)明實施例中,在步驟S401之前,還包括:
[0106]業(yè)務服務器向客戶端代理發(fā)送打開文件請求,打開文件請求中包括文件的業(yè)務標識。
[0107]具體地,這里的打開文件請求中涉及的文件為客戶端代理新建的空白文件。舉例來說,該業(yè)務標識可以表示文件為FTP文件。可選的,可以通過預先設置的規(guī)則來確定,該業(yè)務標識可以是一個比特位的消息,I表示該業(yè)務為FTP業(yè)務,O表示該業(yè)務不是FTP業(yè)務。
[0108]業(yè)務服務器接收客戶端代理發(fā)送的文件的文件句柄。
[0109]業(yè)務服務器向客戶端代理發(fā)送文件的寫入請求,寫入請求中包含文件的數據和文件句柄。
[0110]本發(fā)明實施例提供的文件上傳方法,通過業(yè)務服務器生成文件的刷盤請求,所述刷盤請求用于請求客戶端代理更新文件的元數據,業(yè)務服務器向客戶端代理發(fā)送文件的刷盤請求,使得客戶端代理能在接收到業(yè)務服務器發(fā)送的刷盤請求之后,確定是否更新文件的元數據,保證了文件的元數據與文件的上傳數據相適應,從而,在進行斷點續(xù)傳時,實現了斷點之前的文件都已經成功上傳,保證了上傳的文件的數據完整性。
[0111]圖5為本發(fā)明實施例提供的文件上傳裝置實施例一的結構示意圖。如圖5所示,本實施例提供的文件上傳裝置50包括:
[0112]生成模塊51,用于根據數據服務器反饋的文件的寫入響應,確定生成文件寫入狀態(tài)標識。
[0113]生成模塊51具體用于若文件上傳裝置50接收數據服務器反饋的文件的所有分塊中有至少一個分塊寫入失敗,則生成寫入失敗標識。
[0114]第一接收模塊52,用于接收業(yè)務服務器發(fā)送的文件的刷盤請求,刷盤請求用于請求客戶端代理更新文件的元數據。
[0115]第一確定模塊53,用于根據寫入狀態(tài)標識,確定是否更新文件的元數據。
[0116]第一確定模塊53具體用于若寫入狀態(tài)標識為寫入失敗標識,則不更新文件的元數據。
[0117]本發(fā)明實施例提供的裝置對應地可用于執(zhí)行圖1所示方法實施例的技術方案,其實現原理類似,此處不再贅述。
[0118]本發(fā)明實施例提供的文件上傳裝置,通過設置生成模塊,用于根據數據服務器反饋的文件的寫入響應,確定生成文件寫入狀態(tài)標識,第一接收模塊用于接收業(yè)務服務器發(fā)送的文件的刷盤請求,刷盤請求用于請求客戶端代理更新文件的元數據,第一確定模塊用于根據寫入狀態(tài)標識,確定是否更新文件的元數據,可見,本發(fā)明實施例提供的文件上傳裝置能在接收到業(yè)務服務器發(fā)送的刷盤請求之后,根據寫入狀態(tài)標識確定是否更新文件的元數據,文件寫入狀態(tài)標識反映了本發(fā)明實施例提供的文件上傳裝置是否在數據服務器中寫入文件成功,保證了文件的元數據與文件的上傳數據相適應,從而,在進行斷點續(xù)傳時,實現了斷點之前的文件都已經成功上傳,保證了上傳的文件的數據完整性。
[0119]圖6為本發(fā)明實施例提供的文件上傳裝置實施例二的結構示意圖。如圖6所示,在上述實施例一的基礎上,本發(fā)明