]用戶有兩種請求方式,一種是提交文件的寫入請求,一種是查詢、瀏覽或獲取資源的讀取請求。
[0046]當Web服務(wù)器接收到用戶提交資源請求時,首先判斷是否需要做小文件合并,若需要,則進行文件合并,不需要則直接使用分布式文件系統(tǒng)寫入接口進行寫入即可。文件合并后通過分布式文件系統(tǒng)客戶端準備將文件寫入分布式文件系統(tǒng),在分布式系統(tǒng)客戶端寫入文件的同時,調(diào)用小文件索引更新模塊執(zhí)行小文件索引及更新,因為Web服務(wù)器主機和服務(wù)器集群是分離的,寫入和更新可以通過不同的線程同時執(zhí)行,彼此沒有影響。當分布式文件系統(tǒng)寫入成功后Web服務(wù)向客戶端返回提交成功信息。
[0047]在用戶需要瀏覽文件詳細內(nèi)容或下載文件時發(fā)送文件讀取請求,該請求頻次高,耗費系統(tǒng)資源最多。當Web服務(wù)器接收到用戶的讀取請求時,首先通過檢索系統(tǒng)根據(jù)用戶提交的條件進行檢索,得到用戶需要的資源條目結(jié)果集返回給用戶瀏覽,同時將結(jié)果集中顯示在用戶界面中第一頁的條目集合(默認20條)發(fā)送給緩存模塊,并開啟一個單獨的線程更新緩存,當用戶瀏覽完返回的結(jié)果集頁面請求下載或瀏覽詳細時,Web服務(wù)調(diào)用分布式文件系統(tǒng)客戶端準備讀取文件內(nèi)容,分布式文件系統(tǒng)客戶端首先在緩存中查找文件位置信息,若沒有查找到則再到小文件索引中查找,查找到位置信息后則直接到數(shù)據(jù)節(jié)點讀取數(shù)據(jù),返回給用戶。
[0048]綜上所述,本發(fā)明提出了一種用于多文件的存儲方法,針對用于全文檢索的小文件的讀寫,通過索引和預(yù)取提高檢索效率,在大量小文件的存儲和讀取的情況下保持云存儲平臺的響應(yīng)速度和分布式文件系統(tǒng)整體性能。
[0049]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該理解,上述的本發(fā)明的各模塊或各步驟可以用通用的計算系統(tǒng)來實現(xiàn),它們可以集中在單個的計算系統(tǒng)上,或者分布在多個計算系統(tǒng)所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算系統(tǒng)可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲系統(tǒng)中由計算系統(tǒng)來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0050]應(yīng)當理解的是,本發(fā)明的上述【具體實施方式】僅僅用于示例性說明或解釋本發(fā)明的原理,而不構(gòu)成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。此外,本發(fā)明所附權(quán)利要求旨在涵蓋落入所附權(quán)利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修改例。
【主權(quán)項】
1.一種用于多文件的存儲方法,用于在云存儲平臺中對文件進行處理,所述云存儲平臺包括三層結(jié)構(gòu),即用戶接口層,業(yè)務(wù)邏輯層和存儲層,其特征在于:所述業(yè)務(wù)邏輯層首先將低于預(yù)設(shè)大小的文件進行合并; 建立文件索引,將所述存儲層構(gòu)建在分布式文件系統(tǒng)上,為用戶提供文件讀取和寫入接口。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述分布式文件系統(tǒng)采用將Web服務(wù)器和服務(wù)器集群分離的方式,并且所述用戶接口層即提供的用戶界面,用于使用戶發(fā)送請求和接收反饋信息; 所述文件索引包括資源集合主索引和資源條目次索引,主索引數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫中,通過關(guān)系數(shù)據(jù)庫訪問接口提供訪問,使用Java中的Map數(shù)據(jù)結(jié)構(gòu)保存,在資源集合已經(jīng)寫入數(shù)據(jù)庫的基礎(chǔ)上,增加在資源條目添加時由系統(tǒng)生成值的字段,主索引中的數(shù)據(jù)采用Key/Value結(jié)構(gòu),使用Java中Map數(shù)據(jù)結(jié)構(gòu),在服務(wù)啟動的時候根據(jù)數(shù)據(jù)庫中內(nèi)容初始化該Map對象并一直存在,當有新的資源集合加入或有的被刪除的時候,對該Map對象進行更新;次索引是通過開源項目Lucene創(chuàng)建的,支持小文件元數(shù)據(jù)檢索,每當用戶添加資源條目的時候?qū)崟r更新索引文件;多個用戶在一個資源集合下同時添加資源條目時,實現(xiàn)文件寫入的并發(fā)控制; 所述將文件進行合并進一步包括:創(chuàng)建SequenceFile對象,通過過濾器的過濾,對符合預(yù)設(shè)條件的文件進行合并,根據(jù)資源條目所在的資源集合在主索引中查找,查找到資源集合對應(yīng)的文件路徑后,倉Il建SequenceFile對象,并獲得SequenceFile的Writer對象并對其進行配置,準備寫入文件,在執(zhí)行文件寫入的同時開啟一個新的線程,將該資源條目對應(yīng)的文件位值、長度信息寫入資源條目次索引,資源條目寫入成功后關(guān)閉輸出流,返回提交成功,否則返回提交失敗。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述業(yè)務(wù)邏輯層還包括分布式系統(tǒng)客戶端,其封裝了操作文件系統(tǒng)與外界交互的API,當文件系統(tǒng)接收到文件讀取請求時,首先經(jīng)過文件過濾器進行判斷,若屬于被合并的文件則首先在緩存中查找文件的元數(shù)據(jù)信息,若不存在元數(shù)據(jù)信息,則在索引文件中進行查找,若在索引文件中查找不到則與名字節(jié)點通信,在查找到文件元數(shù)據(jù)后構(gòu)建SequenceFile對象,然后獲得SequenceFile的Reader對象向數(shù)據(jù)節(jié)點發(fā)送讀取請求,將數(shù)據(jù)傳輸給用戶后關(guān)閉輸入流。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述文件寫入進一步包括:當Web服務(wù)器接收到用戶提交資源請求時,首先判斷是否需要進行小文件合并,若不需要文件合并,則直接使用分布式文件系統(tǒng)寫入接口進行寫入,文件合并后通過分布式文件系統(tǒng)客戶端準備將文件寫入分布式文件系統(tǒng),在分布式系統(tǒng)客戶端寫入文件的同時,調(diào)用小文件索引更新模塊執(zhí)行小文件索引及更新,寫入和更新通過不同的線程同時執(zhí)行,當分布式文件系統(tǒng)寫入成功后Web服務(wù)向客戶端返回提交成功信息; 所述文件讀取進一步包括:在用戶需要瀏覽文件內(nèi)容或下載文件時發(fā)送文件讀取請求,Web服務(wù)器接收到用戶的讀取請求,首先通過檢索系統(tǒng)根據(jù)用戶提交的條件進行檢索,得到用戶需要的資源條目結(jié)果集返回給用戶瀏覽,同時將結(jié)果集中顯示在用戶界面的條目集合發(fā)送給緩存模塊,并開啟一個單獨的線程更新緩存,當用戶瀏覽完返回的結(jié)果集頁面請求下載或瀏覽詳細時,Web服務(wù)調(diào)用分布式文件系統(tǒng)客戶端準備讀取文件內(nèi)容,分布式文件系統(tǒng)客戶端首先在緩存中查找文件位置信息,若沒有查找到文件位置信息,則在文件索引中查找,當查找到位置信息后則直接到數(shù)據(jù)節(jié)點讀取數(shù)據(jù),返回給用戶。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述建立文件索引之后,該方法還包括對索引進行預(yù)取,所述預(yù)取進一步包括: 在用戶發(fā)出檢索請求后,Web服務(wù)根據(jù)用戶檢索條件查詢符合用戶需要的資源條目結(jié)果集,返回給用戶,同時創(chuàng)建異步線程更新緩存,在返回用戶結(jié)果集到用戶瀏覽結(jié)果集并確定點擊下載或瀏覽操作之間的時間間隔內(nèi)更新緩存內(nèi)容,當接收到更新緩存內(nèi)容請求時,調(diào)用索引模塊進行檢索,將當前結(jié)果集條目的元數(shù)據(jù)載入緩存,當用戶發(fā)送下載或瀏覽請求時,Web服務(wù)調(diào)用分布式文件系統(tǒng)客戶端在緩存中查找元數(shù)據(jù)開始讀取數(shù)據(jù)并向客戶端傳輸;服務(wù)器維護一個固定線程數(shù)量的線程池,在每次接收到更新緩存請求的時候調(diào)用一個線程處理,若線程池內(nèi)沒有空閑線程則讓該緩存任務(wù)等待,利用FIFO算法建立緩存池并配置緩存池大小,將鍵值對key/value保存在緩存池中,其中文件名作為key,文件的數(shù)據(jù)節(jié)點ID,起始位置和長度的組合作為value,淘汰最久以前的緩存條目,該緩存池提供兩個操作即put操作和get操作,put操作往緩存池放入數(shù)據(jù),如果緩存池里面已有的數(shù)據(jù)達到了上限,則根據(jù)FIFO緩存替換算法替換數(shù)據(jù);Get操作根據(jù)key值獲取相應(yīng)的value值。
【專利摘要】本發(fā)明提供了一種用于多文件的存儲方法,用于在云存儲平臺中對文件進行處理,所述云存儲平臺包括用戶接口層,業(yè)務(wù)邏輯層和存儲層,所述業(yè)務(wù)邏輯層將低于預(yù)設(shè)大小的文件進行合并,然后建立文件索引,將存儲層構(gòu)建在分布式文件系統(tǒng)上,為用戶提供文件讀取和寫入接口。本發(fā)明在大量小文件的讀寫的情況下保持了云存儲平臺的響應(yīng)速度和分布式文件系統(tǒng)整體性能。
【IPC分類】G06F17-30
【公開號】CN104778270
【申請?zhí)枴緾N201510200979
【發(fā)明人】劉穎
【申請人】成都匯智遠景科技有限公司
【公開日】2015年7月15日
【申請日】2015年4月24日