專利名稱:基于云存儲的文件處理方法、系統(tǒng)及服務器集群系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及數據處理技術領域,特別涉及一種基于云存儲的文件處理方法、系統(tǒng)及服務器集群系統(tǒng)。
背景技術:
云計算(CloudComputing)是分布式處理(Distributed Computing)、并行處理(Parallel Computing)和網格計算(Grid Computing)的發(fā)展,通過網絡將龐大的計算處理程序拆分成若干較小的子程序,將這些小程序分別交由多臺服務器所組成的系統(tǒng)進行計算,并輸出計算結果。云存儲是在云計算概念上延伸出來的,指通過集群應用、網格技術或分布式文件系統(tǒng)等功能,將網絡中大量不同類型的存儲設備通過應用軟件集合在一起,實現協(xié)同工作,共同對外提供數據存儲和業(yè)務訪問功能。即當云計算系統(tǒng)運算和處理的核心是大量數據的存儲和管理時,云計算系統(tǒng)就需要配置大量的存儲設備,此時的云計算系統(tǒng)就轉變?yōu)橐粋€云存儲系統(tǒng),所以云存儲系統(tǒng)就是一個以數據存儲和管理為核心的云計算系 統(tǒng)。這個存儲系統(tǒng)由多個存儲設備組成,通過集群功能、分布式文件系統(tǒng)或類似網格計算等功能聯(lián)合起來協(xié)同工作,并通過一定的應用軟件或應用接口,為用戶提供一定類型的存儲服務和訪問服務?,F有的云存儲方案都是基于整個文件進行存儲,即應用軟件或者用戶將整個文件上傳,由于以文件為單位進行存儲,這容易造成資源的浪費。例如,當用戶上傳了一個較大的文件后,如果只修改了該文件的一小部分,此時仍需要重傳整個文件;又例如,當用戶增加了一個文件版本,即使新增加的文件版本與之前的文件版本差別非常小,用戶同樣需要將整個新的文件版本上傳。由此可知,現有技術的云存儲方式,使得用戶需要在每一次對文件的局部修改后,都重傳整個文件,這不但浪費了系統(tǒng)的存儲空間和網絡帶寬,而且容易導致文件系統(tǒng)的訪問速度下降。
發(fā)明內容
本發(fā)明實施例的目的在于提供一種基于云存儲的文件處理方法、系統(tǒng)及服務器集群系統(tǒng),以解決現有云存儲方式浪費系統(tǒng)的存儲空間和網絡帶寬,容易導致文件系統(tǒng)的訪問速度下降的問題。為解決上述技術問題,本申請實施例提供一種基于云存儲的文件處理方法,是這樣實現的一種基于云存儲的文件處理方法,包括WEB服務器接收客戶端發(fā)送的文件上傳請求,所述文件上傳請求用于請求向服務器集群上傳新文件;WEB服務器向所述客戶端返回所述服務器集群為所述新文件生成的文件ID ;所述客戶端對所述新文件進行切片,并為每個切片文件生成唯一的切片ID ;所述客戶端將切片文件數據包上傳給WEB服務器,所述切片文件數據包中包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據;WEB服務器將所述切片文件數據包中的每個切片文件的切片數據發(fā)送到所述服務器集群中的對應服務終端上進行存儲,其中,所述服務器集群保存所述文件ID與所述切片ID的對應關系。為解決上述技術問題,本申請實施例還提供一種基于云存儲的文件處理系統(tǒng),是這樣實現的一種基于云存儲的文件處理系統(tǒng),包括客戶端、WEB服務器和服務器集群,所述WEB服務器,用于接收客戶端發(fā)送的文件上傳請求,所述文件上傳請求用于請求向服務器集群上傳新文件,并向所述客戶端返回所述服務器集群為所述新文件生成的文件ID ;所述客戶端,用于對所述新文件進行切片,并為每個切片文件生成唯一的切片ID, 將切片文件數據包上傳給WEB服務器,所述切片文件數據包中包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據;所述WEB服務器,還用于將所述切片文件數據包中的每個切片文件的切片數據發(fā)送到所述服務器集群;所述服務器集群,用于將所述每個切片文件的切片數據存儲到對應的服務終端上,以及保存所述文件ID與所述切片ID的對應關系。為解決上述技術問題,本申請實施例還提供一種基于云存儲的服務器集群系統(tǒng),是這樣實現的一種基于云存儲的服務器集群系統(tǒng),包括WEB服務器和服務器集群,所述服務器集群中包含若干服務終端,所述WEB服務器,用于接收客戶端發(fā)送的文件上傳請求,所述文件上傳請求用于請求向服務器集群上傳新文件,向所述客戶端返回所述服務器集群為所述新文件生成的文件ID,接收所述客戶端上傳的切片文件數據包,所述切片文件數據包中包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據;所述服務器集群,用于接收所述WEB服務器發(fā)送的所述切片文件數據包中的每個切片文件的切片數據,并將每個切片文件的切片數據發(fā)送到所述服務器集群中的對應服務終端上進行存儲,以及保存所述文件ID與所述切片ID的對應關系。由以上本發(fā)明實施例提供的技術方案可見,本申請實施例中WEB服務器接收客戶端發(fā)送的文件上傳請求后,向客戶端返回服務器集群為新文件生成的文件ID,客戶端對新文件進行切片,并為每個切片文件生成唯一的切片ID,將切片文件數據包上傳給WEB服務器,切片文件數據包中的每個切片文件包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據,WEB服務器將切片文件數據包中的每個切片文件的切片數據發(fā)送到服務器集群中的對應服務終端上進行存儲。本申請實施例通過對文件進行分片處理并在服務器集群中對切片文件進行分布式存儲,從而使得基于服務器集群的云存儲性能更加優(yōu)化;應用本申請實施例上傳修改后的文件時,由于只需上傳用戶修改的文件切片,而無需重傳整個文件,因此減少了服務器集群中的冗余數據,節(jié)省了存儲空間,減少了客戶端上傳文件的時間。
為了更清楚地說明本申請實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領域普通技術人員而言,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖I為本申請實施例所應用的云存儲架構的示意圖;圖2為本申請基于云存儲的文件處理方法的第一實施例流程圖;圖3為本申請基于云存儲的文件處理方法的第二實施例流程圖;圖4為本申請基于云存儲的文件處理方法的第三實施例流程圖;圖5為本申請基于云存儲的文件處理方法的第四實施例流程圖;圖6為本申請基于云存儲的文件處理方法的第五實施例流程圖; 圖7為本申請基于云存儲的文件處理方法的第六實施例流程圖;圖8為本申請基于云存儲的文件處理系統(tǒng)的實施例框圖;圖9為本申請基于云存儲的服務器集群系統(tǒng)的實施例框圖。
具體實施例方式在如下本發(fā)明的多個實施例中提供了一種基于云存儲的文件處理方法、系統(tǒng)及服務器集群系統(tǒng)。為了使本技術領域的人員更好地理解本發(fā)明實施例中的技術方案,并使本發(fā)明實施例的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖對本發(fā)明實施例中技術方案作進一步詳細的說明。參見圖I,為本申請實施例所應用的云存儲架構示意圖該云存儲架構包括客戶端、WEB服務器(Webserver)和服務器集群,其中,服務器集群進一步包括至少一個服務集群整合端(Service Manager)、每個集群服務整合端下可以連接若干服務分配端(Service Master)、每個服務分配端下可以連接若干服務終端(Service Worker)。需要說明的是,圖I中示出的服務器集群由多集群系統(tǒng)組成,多系統(tǒng)集群中包括若干單集群系統(tǒng),每個單集群系統(tǒng)為一個服務分配端和其下連接的若干服務終端,在實際應用時,本申請實施例根據所存儲文件的容量大小可以選擇采用由多集群系統(tǒng)組成的服務器集群,也可以選擇采用由單集群系統(tǒng)組成的服務器集群;另外,圖I中僅示出了一臺WEB服務器,實際應用中與客戶端交互的也可以是WEB服務器集群,此時在接收到某個客戶端上傳的文件處理請求時,可以通過負載均衡調度將該處理請求分配到某一臺WEB服務器上進行處理。綜上,圖I所示出的云存儲架構不應視為對本申請實施例存儲架構的限制。圖I中,當用戶通過客戶端軟件對文件進行上傳、下載或者刪除操作時,這些操作命令可以轉化為http請求,通過WEB服務器上傳到服務器集群進行處理。下面將結合圖I示出的系統(tǒng)架構對本申請基于云存儲的文件處理實施例進行描述。參見圖2,為本申請基于云存儲的文件處理方法的第一實施例流程圖步驟201 =WEB服務器接收客戶端發(fā)送的文件上傳請求,該文件上傳請求用于請求向服務器集群上傳新文件。步驟202 =WEB服務器向客戶端返回服務器集群為新文件生成的文件ID。
具體的,WEB服務器向服務器集群發(fā)送獲取新文件的文件ID的請求,服務器集群根據該請求為新文件分配文件ID,服務器集群將文件ID返回給WEB服務器,WEB服務器將文件ID發(fā)送給客戶端。其中,服務器集群中存儲了海量的文件,并且服務器集群為每個文件分配唯一的文件ID,例如,以數字進行順序編號的文件ID。當為上傳請求中的文件分配了唯一文件ID后,服務器集群可以進一步記錄該文件ID與上傳請求中所包含的信息之間的對應關系,上傳請求中所包含的信息可以包括用戶ID、文件名稱、文件路徑等,通過上述對應關系服務器集群可以對文件進行管理維護。步驟203 :客戶端對新文件進行切片,并為每個切片文件生成唯一的切片ID。具體的,客戶端可對新文件按照預設長度進行分塊,生成若干切片文件,其中,當分塊后的剩余文件塊的長度小于預設長度時,將該剩余文件塊作為一個切片文件,根據每個切片文件的文件數據,通過MD5哈希函數等計算每個切片文件的切片ID,該切片ID可以唯一標識一個切片文件。 步驟204 :客戶端將切片文件數據包上傳給WEB服務器,切片文件數據包中包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據。步驟205 =WEB服務器將切片文件數據包中的每個切片文件的切片數據發(fā)送到服務器集群中的對應服務終端上進行存儲,其中,服務器集群保存文件ID與切片ID的對應關系O假設客戶端首次向服務器集群上傳當前文件,則客戶端可首先將當前文件的文件ID和該文件所有切片文件的切片ID上傳給WEB服務器,WEB服務器將包含該當前文件的文件ID和所有切片文件的切片ID的查詢請求發(fā)送到服務器集群,該查詢請求用于請求獲取存儲每個切片文件的服務終端的地址。服務器集群接收到查詢請求后,可以保存該文件ID與切片ID之間的對應關系(即相當于保存了組成每個文件的切片文件的信息),服務器集群根據每個切片ID通過一致性哈希算法計算存儲每個切片文件的服務終端的地址;服務器集群將服務終端的地址返回給WEB服務器,WEB服務器將切片文件數據包中的每個切片文件的切片數據按照對應的服務終端的地址發(fā)送到服務終端上進行存儲,其中,服務終端可以存儲每個切片文件的切片ID和切片數據的對應關系。下面簡單描述一下采用一致性哈希算法計算服務終端地址的過程假設服務器集群中有N臺服務器,將這N臺服務器在邏輯上排列成一個環(huán),環(huán)上的每一臺服務器按照順時針方向編號(編號可以取O至N-1),在計算存儲某個切片文件的服務器地址時,可以用該切片文件的切片ID對N取模,假設取模后得到的余數值為K,則從上述哈希環(huán)中編號為O的服務器開始順時針獲取哈希環(huán)上的第K個服務器,則該第K個服務器即為用于存儲該切片文件的服務器。進一步,客戶端在上傳文件之前,可以先將重復統(tǒng)計請求發(fā)送給WEB服務器,以便請求統(tǒng)計服務器集群中是否已經存在了該文件中的切片數據,避免重復上傳。即客戶端首先對文件進行切片,并通過MD5哈希函數等計算每個切片文件的切片ID,然后將包含了每個切片文件的切片ID的重復統(tǒng)計請求上傳給WEB服務器,WEB服務器將重復統(tǒng)計請求轉發(fā)到服務器集群,服務器集群根據保存的切片ID信息查找是否已經保存過該重復統(tǒng)計請求中所包含的切片ID,對于已經保存的切片ID,說明服務器集群中已經保存了對應的切片文件,無需再進行重復上傳,因此服務器集群將切片文件是否重復的信息發(fā)送給WEB服務器,WEB服務器將切片文件是否重復的信息發(fā)送給客戶端,客戶端根據切片文件是否重復的信息,將包含不重復切片文件的切片文件數據包上傳給WEB服務器;后續(xù),WEB服務器只需要向服務器集群請求存儲不重復切片文件的服務終端地址,并依據該地址將不重復切片文件發(fā)送到對應服務終端上進行存儲即可。在對上傳文件進行重復統(tǒng)計時,WEB服務器可以進一步保存用戶ID和文件ID之間的對應關系,當不同用戶上傳同樣的文件時,則WEB服務器中可以保存一個文件ID與多個用戶ID之間的對應關系;同時,述服務器集群為每個切片ID設置引用計數器,每個引用計數器的計數值初始化為零,根據重復統(tǒng)計結果,當某個切片ID重復時,則將該切片ID的引用計數器的計數值加一。參見圖3,為本申請基于云存儲的文件處理的第二實施例流程圖,該實施例示出了客戶端請求上傳新文件的過程步驟301 :客戶端向WEBServer發(fā)送創(chuàng)建新文件的文件上傳請求。 當用戶想要上傳一個新文件時,客戶端生成創(chuàng)建新文件的文件上傳請求,并將該文件上傳請求發(fā)送到網絡中用于處理該文件上傳請求的WEBServer上。該文件上傳請求中可以包括用戶ID、文件名稱和文件存儲路徑等。步驟302 WEBServer 向 ServiceManager 轉發(fā)文件上傳請求。當本申請實施例中的服務器集群架構為圖I中所示的架構時,WEBServer需要將文件上傳請求發(fā)送到服務器集群中的ServiceManager。步驟303 ServiceManager為該新文件進行統(tǒng)一編碼,生成文件ID。服務器集群中包括了海量的文件,并且服務器集群中的ServiceManager可以為每個文件分配唯一的文件ID,例如,以數字進行順序編號的文件ID。當為上傳請求中的文件分配了唯一文件ID后,ServiceManager可以進一步記錄該文件ID與上傳請求中所包含的信息之間的對應關系,上傳請求中所包含的信息可以包括用戶ID、文件名稱、文件路徑等,通過上述對應關系服務器集群可以對文件進行管理維護。步驟304 ServiceManager將該新文件的文件ID返回給WEBServer。步驟305 =WEBServer將新文件的文件ID返回給客戶端。參見圖4,為本申請基于云存儲的文件處理的第三實施例流程圖,由于客戶端請求上傳的新文件可能是與原存儲文件相比,僅修改了部分內容的新文件,因此本實施例示出了客戶端上傳新文件前,獲取切片文件重復信息的過程步驟401 :客戶端對新文件按照預設長度進行切片,生成若干切片文件。預設長度可以是經過試驗計算得到的一個符合系統(tǒng)最優(yōu)長度的數值,例如,優(yōu)選的為128k,將新文件順序分割成若干長度為128K的切片文件,由于新文件的長度可能不為128的整數倍,因此對于分割后剩余的不足128K的數據塊,可以將其作為一個切片文件。步驟402 :客戶端根據切片文件的切片數據,可通過MD5哈希函數等計算每個切片文件的切片ID。對于分割后生成的每個切片文件,可以使用MD5哈希函數根據切片文件的切片數據生成唯一標識該切片文件的切片ID。步驟403 :客戶端向WEBServer發(fā)送重復統(tǒng)計請求,該重復統(tǒng)計請求中包含每個切片文件的切片ID。
由于客戶端上傳的新文件可能是修改了部分數據的某個已有文件,因此如果重傳所有文件數據將導致服務器集群中產生冗余數據,因此本申請實施例可以向服務器集群查詢新文件中的每個切片文件是否重復??蛻舳讼騑EBServer發(fā)送重復統(tǒng)計請求,該重復統(tǒng)計請求中包含每個切片文件的切片ID。步驟404 WEBServer 向 ServiceManager 轉發(fā)重復統(tǒng)計請求。步驟405 ServiceManager獲取用于存儲切片文件的ServiceMaster。由于本申請實施例釆用了如圖I所示的云存儲服務器集群架構,因此在服務器集群內部,處于上層的ServiceManager可以通過一致性哈希算法獲取用于存儲切片文件的ServiceMaster,同理,處于上層的ServiceManager可以通過一致性哈希算法獲取用于存儲切片文件的ServiceWorker。其中,ServiceManager和ServiceMaster根據切片ID,分別通過一致性哈希算法獲取下層的ServiceMaster和ServiceWorker時的過程與步驟205中的描述一致,在此不 再贅述。ServiceManager在向某個ServiceMaster轉發(fā)重復統(tǒng)計請求時,該重復統(tǒng)計請求中包含了通過一致性哈希算法計算的由該ServiceMaster存儲的切片數據的對應的切片ID0步驟406 ServiceManager將重復統(tǒng)計請求轉發(fā)給獲取的ServiceMaster。步驟407 !ServiceMaster通過一致性哈希算法計算存儲切片文件的ServiceWorker 的地址。ServiceMaster在向某個ServiceWorker轉發(fā)重復統(tǒng)計請求時,該重復統(tǒng)計請求中包含了通過一致性哈希算法計算的由該ServiceWorker存儲的切片數據的對應的切片ID0步驟408 !ServiceMaster按照ServiceWorker的地址將重復統(tǒng)計請求轉發(fā)給相應的 ServiceWorker0步驟409 =ServiceWorker查找是否已保存重復統(tǒng)計請求中的切片ID。如果從ServiceWorker中查找到重復統(tǒng)計請求中的切片ID,則說明該ServiceWOTker中已經保存了與該切片ID對應的切片數據,即該切片ID對應的切片數據已
經重復,無需再上傳。步驟410 =ServiceWorker將切片文件是否重復的信息發(fā)送給ServiceMaster。ServiceWorker可以僅將統(tǒng)計出的不重復的切片文件的切片ID返回給ServiceMaster,同時返回用于存儲該切片文件的ServiceWorker的地址。步驟411 !ServiceMaster將切片文件是否重復的信息轉發(fā)給ServiceManager。步驟412 =ServiceManager將切片文件是否重復的信息轉發(fā)給WEBServer。WEBServer保存了需要上傳的不重復的切片文件的切片ID和對應的ServiceWorker 的地址。步驟413 WEBServer將切片文件是否重復的信息發(fā)送給客戶端。最終,客戶端接收到的切片文件是否重復的信息中可以只包括經過重復統(tǒng)計后的不重復的切片文件的切片ID。需要說明的是,如果每一次上傳新文件時,ServiceManager中都保存已上傳切片文件的切片ID,則每一次判斷待上傳切片文件是否重復的時候,可以直接將切片ID發(fā)送到ServiceManager中進行查詢,如果存在該切片ID,則對應的切片文件重復,如果不存在該切片ID,則對應的切片文件不重復。參見圖5,為本申請基于云存儲的文件處理的第四實施例流程圖,該實施例示出了根據獲取的切片文件是否重復的信息上傳切片文件的過程步驟501 :客戶端向WEBServer上傳不重復的切片文件的切片ID和切片數據。在圖4示出的第三實施例中,客戶端已經獲得了待上傳新文件中不重復的切片文件信息,因此本實施例中客戶端只需要向WEBServer上傳不重復的切片文件的切片ID和切片數據即可。步驟502 =WEBServer根據接收到的切片文件的切片ID查找用于存儲該切片文件的 ServiceWorker 的地址。根據前述第三實施例可知,在WEBServer中保存了服務器集群中的 Servicefforker返回的待上傳的不重復的切片文件的切片ID和對應的ServiceWorker的地址,因此根據客戶端上傳的切片文件的切片ID查找存儲該切片文件的切片數據的Servicefforker 的地址。 步驟503 WEBServer按照ServiceWorker的地址將切片文件發(fā)送到對應的Servicefforker 上。步驟504 :ServiceWorker保存接收到的切片文件。進一步地,在步驟504之后,還可以包括步驟505 Servicefforker向WEBServer返回存儲完成的應答消息。步驟506 =WEBServer向客戶端轉發(fā)存儲文成的應答消息。參見圖6,為本申請基于云存儲的文件處理的第五實施例流程圖,該實施例示出了客戶端請求下載文件的過程步驟601 :客戶端向WEBServer發(fā)送下載文件的下載請求,該下載請求中包含所要下載文件的文件ID。步驟602 WEBServer 向 ServiceManager 轉發(fā)該下載請求。該下載請求用于從服務器集群中請求獲取組成該下載文件的所有切片文件的信
肩、O步驟603 =ServiceManager根據一致性哈希算法獲取用于存儲切片文件的ServiceMaster。在服務器集群內部,處于上層的ServiceManager可以通過一致性哈希算法獲取用于存儲該新文件的切片文件的ServiceMaster,同理,處于上層的ServiceMaster可以通過一致性哈希算法獲取用于存儲切片文件的ServiceWorker。具體的,ServiceManager根據文件上傳時保存的文件ID與切片ID的對應關系,獲取與該下載請求中的文件ID對應的所有切片ID。本申請實施例按照切片文件上傳時遵循的一致性哈希算法即可根據切片ID獲取保存該切片文件的ServiceMaster,以及該ServiceMaster 下的 ServiceWorker0其中,在獲取ServiceMaster時,假設服務器集群中ServiceManager下有N臺ServiceMaster,將這N臺ServiceMaster在邏輯上排列成一個環(huán),環(huán)上的每一臺ServiceMaster按照順時針方向編號(編號可以取O至N_l),在計算存儲某個切片文件的切片數據的ServiceMaster地址時,可以用該切片文件的切片ID對N取模,假設取模后得到的余數值為K,則從上述哈希環(huán)中編號為O的ServiceMaster開始順時針獲取哈希環(huán)上的第K個ServiceMaster,則該第K個ServiceMaster即為用于存儲該切片文件的切片數據的ServiceMaster。步驟604 ServiceManager將文件的下載請求轉發(fā)給獲取的ServiceMaster。步驟605 ServiceMaster通過一致性哈希算法計算存儲該文件的每個切片文件的 ServiceWorker 的地址。本步驟中通過一致性哈希算法計算ServiceMaster下的ServiceWorker的地址的過程與步驟603中計算ServiceManager下的ServiceMaster的過程一致,在此不再贅述。步驟606 !ServiceMaster將存儲每個切片文件的ServiceWorker的地址發(fā)送給ServiceManager0·
步驟607 ServiceManager將存儲每個切片文件的ServiceWorker的地址轉發(fā)給WEBServer0步驟608 :WEBServer 根據 ServiceWorker 的地址向相應的 ServiceWorker 請求讀取切片文件。對于服務器集群中的每個ServiceWorker,其可能需要并行處理多個切片文件的下載請求。因此Servicefforker可以將每個切片文件的下載請求封裝成任務加入下載隊列中,并啟動多線程對任務進行處理。步驟609 :ServiceWorker 將切片文件返回給 WEBServer。步驟610 =WEBServer將接收到的切片文件按照切片順序組成請求下載的文件。Servicefforker向WEBServer返回的切片文件中包含了每個切片文件的切片數據、切片ID、切片文件在整個文件的切片順序以及文件ID,WEBSerVer將屬于具有同一個文件ID的切片文件按照其切片順序組成下載文件。步驟611 :WEBServer將請求下載的文件發(fā)送給客戶端??蛻舳讼騑EBServer發(fā)送下載請求時,WEBServer可以記錄該客戶端的用戶ID,當組成了下載文件后,按照用戶ID將下載文件轉發(fā)到相應的客戶端上。上述實施例中,服務器集群在完成下載文件操作時,可以采用順序下載每個切片文件的方式進行,例如,ServiceManager順序獲取待下載文件的第一個切片文件,并計算存儲該切片文件的ServiceMaster,然后由該ServiceMaster計算存儲該切片文件的Servicefforker,向該ServiceWorker發(fā)送下載第一個切片文件的請求,以此類推,直到按照切片順序下載完所有切片文件。參見圖7,為本申請基于云存儲的文件處理的第六實施例流程圖,該實施例示出了客戶端請求刪除文件的過程步驟701 :客戶端向WEBServer發(fā)送刪除文件的刪除請求,該刪除請求中包含所要刪除文件的文件ID和用戶ID。在前述實施例中,對于首次上傳的切片文件,ServiceManager中可以保存該切片ID與相應切片文件所屬文件的文件ID之間的對應關系,同時為每個切片ID設置一個引用計數器,該引用計數器的計數值初始化為0,后續(xù)該切片文件每當被重復上傳一次,則該計數器的計數值相應加一。
步驟702 =WEBServer判斷保存了刪除請求中的文件ID與用戶ID的對應關系。如果WEBServer中保存了文件ID與用戶ID之間的對應關系,說明客戶端用戶上傳過與文件ID對應的文件,則用于該客戶端用戶執(zhí)行刪除操作。步驟703 WEBServer 向 ServiceManager 轉發(fā)該刪除請求。該刪除請求用于從服務器集群中請求刪除組成該刪除文件的所有切片文件的信肩、O步驟704 =ServiceManager獲取與文件ID對應的所有切片ID。步驟705 =ServiceManager判斷每個切片ID的計數器的計數值是否為零,如果不為零,則執(zhí)行步驟706 ;否則,執(zhí)行步驟707。 步驟706 :將切片ID的計數器的計數值減一。如果切片ID的計數器的計數值不為零,則說明該切片ID對應的切片數據由客戶端用戶進行過重復上傳,因此相應的將切片ID的計數器的計數值減一即可,表示系統(tǒng)中對于該計數器的計數值的修改少一。將該計數器的計數值將所述步驟707 =ServiceManager根據一致性哈希算法獲取用于存儲切片文件的ServiceMaster。如果切片ID的計數器的計數值為零,則說明該切片ID對應的切片數據在系統(tǒng)中僅有一份,沒有其它客戶端用戶對其進行操作,因此可以刪除該切片ID對應的切片數據本身。在服務器集群內部,處于上層的ServiceManager可以通過一致性哈希算法獲取用于存儲該文件的切片文件的ServiceMaster,同理,處于上層的ServiceMaster可以通過一致性哈希算法獲取用于存儲切片文件的Servicefforker。步驟708 ServiceManager將文件的刪除請求轉發(fā)給獲取的ServiceMaster。步驟709 ServiceMaster通過一致性哈希算法計算存儲該文件的每個切片文件的 ServiceWorker 的地址。本實施例中通過一致性哈希算法計算用于存儲每個切片文件的ServiceWorker的地址的過程與前述第六實施例中的描述一致,在此不再贅述。步驟710 !ServiceMaster 根據 ServiceWorker 的地址向相應的 ServiceWorker 發(fā)送刪除切片文件的請求,該請求中包含了待刪除切片文件的切片ID。步驟711 :ServiceWorker根據切片ID刪除其上存儲的相應切片文件。上述實施例中,服務器集群在完成刪除文件操作時,可以采用順序刪除每個切片文件的方式進行,例如,ServiceManager順序獲取待刪除文件的第一個切片文件,并計算存儲該切片文件的ServiceMaster,然后由該ServiceMaster計算存儲該切片文件的ServiceWorker,向該ServiceWorker發(fā)送刪除第一個切片文件的請求,此時可以ServiceWorker可以判斷該切片文件是否處于被讀寫的狀態(tài),如果未處于被讀寫的狀態(tài),則可以執(zhí)行刪除該切片文件的操作,以此類推,直到按照切片順序刪除完所有切片文件。與本申請基于云存儲的文件處理方法的實施例相對應,本發(fā)明還提供了基于云存儲的文件處理系統(tǒng)及服務器集群系統(tǒng)的實施例。參見圖8,為本申請基于云存儲的文件處理系統(tǒng)的實施例框圖該系統(tǒng)包括客戶端810、WEB服務器820和服務器集群830。
其中,所述WEB服務器820,用于接收客戶端發(fā)送的文件上傳請求,所述文件上傳請求用于請求向服務器集群上傳新文件,并向所述客戶端返回所述服務器集群為所述新文件生成的文件ID ;所述客戶端810,用于對所述新文件進行切片,并為每個切片文件生成唯一的切片ID,將切片文件數據包上傳給WEB服務器820,所述切片文件數據包中包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據;所述WEB服務器820,還用于將所述切片文件數據包中的每個切片文件的切片數據發(fā)送到所述服務器集群830 ;所述服務器集群830,用于將所述每個切片文件的切片數據存儲到對應的服務終端上,以及保存所述文件ID與所述切片ID的對應關系。進一步,所述客戶端810,還用于將重復統(tǒng)計請求發(fā)送給所述WEB服務器,所述重 復統(tǒng)計請求中包含每個切片文件的切片ID ;所述WEB服務器820,還用于將所述重復統(tǒng)計請求轉發(fā)到所述服務器集群;所述服務器集群830,還用于根據所述重復統(tǒng)計請求中的切片ID查找已保存的切片ID,如果查找到所述重復統(tǒng)計請求中的切片ID,則確定與所述切片ID對應的切片文件重復,如果未查找到所述重復統(tǒng)計請求中的切片ID,則確定與所述切片ID對應的切片文件不重復,并將每個切片文件是否重復的信息發(fā)送給所述WEB服務器;所述WEB服務器820,還用于將所述切片文件是否重復的信息發(fā)送給所述客戶端;所述客戶端810,具體用于根據所述切片文件是否重復的信息,將包含不重復切片文件的切片ID和切片數據的切片文件數據包上傳給所述WEB服務器。進一步,所述WEB服務器820,還用于向所述服務器集群發(fā)送獲取存儲切片文件地址的查詢請求;所述服務器集群830,還用于根據每個切片文件的切片ID,通過一致性哈希算法計算存儲每個切片文件的服務終端的地址;所述WEB服務器820,具體用于將所述切片文件數據包中的每個切片文件按照對應的服務終端的地址發(fā)送到服務終端上進行存儲。進一步,所述客戶端810,還用于向所述WEB服務器發(fā)送文件下載請求,所述文件下載請求中包含客戶端請求下載文件的文件ID ;所述WEB服務器820,還用于將所述文件下載請求發(fā)送給所述服務器集群;所述服務器集群830,還用于向所述WEB服務器發(fā)送存儲與所述文件ID對應的文件的每個切片文件的服務終端的地址;所述WEB服務器820,還用于根據所述服務終端的地址從對應的服務終端上獲取每個切片文件,并將所述切片文件按照切片順序組成所述請求下載的文件,并將所述文件發(fā)送給所述客戶端。進一步,所述WEB服務器820,還用于當所述文件上傳請求中還包含所述客戶端的用戶ID時,保存所述文件ID與所述用戶ID之間的對應關系;所述服務器集群830,還用于為每個切片ID設置引用計數器,所述引用計數器的計數值初始化為零,當確定與切片ID對應的切片文件重復時,將所述切片ID的引用計數器的計數值加一。
進一步,所述客戶端810,還用于向所述WEB服務器發(fā)送文件刪除請求,所述文件刪除請求中包含所述客戶端請求刪除文件的文件ID和用戶ID ;所述WEB服務器820,還用于當保存了所述刪除請求中保存的文件ID和用戶ID的對應關系時,將所述文件刪除請求發(fā)送給所述服務器集群;所述服務器集群830,還用于根據所述文件ID獲取對應的切片ID,并判斷所述切片ID的引用計數器的計數值是否為零;當切片ID的計數器的計數值為零,所述服務器集群獲取存儲所述請求刪除文件的每個切片文件的服務終端,服務器集群向對應的服務終端轉發(fā)所述文件刪除請求,接收到所述文件刪除請求的服務終端刪除組成所述請求刪除文件的切片文件;當切片ID的計數器的計數值不為零,則將所述切片ID的計數器的計數值減一。其中,服務器集群830可以包括(圖8中未示出) 至少一個服務集群整合端、與每個服務集群整合端相連的若干服務分配端、以及與每個服務分配端相連的若干服務終端;所述服務集群整合端用于與WEB服務器進行交互,并將交互數據向下依次傳輸到對應的服務分配端,并由服務分配端將交互數據傳輸到對應的服務終端。參見圖9,為本申請基于云存儲的服務器集群系統(tǒng)的實施例框圖該服務器集群系統(tǒng)包括WEB服務器910和服務器集群920,其中服務器集群920包含若干服務終端921,為了示例方便,圖9中僅示出了三個服務終端921。其中,所述WEB服務器910,用于接收客戶端發(fā)送的文件上傳請求,所述文件上傳請求用于請求向服務器集群上傳新文件,向所述客戶端返回所述服務器集群為所述新文件生成的文件ID,接收所述客戶端上傳的切片文件數據包,所述切片文件數據包中包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據;所述服務器集群920,用于接收所述WEB服務器發(fā)送的所述切片文件數據包中的每個切片文件的切片數據,并將每個切片文件的切片數據發(fā)送到所述服務器集群中的對應服務終端上進行存儲,以及保存所述文件ID與所述切片ID的對應關系。進一步,所述WEB服務器910,還用于接收客戶端發(fā)送的重復統(tǒng)計請求,所述重復統(tǒng)計請求中包含每個切片文件的切片ID,并將所述重復統(tǒng)計請求轉發(fā)到所述服務器集群;所述服務器集群920,還用于根據所述重復統(tǒng)計請求中的切片ID查找已保存的切片ID,如果查找到所述重復統(tǒng)計請求中的切片ID,則確定與所述切片ID對應的切片文件重復,如果未查找到所述重復統(tǒng)計請求中的切片ID,則確定與所述切片ID對應的切片文件不重復,以及將每個切片文件是否重復的信息發(fā)送給所述WEB服務器;所述WEB服務器910,還用于將所述切片文件是否重復的信息發(fā)送給所述客戶端,以使所述客戶端根據所述切片文件是否重復的信息,將包含不重復切片文件的切片ID和切片數據的切片文件數據包上傳給所述WEB服務器。進一步,所述WEB服務器910,還用于向所述服務器集群發(fā)送獲取存儲切片文件地址的查詢請求;所述服務器集群920,還用于根據每個切片文件的切片ID,通過一致性哈希算法計算存儲每個切片文件的服務終端的地址,并將所述服務終端的地址返回給所述WEB服務器;所述WEB服務器910具體用于將所述切片文件數據包中的每個切片文件按照對應的服務終端的地址發(fā)送到服務終端上進行存儲。進一步,所述WEB服務器910,還用于接收客戶端發(fā)送的文件下載請求,所述文件下載請求中包含客戶端請求下載文件的文件ID,并將所述文件下載請求發(fā)送給所述服務器集群;所述服務器集群920,還用于向所述WEB服務器發(fā)送存儲與所述文件ID對應的文件的每個切片文件的服務終端的地址;所述WEB服務器910,還用于根據所述服務終端的地址從對應的服務終端上獲取每個切片文件,并將所述切片文件按照切片順序組成所述請求下載的文件,并將所述文件發(fā)送給所述客戶端。進一步,所述WEB服務器910,還用于當所述文件上傳請求中還包含所述客戶端的用戶ID時,保存所述文件ID與所述用戶ID之間的對應關系;
所述服務器集群920,還用于為每個切片ID設置引用計數器,所述引用計數器的計數值初始化為零,當確定與切片ID對應的切片文件重復時,將所述切片ID的引用計數器的計數值加一。進一步,所述WEB服務器910,還用于接收所述客戶端發(fā)送的文件刪除請求,所述文件刪除請求中包含所述客戶端請求刪除文件的文件ID和用戶ID,并保存了所述刪除請求中保存的文件ID和用戶ID的對應關系時,將所述文件刪除請求發(fā)送給所述服務器集群;所述服務器集群920,還用于根據所述文件ID獲取對應的切片ID,并判斷所述切片ID的引用計數器的計數值是否為零;當切片ID的計數器的計數值為零,所述服務器集群獲取存儲所述請求刪除文件的每個切片文件的服務終端,服務器集群向對應的服務終端轉 發(fā)所述文件刪除請求;當切片ID的計數器的計數值不為零,則將所述切片ID的計數器的計
數值減一;所述服務終端921,用于接收到所述文件刪除請求后,刪除組成所述請求刪除文件的切片文件。其中,服務器集群920可以包括(圖9中未示出)至少一個服務集群整合端、與每個服務集群整合端相連的若干服務分配端、以及與每個服務分配端相連的若干所述服務終端;所述服務集群整合端用于與WEB服務器進行交互,并將交互數據向下依次傳輸到對應的服務分配端,并由服務分配端將交互數據傳輸到對應的服務終端。通過以上的實施方式的描述可知,本申請實施例中WEB服務器接收客戶端發(fā)送的文件上傳請求后,向客戶端返回服務器集群為新文件生成的文件ID,客戶端對新文件進行切片,并為每個切片文件生成唯一的切片ID,將切片文件數據包上傳給WEB服務器,切片文件數據包中的每個切片文件包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據,WEB服務器將切片文件數據包中的每個切片文件的切片數據發(fā)送到服務器集群中的對應服務終端上進行存儲。本申請實施例通過對文件進行分片處理并在服務器集群中對切片文件進行分布式存儲,從而使得基于服務器集群的云存儲性能更加優(yōu)化;應用本申請實施例上傳修改后的文件時,由于只需上傳用戶修改的文件切片,而無需重傳整個文件,因此減少了服務器集群中的冗余數據,節(jié)省了存儲空間,減少了客戶端上傳文件的時間。
本領域的技術人員可以清楚地了解到本發(fā)明實施例中的技術可借助軟件加必需的通用硬件平臺的方式來實現?;谶@樣的理解,本發(fā)明實施例中的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在存儲介質中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。以上所述的本發(fā)明實施方式,并不構成對本發(fā)明保護范圍的限定。任何在本發(fā)明 的精神和原則之內所作的修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種基于云存儲的文件處理方法,其特征在于,包括 WEB服務器接收客戶端發(fā)送的文件上傳請求,所述文件上傳請求用于請求向服務器集群上傳新文件; WEB服務器向所述客戶端返回所述服務器集群為所述新文件生成的文件ID ; 所述客戶端對所述新文件進行切片,并為每個切片文件生成唯一的切片ID ; 所述客戶端將切片文件數據包上傳給WEB服務器,所述切片文件數據包中包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據; WEB服務器將所述切片文件數據包中的每個切片文件的切片數據發(fā)送到所述服務器集群中的對應服務終端上進行存儲,其中,所述服務器集群保存所述文件ID與所述切片ID的對應關系。
2.根據權利要求I所述的方法,其特征在于,所述WEB服務器向所述客戶端返回所述服務器集群為所述新文件生成的文件ID包括 WEB服務器向所述服務器集群發(fā)送獲取所述新文件的文件ID的請求; 所述服務器集群根據所述請求為所述新文件分配文件ID ; 所述服務器集群將所述文件ID返回給所述WEB服務器; 所述WEB服務器將所述文件ID發(fā)送給所述客戶端。
3.根據權利要求I所述的方法,其特征在于,所述客戶端對所述新文件進行切片,并為每個切片文件生成唯一的切片ID包括 所述客戶端對所述新文件按照預設長度進行分塊,生成若干切片文件,其中當分塊后的剩余文件塊的長度小于所述預設長度時,將所述剩余文件塊作為一個切片文件; 根據所述每個切片文件的文件數據,通過MD5哈希函數計算每個切片文件的切片ID,所述切片ID用于唯一標識所述切片文件。
4.根據權利要求I所述的方法,其特征在于,所述客戶端將切片文件數據包上傳給WEB服務器之前,還包括 所述客戶端將重復統(tǒng)計請求發(fā)送給所述WEB服務器,所述重復統(tǒng)計請求中包含每個切片文件的切片ID ; 所述WEB服務器將所述重復統(tǒng)計請求轉發(fā)到所述服務器集群; 所述服務器集群根據所述重復統(tǒng)計請求中的切片ID查找已保存的切片ID,如果查找到所述重復統(tǒng)計請求中的切片ID,則確定與所述切片ID對應的切片文件重復,如果未查找到所述重復統(tǒng)計請求中的切片ID,則確定與所述切片ID對應的切片文件不重復; 所述服務器集群將每個切片文件是否重復的信息發(fā)送給所述WEB服務器; 所述WEB服務器將所述切片文件是否重復的信息發(fā)送給所述客戶端; 所述客戶端將切片文件數據包上傳給WEB服務器具體為所述客戶端根據所述切片文件是否重復的信息,將包含不重復切片文件的切片ID和切片數據的切片文件數據包上傳給所述WEB服務器。
5.根據權利要求I所述的方法,其特征在于,所述客戶端將切片文件數據包上傳給WEB服務器之后,還包括 所述WEB服務器向所述服務器集群發(fā)送獲取存儲切片文件地址的查詢請求; 所述服務器集群根據每個切片文件的切片ID,通過一致性哈希算法計算存儲每個切片文件的服務終端的地址; 服務器集群將所述服務終端的地址返回給所述WEB服務器; 所述WEB服務器將所述切片文件數據包中的每個切片文件發(fā)送到所述服務器集群中的對應服務終端上進行存儲具體為=WEB服務器將所述切片文件數據包中的每個切片文件按照對應的服務終端的地址發(fā)送到服務終端上進行存儲。
6.根據權利要求I所述的方法,其特征在于,還包括 客戶端向所述WEB服務器發(fā)送文件下載請求,所述文件下載請求中包含客戶端請求下載文件的文件ID ; WEB服務器將所述文件下載請求發(fā)送給所述服務器集群; 所述服務器集群向所述WEB服務器發(fā)送存儲與所述文件ID對應的文件的每個切片文件的服務終端的地址; WEB服務器根據所述服務終端的地址從對應的服務終端上獲取每個切片文件; WEB服務器將所述切片文件按照切片順序組成所述請求下載的文件,并將所述文件發(fā)送給所述客戶端。
7.根據權利要求4所述的方法,其特征在于,所述文件上傳請求中還包含所述客戶端的用戶ID,所述WEB服務器向所述客戶端返回所述服務器集群為所述新文件生成的文件ID后還包括保存所述文件ID與所述用戶ID之間的對應關系; 所述方法還包括 所述服務器集群為每個切片ID設置引用計數器,所述引用計數器的計數值初始化為零; 當確定與切片ID對應的切片文件重復時,將所述切片ID的引用計數器的計數值加一。
8.根據權利要求7所述的方法,其特征在于,還包括 客戶端向所述WEB服務器發(fā)送文件刪除請求,所述文件刪除請求中包含所述客戶端請求刪除文件的文件ID和用戶ID ; 當所述WEB服務器中保存了所述刪除請求中保存的文件ID和用戶ID的對應關系時,所述WEB服務器將所述文件刪除請求發(fā)送給所述服務器集群; 所述服務器集群根據所述文件ID獲取對應的切片ID,并判斷所述切片ID的引用計數器的計數值是否為零; 當切片ID的計數器的計數值為零,所述服務器集群獲取存儲所述請求刪除文件的每個切片文件的服務終端,服務器集群向對應的服務終端轉發(fā)所述文件刪除請求,接收到所述文件刪除請求的服務終端刪除組成所述請求刪除文件的切片文件;當切片ID的計數器的計數值不為零,則將所述切片ID的計數器的計數值減一。
9.根據權利要求I至8任意一項所述的方法,其特征在于,所述服務器集群包括 至少一個服務集群整合端、與每個服務集群整合端相連的若干服務分配端、以及與每個服務分配端相連的若干服務終端; 所述服務集群整合端用于與WEB服務器進行交互,并將交互數據向下依次傳輸到對應的服務分配端,并由服務分配端將交互數據傳輸到對應的服務終端。
10.一種基于云存儲的文件處理系統(tǒng),其特征在于,包括客戶端、WEB服務器和服務器集群,所述WEB服務器,用于接收客戶端發(fā)送的文件上傳請求,所述文件上傳請求用于請求向服務器集群上傳新文件,并向所述客戶端返回所述服務器集群為所述新文件生成的文件ID ; 所述客戶端,用于對所述新文件進行切片,并為每個切片文件生成唯一的切片ID,將切片文件數據包上傳給WEB服務器,所述切片文件數據包中包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據; 所述WEB服務器,還用于將所述切片文件數據包中的每個切片文件的切片數據發(fā)送到所述服務器集群; 所述服務器集群,用于將所述每個切片文件的切片數據存儲到對應的服務終端上,以及保存所述文件ID與所述切片ID的對應關系。
11.根據權利要求10所述的系統(tǒng),其特征在于, 所述客戶端,還用于將重復統(tǒng)計請求發(fā)送給所述WEB服務器,所述重復統(tǒng)計請求中包含每個切片文件的切片ID ; 所述WEB服務器,還用于將所述重復統(tǒng)計請求轉發(fā)到所述服務器集群; 所述服務器集群,還用于根據所述重復統(tǒng)計請求中的切片ID查找已保存的切片ID,如果查找到所述重復統(tǒng)計請求中的切片ID,則確定與所述切片ID對應的切片文件重復,如果未查找到所述重復統(tǒng)計請求中的切片ID,則確定與所述切片ID對應的切片文件不重復,并將每個切片文件是否重復的信息發(fā)送給所述WEB服務器; 所述WEB服務器,還用于將所述切片文件是否重復的信息發(fā)送給所述客戶端; 所述客戶端,具體用于根據所述切片文件是否重復的信息,將包含不重復切片文件的切片ID和切片數據的切片文件數據包上傳給所述WEB服務器。
12.根據權利要求10所述的系統(tǒng),其特征在于, 所述WEB服務器,還用于向所述服務器集群發(fā)送獲取存儲切片文件地址的查詢請求;所述服務器集群,還用于根據每個切片文件的切片ID,通過一致性哈希算法計算存儲每個切片文件的服務終端的地址; 所述WEB服務器,具體用于將所述切片文件數據包中的每個切片文件按照對應的服務終端的地址發(fā)送到服務終端上進行存儲。
13.根據權利要求10所述的系統(tǒng),其特征在于, 所述客戶端,還用于向所述WEB服務器發(fā)送文件下載請求,所述文件下載請求中包含客戶端請求下載文件的文件ID ; 所述WEB服務器,還用于將所述文件下載請求發(fā)送給所述服務器集群; 所述服務器集群,還用于向所述WEB服務器發(fā)送存儲與所述文件ID對應的文件的每個切片文件的服務終端的地址; 所述WEB服務器,還用于根據所述服務終端的地址從對應的服務終端上獲取每個切片文件,并將所述切片文件按照切片順序組成所述請求下載的文件,并將所述文件發(fā)送給所述客戶端。
14.根據權利要求11所述的系統(tǒng),其特征在于, 所述WEB服務器,還用于當所述文件上傳請求中還包含所述客戶端的用戶ID時,保存所述文件ID與所述用戶ID之間的對應關系;所述服務器集群,還用于為每個切片ID設置引用計數器,所述引用計數器的計數值初始化為零,當確定與切片ID對應的切片文件重復時,將所述切片ID的引用計數器的計數值加一。
15.根據權利要求14所述的系統(tǒng),其特征在于, 所述客戶端,還用于向所述WEB服務器發(fā)送文件刪除請求,所述文件刪除請求中包含所述客戶端請求刪除文件的文件ID和用戶ID ; 所述WEB服務器,還用于當保存了所述刪除請求中保存的文件ID和用戶ID的對應關系時,將所述文件刪除請求發(fā)送給所述服務器集群; 所述服務器集群,還用于根據所述文件ID獲取對應的切片ID,并判斷所述切片ID的引用計數器的計數值是否為零;當切片ID的計數器的計數值為零,所述服務器集群獲取存儲所述請求刪除文件的每個切片文件的服務終端,服務器集群向對應的服務終端轉發(fā)所述文件刪除請求,接收到所述文件刪除請求的服務終端刪除組成所述請求刪除文件的切片文件;當切片ID的計數器的計數值不為零,則將所述切片ID的計數器的計數值減一。
16.根據權利要求10至15任意一項所述的系統(tǒng),其特征在于,所述服務器集群包括 至少一個服務集群整合端、與每個服務集群整合端相連的若干服務分配端、以及與每個服務分配端相連的若干服務終端; 所述服務集群整合端用于與WEB服務器進行交互,并將交互數據向下依次傳輸到對應的服務分配端,并由服務分配端將交互數據傳輸到對應的服務終端。
17.一種基于云存儲的服務器集群系統(tǒng),其特征在于,包括WEB服務器和服務器集群,所述服務器集群中包含若干服務終端, 所述WEB服務器,用于接收客戶端發(fā)送的文件上傳請求,所述文件上傳請求用于請求向服務器集群上傳新文件,向所述客戶端返回所述服務器集群為所述新文件生成的文件ID,接收所述客戶端上傳的切片文件數據包,所述切片文件數據包中包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據; 所述服務器集群,用于接收所述WEB服務器發(fā)送的所述切片文件數據包中的每個切片文件的切片數據,并將每個切片文件的切片數據發(fā)送到所述服務器集群中的對應服務終端上進行存儲,以及保存所述文件ID與所述切片ID的對應關系。
18.根據權利要求17所述的系統(tǒng),其特征在于, 所述WEB服務器,還用于接收客戶端發(fā)送的重復統(tǒng)計請求,所述重復統(tǒng)計請求中包含每個切片文件的切片ID,并將所述重復統(tǒng)計請求轉發(fā)到所述服務器集群; 所述服務器集群,還用于根據所述重復統(tǒng)計請求中的切片ID查找已保存的切片ID,如果查找到所述重復統(tǒng)計請求中的切片ID,則確定與所述切片ID對應的切片文件重復,如果未查找到所述重復統(tǒng)計請求中的切片ID,則確定與所述切片ID對應的切片文件不重復,以及將每個切片文件是否重復的信息發(fā)送給所述WEB服務器; 所述WEB服務器,還用于將所述切片文件是否重復的信息發(fā)送給所述客戶端,以使所述客戶端根據所述切片文件是否重復的信息,將包含不重復切片文件的切片ID和切片數據的切片文件數據包上傳給所述WEB服務器。
19.根據權利要求17所述的系統(tǒng),其特征在于, 所述WEB服務器,還用于向所述服務器集群發(fā)送獲取存儲切片文件地址的查詢請求;所述服務器集群,還用于根據每個切片文件的切片ID,通過一致性哈希算法計算存儲每個切片文件的服務終端的地址,并將所述服務終端的地址返回給所述WEB服務器; 所述WEB服務器,具體用于將所述切片文件數據包中的每個切片文件按照對應的服務終端的地址發(fā)送到服務終端上進行存儲。
20.根據權利要求17所述的系統(tǒng),其特征在于, 所述WEB服務器,還用于接收客戶端發(fā)送的文件下載請求,所述文件下載請求中包含客戶端請求下載文件的文件ID,并將所述文件下載請求發(fā)送給所述服務器集群; 所述服務器集群,還用于向所述WEB服務器發(fā)送存儲與所述文件ID對應的文件的每個切片文件的服務終端的地址; 所述WEB服務器,還用于根據所述服務終端的地址從對應的服務終端上獲取每個切片文件,并將所述切片文件按照切片順序組成所述請求下載的文件,并將所述文件發(fā)送給所述客戶端。
21.根據權利要求18所述的系統(tǒng),其特征在于, 所述WEB服務器,還用于當所述文件上傳請求中還包含所述客戶端的用戶ID時,保存所述文件ID與所述用戶ID之間的對應關系; 所述服務器集群,還用于為每個切片ID設置引用計數器,所述引用計數器的計數值初始化為零,當確定與切片ID對應的切片文件重復時,將所述切片ID的引用計數器的計數值加一。
22.根據權利要求21所述的系統(tǒng),其特征在于,還包括 所述WEB服務器,還用于接收所述客戶端發(fā)送的文件刪除請求,所述文件刪除請求中包含所述客戶端請求刪除文件的文件ID和用戶ID,并保存了所述刪除請求中保存的文件ID和用戶ID的對應關系時,將所述文件刪除請求發(fā)送給所述服務器集群; 所述服務器集群,還用于根據所述文件ID獲取對應的切片ID,并判斷所述切片ID的引用計數器的計數值是否為零;當切片ID的計數器的計數值為零,所述服務器集群獲取存儲所述請求刪除文件的每個切片文件的服務終端,服務器集群向對應的服務終端轉發(fā)所述文件刪除請求;當切片ID的計數器的計數值不為零,則將所述切片ID的計數器的計數值減 所述服務終端,用于接收到所述文件刪除請求后,刪除組成所述請求刪除文件的切片文件。
23.根據權利要求17至22任意一項所述的系統(tǒng),其特征在于,所述服務器集群包括 至少一個服務集群整合端、與每個服務集群整合端相連的若干服務分配端、以及與每個服務分配端相連的若干所述服務終端; 所述服務集群整合端用于與WEB服務器進行交互,并將交互數據向下依次傳輸到對應的服務分配端,并由服務分配端將交互數據傳輸到對應的服務終端。
全文摘要
本申請公開了一種基于云存儲的文件處理方法、系統(tǒng)及服務器集群系統(tǒng),該方法包括WEB服務器接收客戶端發(fā)送的文件上傳請求;WEB服務器向客戶端返回服務器集群為待上傳新文件生成的文件ID;客戶端對新文件進行切片,并為每個切片文件生成唯一的切片ID;客戶端將切片文件數據包上傳給WEB服務器,切片文件數據包中包含文件ID、每個切片文件的切片ID和每個切片文件的切片數據;WEB服務器將切片文件數據包中的每個切片文件的切片數據發(fā)送到服務器集群中的對應服務終端上進行存儲。本申請實施例通過對文件進行分片處理并在服務器集群中對切片文件進行分布式存儲,從而使得基于服務器集群的云存儲性能更加優(yōu)化。
文檔編號H04L29/08GK102833294SQ20111016440
公開日2012年12月19日 申請日期2011年6月17日 優(yōu)先權日2011年6月17日
發(fā)明者全小飛, 薛貴榮, 卓磊, 宋南, 宋萬里, 程晗 申請人:阿里巴巴集團控股有限公司