一種郵件提取方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及文件存儲,特別涉及一種郵件提取方法。
【背景技術(shù)】
[0002]在這樣的數(shù)據(jù)總量飛速增長的大背景下,數(shù)據(jù)中心、全球化的企業(yè)、云存儲系統(tǒng)均要求能夠有效并可靠的訪問互聯(lián)網(wǎng)分布的數(shù)據(jù),例如用戶的郵件可以存儲在各個web集群服務(wù)器中。相比內(nèi)網(wǎng)環(huán)境,互聯(lián)網(wǎng)具有低帶寬、高延時的顯著特征,并且網(wǎng)絡(luò)抖動和中斷時有發(fā)生,這樣便對文件的訪問性能和可靠性帶來挑戰(zhàn),難以向應(yīng)用提供持續(xù)穩(wěn)定的服務(wù)?;诰W(wǎng)絡(luò)的郵件系統(tǒng)在web服務(wù)器和客戶端的每次“往返”過程都會對郵件的訪問性能造成巨大的影響。當客戶端訪問某文件,向服務(wù)器發(fā)送open操作時,將打開文件的全部數(shù)據(jù)內(nèi)容通過網(wǎng)絡(luò)讀取到客戶端瀏覽器對應(yīng)的網(wǎng)頁目錄,也就是說其只支持全文件的緩存方式,不支持部分文件數(shù)據(jù)的緩存。當客戶端訪問較大文件的一小部分數(shù)據(jù)時,不僅會造成帶寬的嚴重浪費,而且在高延遲低帶寬的網(wǎng)絡(luò)環(huán)境下會嚴重影響數(shù)據(jù)的訪問性能。
[0003]因此,針對相關(guān)技術(shù)中所存在的上述問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0004]為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種郵件提取方法,包括:
[0005]在郵件服務(wù)器端設(shè)置訪問目錄,使客戶端獲取與服務(wù)器端訪問目錄一致的目錄視圖;客戶端對遠程服務(wù)器端文件及目錄使用標準的系統(tǒng)調(diào)用進行存取訪問;
[0006]客戶端的事件驅(qū)動層支撐相關(guān)的接口調(diào)用,接收系統(tǒng)調(diào)用請求,包括郵件系統(tǒng)創(chuàng)建、刪除和數(shù)據(jù)讀寫;服務(wù)器端的事件處理層用于處理客戶端的訪問請求,與底層進行交互并根據(jù)請求類型作出處理;客戶端和服務(wù)器端的數(shù)據(jù)傳輸層建立客戶端和服務(wù)器之間的通Is ;
[0007]當應(yīng)用請求到達客戶端的文件系統(tǒng)層時,文件系統(tǒng)層繼續(xù)將請求發(fā)送至內(nèi)核組件,觸發(fā)客戶端的事件驅(qū)動層,然后通過數(shù)據(jù)傳輸層將請求遠程發(fā)送給服務(wù)器端的數(shù)據(jù)傳輸層,服務(wù)器端收到請求后將請求傳送給事件處理層進行數(shù)據(jù)讀寫。
[0008]優(yōu)選地,所述客戶端還包括緩存,用于緩存服務(wù)器郵件的配置數(shù)據(jù)信息和數(shù)據(jù)內(nèi)容信息,所述數(shù)據(jù)內(nèi)容信息包含與郵件對象對應(yīng)的文件數(shù)據(jù)以及與目錄對象對應(yīng)的目錄數(shù)據(jù);
[0009]所述配置數(shù)據(jù)采用RAM緩存和數(shù)據(jù)庫永久存儲緩存相結(jié)合,RAM緩存為配置數(shù)據(jù)提供訪問,將系統(tǒng)正在引用的配置數(shù)據(jù)緩存在RAM中,并且在RAM中維護配置數(shù)據(jù)的引用計數(shù),當引用計數(shù)變?yōu)镺時,就將配置數(shù)據(jù)從RAM中替換出去,并永久存儲到數(shù)據(jù)庫中;
[0010]對目錄數(shù)據(jù)的存儲采用數(shù)據(jù)庫進行存儲,對文件數(shù)據(jù)提供大容量的數(shù)據(jù)緩存,利用文件片段的數(shù)據(jù)緩存方式,其偏移量信息作為配置數(shù)據(jù)的一部分進行緩存,而偏移量所對應(yīng)的實際數(shù)據(jù)內(nèi)容則緩存在郵件系統(tǒng)中。
[0011]優(yōu)選地,還包括:應(yīng)用請求在到達內(nèi)核模塊后,被轉(zhuǎn)換為配置數(shù)據(jù)請求或者數(shù)據(jù)內(nèi)容請求,利用節(jié)點將請求與緩存聯(lián)系起來,該節(jié)點與文件/目錄一一對應(yīng),其包括所訪問對象的配置數(shù)據(jù)以及數(shù)據(jù)內(nèi)容信息,一旦獲得節(jié)點就能訪問相應(yīng)對象的配置數(shù)據(jù)和文件數(shù)據(jù);所述節(jié)點采用以下數(shù)據(jù)結(jié)構(gòu):
[0012]id:用于標識節(jié)點,是全局唯一的id值,由服務(wù)器端產(chǎn)生并維護;
[0013]attr:表示節(jié)點的屬性信息;
[0014]cachetime:用于記錄更新配置數(shù)據(jù)的系統(tǒng)時間;
[0015]Iru:用于緩存容量管理中節(jié)點緩存數(shù)據(jù)的回收,所有被操作過的節(jié)點都會以LRU的方式組織成LRU鏈表,尾部的節(jié)點代表最久未被訪問的對象;
[0016]extent:用于標識節(jié)點在緩存中緩存數(shù)據(jù)對應(yīng)的數(shù)據(jù)片段,在讀/寫過程中將對應(yīng)的片段信息鏈接到該extent鏈表上;
[0017]flush:用于表明該節(jié)點上的臟數(shù)據(jù)片段,在寫過程中將寫片段鏈接到該flush鏈表上,在刷新過程中訪問該鏈表獲取片段信息,并將對應(yīng)的臟數(shù)據(jù)寫回到服務(wù)器端;
[0018]cache_size:表示該節(jié)點的緩存數(shù)據(jù)大?。?br>[0019]data_state:代表該節(jié)點的緩存數(shù)據(jù)狀態(tài);
[0020]文件數(shù)據(jù)的緩存存在3種狀態(tài):清潔狀態(tài)、臟狀態(tài)以及鎖定狀態(tài);所述清潔狀態(tài)表明緩存數(shù)據(jù)與服務(wù)器端的源數(shù)據(jù)完全一致;所述臟狀態(tài)表明客戶端對緩存文件發(fā)生過寫操作而沒有將臟數(shù)據(jù)刷新到服務(wù)器端;所述鎖定狀態(tài)表明客戶端正在將臟數(shù)據(jù)刷新到服務(wù)器端;
[0021]數(shù)據(jù)節(jié)點被創(chuàng)建時,節(jié)點處于清潔狀態(tài),此時對該節(jié)點執(zhí)行讀操作不會改變節(jié)點的狀態(tài),但對該節(jié)點執(zhí)行寫操作會使節(jié)點處于臟狀態(tài);當節(jié)點處于臟狀態(tài)時,對該節(jié)點的讀/寫操作均不會修改節(jié)點的狀態(tài),但對該節(jié)點執(zhí)行刷新操作時,則會使節(jié)點處于鎖定狀態(tài);當節(jié)點處于鎖定狀態(tài)時,對該節(jié)點執(zhí)行讀操作不修改節(jié)點的狀態(tài),當刷新操作完成后并且在數(shù)據(jù)刷新期間沒有被修改,則節(jié)點會變?yōu)榍鍧崰顟B(tài),否則節(jié)點會再次進入臟狀態(tài);上述刷新操作是指將客戶端對數(shù)據(jù)的修改同步到服務(wù)器端的過程。
[0022]本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點:
[0023]提出了一種郵件處理方法,減少客戶端與服務(wù)器之間的交互次數(shù);并對數(shù)據(jù)支持部分緩存,維護緩存的一致性;不依賴于底層郵件系統(tǒng),具有良好的通用性;在網(wǎng)絡(luò)不穩(wěn)定時,繼續(xù)向上層應(yīng)用提供可靠的數(shù)據(jù)服務(wù)。
【附圖說明】
[0024]圖1是根據(jù)本發(fā)明實施例的郵件提取方法的流程圖。
【具體實施方式】
[0025]下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細描述。結(jié)合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細節(jié),并且無這些具體細節(jié)中的一些或者所有細節(jié)也可以根據(jù)權(quán)利要求書實現(xiàn)本發(fā)明。
[0026]本發(fā)明的一方面提供了一種郵件提取方法。圖1是根據(jù)本發(fā)明實施例的郵件提取方法流程圖。郵件系統(tǒng)支持跨局域網(wǎng)數(shù)據(jù)訪問,該系統(tǒng)是典型的B/S模式,包含一個客戶端和一個服務(wù)器端。在服務(wù)器端僅需要設(shè)置訪問目錄后,在客戶端就可以看到與服務(wù)器端訪問目錄一致的目錄視圖。在客戶端可以像操作客戶端郵件系統(tǒng)一樣操作位于遠程的郵件系統(tǒng)??蛻舳酥С謱h程(即服務(wù)器端)文件及目錄使用標準的系統(tǒng)調(diào)用進行存取訪問。
[0027]郵件系統(tǒng)的整體架構(gòu)中,客戶端的事件驅(qū)動層用于支撐相關(guān)的接口調(diào)用,接收郵件系統(tǒng)創(chuàng)建、刪除、讀、寫等系統(tǒng)調(diào)用請求;服務(wù)器端的事件處理層主要用于處理客戶端的訪問請求,與底層進行交互并根據(jù)請求類型作出相應(yīng)處理;而數(shù)據(jù)傳輸層分別存在于客戶端和服務(wù)器端,用于客戶端和服務(wù)器之間的通信。
[0028]郵件系統(tǒng)操作的處理過程包括:應(yīng)用請求到達客戶端的文件系統(tǒng)層,文件系統(tǒng)層繼續(xù)將請求發(fā)送至內(nèi)核組件,觸發(fā)客戶端的事件驅(qū)動層,之后通過數(shù)據(jù)傳輸層將請求遠程發(fā)送給服務(wù)器端的數(shù)據(jù)傳輸層,服務(wù)器端收到請求后將請求傳送給事件處理層,事件處理層與郵件系統(tǒng)交互,并完成