分布式文件存儲和查詢方法及存取系統的制作方法
【專利摘要】本發明涉及一種分布式文件存儲和查詢方法及存取系統,所述分布式文件存儲方法,包括:向服務器上傳打包文件,所述打包文件包括原始文件和對所述原始文件進行描述的描述文件;所述服務器對所述打包文件進行解壓,并對解壓出的所述描述文件進行解析,以解析出所述描述文件的描述內容;所述服務器將解壓出的所述原始文件傳輸到分布式文件系統;所述分布式文件系統向所述服務器返回所述原始文件存儲的網絡地址;所述服務器將所述原始文件存儲的網絡地址和解析出的所述描述內容傳輸到分布式數據庫。由此,可以對存儲的文件進行內容的分類和檢索,實現了存儲的數據與現有業務數據的結合。
【專利說明】 分布式文件存儲和查詢方法及存取系統
【技術領域】
[0001]本發明涉及計算機存儲【技術領域】,具體涉及一種分布式文件存儲和查詢方法及存取系統。
【背景技術】
[0002]分布式文件存儲是對普通的文件系統的擴展,通過水平增加機器來實現數據的多點備份和存儲容量的擴充。但是僅僅實現靜態文件的存儲而不可以對存儲的內容進行一個宏觀的控制和分類在現在這個大數據時代是有很大的局限性的。
[0003]隨著移動互聯網時代的到來,互聯網應用由原來的瀏覽器為客戶端的應用變成了多平臺多終端的模式,如手機客戶端、Pad客戶端等。這些終端產生的數據如果放在本地易丟失也不易跨終端訪問和查看,這樣的數據查看有很大的狹隘性,將這些數據全部放在服務端存儲可以解決以上的局限。但是,隨著用戶和應用功能的增大,又會存在產生的數據的存儲問題。一臺服務器的存儲容量有限,如果存滿了就需要不停的加磁盤,如果機器硬件或者網絡發生故障,就無法訪問服務器,從而導致用戶體驗太差。
[0004]對于以上的存儲問題,現有技術中提出了很多解決辦法,比如用多臺機器進行文件的備份和增加存儲節點的方式來擴容,這種文件存儲系統業內已經有很多成熟的應用,比如HDFS、FastDFS,MooseFS, KFS等,他們都可以實現文件存儲服務的高可用和高容量,但是這樣的文件存儲可擴展性不強,雖然可以存儲大量文件,但是對存儲的文件進行內容的分類和檢索有很大的局限性;并且所存儲的數據和現有的業務數據很難進行結合。
【發明內容】
[0005]本發明所要解決的技術問題之一是對存儲的文件進行內容的分類和檢索有很大的局限性。
[0006]為此目的,本發明提出了一種分布式文件存儲方法,包括:向服務器上傳打包文件,所述打包文件包括原始文件和對所述原始文件進行描述的描述文件;所述服務器對所述打包文件進行解壓,并對解壓出的所述描述文件進行解析,以解析出所述描述文件的描述內容;所述服務器將解壓出的所述原始文件傳輸到分布式文件系統;所述分布式文件系統向所述服務器返回所述原始文件存儲的網絡地址;所述服務器將所述原始文件存儲的網絡地址和解析出的所述描述內容傳輸到分布式數據庫。
[0007]優選地,當所述分布式文件系統配置為多節點存儲時,所述服務器將解壓出的所述原始文件傳輸到分布式文件系統以及所述分布式文件系統向所述服務器返回所述原始文件存儲的網絡地址包括:所述服務器向多節點存儲的所述分布式文件系統發送存儲指令;所述分布式文件系統根據容量和/或帶寬,向所述服務器發送用于存儲所述原始文件的存儲節點的信息;所述服務器將所述原始文件傳輸到分布式文件系統的該存儲節點內,以進行存儲;所述分布式文件系統向所述服務器返回所述原始文件存儲的存儲節點及所述存儲節點內的網絡地址。
[0008]優選地,當所述分布式數據庫配置為多節點記錄時,所述服務器將所述原始文件存儲的網絡地址和解析出的所述描述內容傳輸到分布式數據庫包括:所述服務器向多節點記錄的所述分布式數據庫發送記錄指令;所述分布式數據庫根據容量和/或帶寬,向所述服務器發送用于存儲所述原始文件存儲的網絡地址和解析出的描述內容的記錄節點的信息;所述服務器將用于存儲所述原始文件存儲的網絡地址和解析出的描述內容記錄在所述分布式數據庫的所述記錄節點內。
[0009]本發明還公開了一種分布式文件查詢方法,包括:向服務器發送查詢條件;所述服務器根據接收到的查詢條件,向分布式數據庫發送查詢請求,以對所述分布式數據庫內存儲的原始文件的描述內容進行檢索;所述分布式數據庫根據所述查詢請求從分布式文件系統索取所請求的原始文件存儲的網絡地址并向所述服務器返回檢索結果;所述服務器返回所述檢索結果;對所述檢索結果進行解析,從所述分布式文件系統獲取所請求的原始文件。
[0010]優選地,當所述分布式數據庫配置為多節點記錄時,所述分布式數據庫根據所述查詢請求從分布式文件系統索取所請求的原始文件存儲的網絡地址并向所述服務器返回檢索結果包括:所述分布式數據庫根據所述查詢請求從記錄有所述描述內容的記錄節點中選擇帶寬較大的記錄節點來執行所述查詢請求;所述分布式數據庫內所述帶寬較大的記錄節點從所述分布式文件系統索取所請求的原始文件存儲的網絡地址并向所述服務器返回檢索結果。
[0011]優選地,當所述分布式文件系統配置為多節點存儲時,所述分布式數據庫根據所述查詢請求從分布式文件系統索取所請求的原始文件存儲的網絡地址并向所述服務器返回檢索結果包括:所述分布式文件系統在存儲有所請求的原始文件的存儲節點中選擇帶寬較大的存儲節點,并將所述存儲節點和所述存儲節點內所請求的原始文件的網絡地址發送回所述分布式數據庫;所述分布式數據庫將檢索結果返回給所述服務器;并且,從所述分布式文件系統獲取所請求的原始文件包括:從所述分布式文件系統的所述帶寬較大的存儲節點內的所請求的原始文件的網絡地址獲取所請求的原始文件。
[0012]優選地,所述查詢條件是所請求的原始文件的名稱、修改時間、上傳時間、原始文件大小、原始文件類型中的至少一項。
[0013]本發明還公開了一種分布式文件存取系統,包括:客戶端、服務器、分布式文件系統和分布式數據庫,其中:所述客戶端用于向所述服務器上傳打包文件,所述打包文件包括原始文件和對所述原始文件進行描述的描述文件;所述服務器,用于對接收到的所述打包文件進行解壓,對所述描述文件進行解析,以解析出所述描述文件的描述內容,將解壓出的原始文件傳輸到分布式文件系統;并將分布式文件系統發來的所述原始文件存儲的網絡地址以及解析出的所述描述內容傳輸到分布式數據庫;所述分布式文件系統用于存儲所述服務器傳輸的所述原始文件,并將所述原始文件存儲的網絡地址返回至所述服務器;所述分布式數據庫用于存儲所述服務器傳輸的所述原始文件存儲的網絡地址和解析出的所述描述內容。
[0014]優選地,所述服務器還用于根據所述客戶端發送的查詢條件,向所述分布式數據庫發送查詢請求,以對所述分布式數據庫內存儲的描述內容進行檢索;所述分布式數據庫還用于根據所述查詢請求從所述分布式文件系統索取所請求的原始文件的存儲節點,并向所述服務器返回檢索結果;所述客戶端還用于根據所述服務器返回的所述檢索結果,從所述分布式文件系統獲取所請求的原始文件。
[0015]優選地,所述分布式文件系統設置為多節點存儲,所述分布式文件系統根據容量和/或帶寬來選擇存儲節點進行存儲和/或獲取操作;和/或所述分布式數據庫設置為多節點記錄。所述分布式數據庫根據容量和/或帶寬來選擇記錄節點進行記錄和/或查詢操作。
[0016]為了結合文件存儲實現可擴展的存儲,本發明基于諸如FastDFS的分布式文件系統和諸如Hbase的分布式數據庫的結合,使用分布式文件系統來存儲原始文件,使用分布式數據庫來記錄存儲文件的屬性狀態等文件附加記錄,這樣同時進行記錄和文件的存儲,使得存儲系統有很好的擴展性,并且可以對存儲的文件進行內容的分類和檢索,實現了存儲的數據與現有業務數據的結合。
【專利附圖】
【附圖說明】
[0017]通過參考附圖會更加清楚的理解本發明的特征和優點,附圖是示意性的而不應理解為對本發明進行任何限制,在附圖中:
[0018]圖1示出了根據本發明實施例的分布式文件存儲方法;
[0019]圖2示出了根據本發明實施例的分布式文件查詢方法;
[0020]圖3示出了根據本發明另一實施例的分布式文件存儲方法;
[0021]圖4示出了根據本發明另一實施例的分布式文件查詢方法;
[0022]圖5示出了根據本發明實施例的分布式文件存取系統。
【具體實施方式】
[0023]下面將結合附圖對本發明的實施例進行詳細描述。
[0024]圖1示出了根據本發明實施例的分布式文件存儲方法。如圖1所示,該方法包括如下步驟:
[0025]步驟SlOl:客戶端向服務器上傳打包文件。
[0026]客戶端可以是網頁、移動終端,其可以通過socket將打包文件傳輸到服務器,打包文件包括原始文件和對原始文件進行描述的描述文件。
[0027]步驟S102:服務器在接收到整個打包文件后對其進行解壓,并對解壓出的描述文件進行解析,以解析出描述文件的描述內容。
[0028]步驟S103:服務器將解壓出的原始文件傳輸到分布式文件系統(例如,FastDFS)進行存儲。
[0029]優選地,分布式文件系統可以設置為多節點存儲。多節點存儲可以解決很多實際應用場景遇到的問題,主要解決容量和帶寬問題,例如在當前節點的存儲空間不足時,多節點存儲可以自動把未存儲的部分存放到其他存儲節點;在當前節點訪問的用戶過多時,月艮務會告知客戶端連接其他存儲節點;還可以將同一文件在奇數號和偶數號存儲節點各放置一份,以防止單節點故障,從而實現可靠的存儲。
[0030]步驟S104:分布式文件系統向服務器返回原始文件存儲的網絡地址。
[0031]分布式文件系統中具有主機,分布式文件系統通過其中的主機將原始文件存儲的網絡地址傳輸到服務器。
[0032]步驟S105:服務器向分布式數據庫(例如,Hbase)傳輸原始文件存儲的網絡地址和解析出的描述內容,以便于統計和查找。
[0033]優選地,分布式數據庫可以設置為多節點記錄。多節點記錄同樣也是解決容量和帶寬問題,以實現可靠的存儲和高效的查詢。
[0034]圖2示出了根據本發明實施例的分布式文件查詢方法。如圖2所示,該方法包括如下步驟:
[0035]步驟S201:客戶端向服務器發送查詢條件。
[0036]查詢條件可以是所需要請求的原始文件名稱或者其他過濾條件,比如修改時間、上傳時間、原始文件大小、原始文件類型等。
[0037]步驟S202:服務器根據接收到的查詢條件,向分布式數據庫發送查詢請求,以對分布式數據庫內存儲的原始文件的描述內容進行檢索。
[0038]步驟S203:分布式數據庫根據查詢請求從分布式文件系統索取所請求的原始文件存儲的網絡地址,并向服務器返回檢索結果。
[0039]步驟S204:服務器將檢索結果返回到客戶端。
[0040]優選地,服務器可以將檢索結果組織成規范的json串返回到客戶端。
[0041]步驟S205:客戶端解析服務器返回的檢索結果,從分布式文件系統獲取所請求的原始文件,以執行展示和下載等操作。
[0042]圖3示出了根據本發明另一實施例的分布式文件存儲方法。在該存儲方法中,分布式文件系統為多節點存儲,分布式數據庫為多節點記錄,該方法包括如下步驟:
[0043]步驟S301:客戶端向服務器上傳打包文件。
[0044]步驟S302:服務器在接收到整個打包文件后對其進行解壓,并對解壓出的描述文件進行解析,以解析出描述文件的描述內容。
[0045]步驟S303:服務器向多節點存儲的分布式文件系統發送存儲指令。
[0046]步驟S304:分布式文件系統根據容量和/或帶寬,向服務器發送用于存儲原始文件的存儲節點的信息。
[0047]分布式文件系統內的主機判斷各個存儲節點的容量和/或帶寬,從中選取一個或多個存儲節點。根據客戶端的需求,當存儲的文件比較重要,需要多存儲節點備份時,選取多個存儲節點,從而可將同一文件存放在多個存儲節點內,以防止單節點故障,實現可靠的存儲。
[0048]步驟S305:服務器將原始文件傳輸到分布式文件系統的該存儲節點內,以進行存儲。
[0049]步驟S306:分布式文件系統向服務器返回原始文件存儲的該存儲節點及該存儲節點內的網絡地址。
[0050]步驟S307:服務器向多節點記錄的分布式數據庫發送記錄指令。
[0051]步驟S308:分布式數據庫根據容量和/或帶寬,向服務器發送用于存儲原始文件的存儲節點、該存儲節點內的網絡地址和解析出的描述內容的記錄節點的信息。
[0052]分布式數據庫內的主機判斷各個記錄節點的容量和/或帶寬,從中選取一個或多個記錄節點。根據客戶端的需求,當存儲的文件比較重要,需要多記錄節點備份時,選取多個記錄節點,從而可將同一信息記錄在多個記錄節點內,以防止單節點故障,實現可靠的查詢。
[0053]步驟S309:服務器將用于存儲原始文件的存儲節點、該存儲節點內的網絡地址和解析出的描述內容記錄在分布式數據庫的該記錄節點內,以便于統計和查找。
[0054]由此,完成了分布式文件系統為多節點存儲、分布式數據庫為多節點記錄的分布式文件存儲方法,實現了可靠、高效的存儲。本領域技術人員可以理解,在該分布式文件存儲方法中,不一定需要同時采用多節點存儲的分布式文件系統和多節點記錄的分布式數據庫這兩者,而可以僅采用多節點存儲的分布式文件系統,或者僅采用多節點記錄的分布式數據庫,本實施例并非意在限定本發明。
[0055]圖4示出了根據本發明另一實施例的分布式文件查詢方法。在該查詢方法中,分布式文件系統為多節點存儲,分布式數據庫為多節點記錄,該方法包括如下步驟:
[0056]步驟S401:客戶端向服務器發送查詢條件。
[0057]步驟S402:服務器根據接收到的查詢條件,向分布式數據庫發送查詢請求,以對分布式數據庫內存儲的描述內容進行檢索。
[0058]步驟S403:分布式數據庫根據查詢請求從記錄有該描述內容的記錄節點中選擇帶寬較大的記錄節點來執行該查詢請求。
[0059]步驟S404:分布式數據庫內帶寬較大的記錄節點從分布式文件系統索取所請求的原始文件存儲的存儲節點和該存儲節點內的網絡地址。
[0060]步驟S405:分布式文件系統在存儲有所請求的原始文件的存儲節點中選擇帶寬較大的存儲節點,并將該存儲節點和該存儲節點內所請求的原始文件的網絡地址發送回分布式數據庫。
[0061]步驟S406:分布式數據庫將檢索結果返回給服務器。
[0062]步驟S407:服務器將檢索結果返回到客戶端。
[0063]步驟S408:客戶端解析服務器返回的檢索結果,從分布式文件系統的該存儲節點內的網絡地址獲取所請求的原始文件,以執行展示和下載等操作。
[0064]由此,完成了分布式文件系統為多節點存儲、分布式數據庫為多節點記錄的分布式文件查詢方法。本領域技術人員可以理解,在該分布式文件查詢方法中,不一定需要同時采用多節點存儲的分布式文件系統和多節點記錄的分布式數據庫這兩者,而可以僅采用多節點存儲的分布式文件系統,或者僅采用多節點記錄的分布式數據庫,本實施例并非意在限定本發明。
[0065]圖5示出了根據本發明實施例的分布式文件存取系統。如圖3所示,該系統包括客戶端、服務器、分布式文件系統和分布式數據庫,其中:客戶端501用于向服務器502上傳打包文件,打包文件包括原始文件和描述文件;服務器502用于對接收到的打包文件進行解壓,對描述文件進行解析,以解析出描述文件的描述內容,并分別向分布式文件系統504和分布式數據庫503傳輸文件;分布式文件系統504用于存儲服務器502傳輸的原始文件,并將原始文件存儲的網絡地址返回至服務器502 ;分布式數據庫503用于存儲服務器502傳輸的原始文件存儲的網絡地址和解析出的描述內容。
[0066]更進一步地,服務器502還用于根據客戶端501發送的查詢條件,向分布式數據庫503發送查詢請求,以對分布式數據庫503內存儲的描述內容進行檢索;分布式數據庫503還用于根據查詢請求從分布式文件系統504索取所請求的原始文件的網絡地址,并向服務器502返回檢索結果;客戶端501還用于根據服務器返回的檢索結果,從分布式文件系統504獲取所請求的原始文件。
[0067]優選地,分布式文件系統504可以設置為多節點存儲,以根據容量和/或帶寬來選擇存儲節點進行存儲和/或獲取操作;和/或分布式數據庫503可以設置為多節點記錄。以根據容量和/或帶寬來選擇記錄節點進行記錄和/或查詢操作。
[0068]通過采用本發明所公開的分布式文件存儲和查詢方法及存取系統,可以對存儲的文件進行內容的分類和檢索,實現了存儲的數據與現有業務數據的結合。
[0069]雖然結合附圖描述了本發明的實施方式,但是本領域技術人員可以在不脫離本發明的精神和范圍的情況下作出各種修改和變型,這樣的修改和變型均落入由所附權利要求所限定的范圍之內。
【權利要求】
1.一種分布式文件存儲方法,包括: 向服務器上傳打包文件,所述打包文件包括原始文件和對所述原始文件進行描述的描述文件; 所述服務器對所述打包文件進行解壓,并對解壓出的所述描述文件進行解析,以解析出所述描述文件的描述內容; 所述服務器將解壓出的所述原始文件傳輸到分布式文件系統; 所述分布式文件系統向所述服務器返回所述原始文件存儲的網絡地址; 所述服務器將所述原始文件存儲的網絡地址和解析出的所述描述內容傳輸到分布式數據庫。
2.根據權利要求1所述的分布式文件存儲方法,其中,當所述分布式文件系統配置為多節點存儲時,所述服務器將解壓出的所述原始文件傳輸到分布式文件系統以及所述分布式文件系統向所述服務器返回所述原始文件存儲的網絡地址包括: 所述服務器向多節點存儲的所述分布式文件系統發送存儲指令; 所述分布式文件系統根據容量和/或帶寬,向所述服務器發送用于存儲所述原始文件的存儲節點的信息; 所述服務器將所述原始文件傳輸到分布式文件系統的該存儲節點內,以進行存儲;所述分布式文件系統向所述服務器返回所述原始文件存儲的存儲節點及所述存儲節點內的網絡地址。
3.根據權利要求1或2所述的分布式文件存儲方法,其中,當所述分布式數據庫配置為多節點記錄時,所述服務器將所述原始文件存儲的網絡地址和解析出的所述描述內容傳輸到分布式數據庫包括: 所述服務器向多節點記錄的所述分布式數據庫發送記錄指令; 所述分布式數據庫根據容量和/或帶寬,向所述服務器發送用于存儲所述原始文件存儲的網絡地址和解析出的描述內容的記錄節點的信息; 所述服務器將用于存儲所述原始文件存儲的網絡地址和解析出的描述內容記錄在所述分布式數據庫的所述記錄節點內。
4.一種分布式文件查詢方法,包括: 向服務器發送查詢條件; 所述服務器根據接收到的查詢條件,向分布式數據庫發送查詢請求,以對所述分布式數據庫內存儲的原始文件的描述內容進行檢索; 所述分布式數據庫根據所述查詢請求從分布式文件系統索取所請求的原始文件存儲的網絡地址并向所述服務器返回檢索結果; 所述服務器返回所述檢索結果; 對所述檢索結果進行解析,從所述分布式文件系統獲取所請求的原始文件。
5.根據權利要求4所述的分布式文件查詢方法,其中,當所述分布式數據庫配置為多節點記錄時,所述分布式數據庫根據所述查詢請求從分布式文件系統索取所請求的原始文件存儲的網絡地址并向所述服務器返回檢索結果包括: 所述分布式數據庫根據所述查詢請求從記錄有所述描述內容的記錄節點中選擇帶寬較大的記錄節點來執行所述查詢請求; 所述分布式數據庫內所述帶寬較大的記錄節點從所述分布式文件系統索取所請求的原始文件存儲的網絡地址并向所述服務器返回檢索結果。
6.根據權利要求4或5所述的分布式文件查詢方法,其中,當所述分布式文件系統配置為多節點存儲時,所述分布式數據庫根據所述查詢請求從分布式文件系統索取所請求的原始文件存儲的網絡地址并向所述服務器返回檢索結果包括: 所述分布式文件系統在存儲有所請求的原始文件的存儲節點中選擇帶寬較大的存儲節點,并將所述存儲節點和所述存儲節點內所請求的原始文件的網絡地址發送回所述分布式數據庫; 所述分布式數據庫將檢索結果返回給所述服務器; 并且,從所述分布式文件系統獲取所請求的原始文件包括: 從所述分布式文件系統的所述帶寬較大的存儲節點內的所請求的原始文件的網絡地址獲取所請求的原始文件。
7.根據權利要求4所述的方法,其中: 所述查詢條件是所請求的原始文件的名稱、修改時間、上傳時間、原始文件大小、原始文件類型中的至少一項。
8.—種分布式文件存取系統,包括:客戶端、服務器、分布式文件系統和分布式數據庫,其中: 所述客戶端用于向所述服務器上傳打包文件,所述打包文件包括原始文件和對所述原始文件進行描述的描述文件; 所述服務器,用于對接收到的所述打包文件進行解壓,對所述描述文件進行解析,以解析出所述描述文件的描述內容,將解壓出的原始文件傳輸到分布式文件系統;并將分布式文件系統發來的所述原始文件存儲的網絡地址以及解析出的所述描述內容傳輸到分布式數據庫; 所述分布式文件系統用于存儲所述服務器傳輸的所述原始文件,并將所述原始文件存儲的網絡地址返回至所述服務器; 所述分布式數據庫用于存儲所述服務器傳輸的所述原始文件存儲的網絡地址和解析出的所述描述內容。
9.根據權利要求8所述的系統,其中: 所述服務器還用于根據所述客戶端發送的查詢條件,向所述分布式數據庫發送查詢請求,以對所述分布式數據庫內存儲的描述內容進行檢索; 所述分布式數據庫還用于根據所述查詢請求從所述分布式文件系統索取所請求的原始文件的存儲節點,并向所述服務器返回檢索結果; 所述客戶端還用于根據所述服務器返回的所述檢索結果,從所述分布式文件系統獲取所請求的原始文件。
10.根據權利要求9或10所述的系統,其中: 所述分布式文件系統設置為多節點存儲,所述分布式文件系統根據容量和/或帶寬來選擇存儲節點進行存儲和/或獲取操作;和/或 所述分布式數據庫設置為多節點記錄。所述分布式數據庫根據容量和/或帶寬來選擇記錄節點進行記錄和/或查詢操作。
【文檔編號】H04L29/08GK104462129SQ201310432666
【公開日】2015年3月25日 申請日期:2013年9月22日 優先權日:2013年9月22日
【發明者】王煒 申請人:北大方正集團有限公司, 北京北大方正電子有限公司