一種電子郵件處理方法
【技術(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]用戶通過統(tǒng)一的數(shù)據(jù)傳輸層與郵件系統(tǒng)進行業(yè)務(wù)交互;
[0006]在進行數(shù)據(jù)備份時,郵件系統(tǒng)將自身數(shù)據(jù)段驅(qū)動層的所有段寫入請求都發(fā)送給數(shù)據(jù)傳輸層,并把接收到的每一個請求都切分成四元組〈客戶端編號,邏輯段號,時間點,數(shù)據(jù)段〉,每個元組表示對某個段的一次寫操作;
[0007]在進行數(shù)據(jù)恢復(fù)時,客戶端將恢復(fù)請求三元組〈時間點,起始邏輯段號,結(jié)束邏輯段號 > 發(fā)送給數(shù)據(jù)傳輸層;
[0008]如果客戶端需要刪除版本數(shù)據(jù),則將一個刪除請求二元組〈起始時間點,結(jié)束時間點 > 發(fā)送給數(shù)據(jù)傳輸層,表示其需要刪除的版本時間點范圍。
[0009]優(yōu)選地,所述郵件系統(tǒng)還為每個客戶端維護版本索引,保存該客戶端所有段的所有版本信息以便在恢復(fù)時快速查詢,版本索引在邏輯上存儲的是從二元組〈邏輯段號,時間點〉到數(shù)據(jù)段的映射,所述版本索引由存儲在磁盤上的兩級索引和在RAM中的緩存組成,磁盤索引定期進行更新操作,而RAM緩存則存儲上次磁盤索引更新之后直至當前的新增的版本信息,其中主索引由時間點和數(shù)據(jù)段組成,次索引包括邏輯段的版本信息在主索引中的起始位置,當前段最新版本的時間點和數(shù)據(jù)段ID。
[0010]優(yōu)選地,所述郵件系統(tǒng)還對每一個新的數(shù)據(jù)段使用hash算法計算其數(shù)據(jù)段ID,通過比對該ID判斷此數(shù)據(jù)段是否與已有的數(shù)據(jù)段重復(fù),采用統(tǒng)一的后端存儲池,針對所有客戶端的所有段版本數(shù)據(jù)進行數(shù)據(jù)去重;
[0011]對每個客戶端都在客戶端磁盤緩存兩類數(shù)據(jù),第一類數(shù)據(jù)是所有段的最新版本數(shù)據(jù)段,第二類數(shù)據(jù)是客戶端系統(tǒng)內(nèi)最近段寫入操作的數(shù)據(jù)段,磁盤緩存使用段分配位圖來管理存儲空間,將段大小設(shè)置成所有客戶端的段大小的最小值,每個數(shù)據(jù)段在磁盤上連續(xù)存儲,用其起始段號來表示存儲位置。
[0012]優(yōu)選地,所述數(shù)據(jù)備份進一步包括:
[0013]數(shù)據(jù)傳輸層持續(xù)從客戶端系統(tǒng)接收數(shù)據(jù)寫操作流,并分割成針對單個段的寫操作,將每個寫操作的數(shù)據(jù)段進行去重計算,在每次索引更新時,讀取當前的主索引,將RAM緩存內(nèi)每個段的新版本記錄追加到該段的主索引記錄區(qū)末尾,生成新的主索引;在開始索引更新前,生成新的RAM緩存,而在更新操作完成之后釋放原緩存;根據(jù)數(shù)據(jù)去重結(jié)果更新配置數(shù)據(jù)信息,對新的數(shù)據(jù)段建立新的元組并賦初始值,對重復(fù)的數(shù)據(jù)段則更新其引用計數(shù),將新的寫操作信息傳遞給磁盤緩存,同步更新各數(shù)據(jù)段在磁盤緩存中的位置和引用計數(shù)信息;將去重后的數(shù)據(jù)批量存儲到服務(wù)器端,同時更新其服務(wù)器端位置信息。
[0014]優(yōu)選地,所述數(shù)據(jù)恢復(fù)進一步包括:
[0015]當數(shù)據(jù)傳輸層從客戶端系統(tǒng)接收到一個數(shù)據(jù)恢復(fù)請求時,首先啟動若干工作線程,包括一個版本查詢線程、多個數(shù)據(jù)讀取線程和一個數(shù)據(jù)重組線程;對于每個數(shù)據(jù)段,版本查詢線程從版本索引中查找到時間點不晚于待恢復(fù)時間點的最新的版本信息;對于每個段號,該線程首先查詢RAM緩存,如能查到結(jié)果則直接返回,否則查詢線程從次索引中讀取該段的信息;如果時間點滿足條件,則直接返回數(shù)據(jù)段,否則繼續(xù)在主索引中根據(jù)當前段和下一段表示的起止位置,采用折半搜索算法查找;將查找到的每個段的待恢復(fù)版本的數(shù)據(jù)段傳遞給數(shù)據(jù)讀取線程和數(shù)據(jù)重組線程;數(shù)據(jù)重組線程在RAM中維護一個隊列結(jié)構(gòu)作為滑動窗口,每個隊列元素依次表示一個連續(xù)待恢復(fù)區(qū)域內(nèi)的某個段;對于某個需讀取的數(shù)據(jù)段ID,重組線程首先檢查RAM緩存,如果緩存命中則直接讀取,否則查找其配置數(shù)據(jù)信息,如果其客戶端磁盤緩存引用計數(shù)大于0,則根據(jù)磁盤緩存位置從磁盤讀取,否則根據(jù)服務(wù)器端存儲位置從服務(wù)器端讀?。蛔x取操作由數(shù)據(jù)讀取線程并發(fā)執(zhí)行,對于每個讀取到的數(shù)據(jù)段,重組線程將其數(shù)據(jù)復(fù)制到當前滑動窗口內(nèi)所有出現(xiàn)的位置;將隨后滑動窗口前部已讀取的數(shù)據(jù)段批量傳輸給客戶端系統(tǒng)供其寫入,恢復(fù)窗口則繼續(xù)向后滑動,直至完成所有段的恢復(fù)操作。
[0016]本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點:
[0017]提出了一種郵件處理方法,減少客戶端與服務(wù)器之間的交互次數(shù);并對數(shù)據(jù)支持部分緩存,維護緩存的一致性;不依賴于底層郵件系統(tǒng),具有良好的通用性;在網(wǎng)絡(luò)不穩(wěn)定時,繼續(xù)向上層應(yīng)用提供可靠的數(shù)據(jù)服務(wù)。
【附圖說明】
[0018]圖1是根據(jù)本發(fā)明實施例的電子郵件處理方法的流程圖。
【具體實施方式】
[0019]下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細描述。結(jié)合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細節(jié),并且無這些具體細節(jié)中的一些或者所有細節(jié)也可以根據(jù)權(quán)利要求書實現(xiàn)本發(fā)明。
[0020]本發(fā)明的一方面提供了一種電子郵件處理方法。圖1是根據(jù)本發(fā)明實施例的電子郵件處理方法流程圖。郵件系統(tǒng)支持跨局域網(wǎng)數(shù)據(jù)訪問,該系統(tǒng)是典型的B/S模式,包含一個客戶端和一個服務(wù)器端。在服務(wù)器端僅需要設(shè)置訪問目錄后,在客戶端就可以看到與服務(wù)器端訪問目錄一致的目錄視圖。在客戶端可以像操作客戶端郵件系統(tǒng)一樣操作位于遠程的郵件系統(tǒng)。客戶端支持對遠程(即服務(wù)器端)文件及目錄使用標準的系統(tǒng)調(diào)用進行存取訪問。
[0021]郵件系統(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ù)器之間的通信。
[0022]郵件系統(tǒng)操作的處理過程包括:應(yīng)用請求到達客戶端的文件系統(tǒng)層,文件系統(tǒng)層繼續(xù)將請求發(fā)送至內(nèi)核組件,觸發(fā)客戶端的事件驅(qū)動層,之后通過數(shù)據(jù)傳輸層將請求遠程發(fā)送給服務(wù)器端的數(shù)據(jù)傳輸層,服務(wù)器端收到請求后將請求傳送給事件處理層,事件處理層與郵件系統(tǒng)交互,并