專利名稱:一種基于udp分布式小文件存儲系統(tǒng)及其數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)信息處理技術(shù)領(lǐng)域,特別是涉及一種基于UDP分布式小文件 存儲系統(tǒng)及其數(shù)據(jù)處理方法。
背景技術(shù):
在圖像索引系統(tǒng)中,需要一個龐大的圖片存儲文件系統(tǒng)。用此文件系統(tǒng)來對圖 像索引系統(tǒng)中處理的圖片文件存儲,并能高速的實時性對圖片文件進(jìn)行讀寫操作。由于 圖片的特殊性,并不需要對文件進(jìn)行修改操作,只需要對文件系統(tǒng)進(jìn)行添加與刪除操作 即可。目前的分布式文件存儲大都是采用TCP的方式進(jìn)行網(wǎng)絡(luò)訪問。但是由于用戶數(shù) 量的不斷攀升,即使對訪問量大的應(yīng)用實現(xiàn)了可擴(kuò)展、高可靠的集群部署,仍然有訪問 慢的問題。為了提高并發(fā)速度與實時性問題,會有很多人希望能在UDP協(xié)議上進(jìn)行大型應(yīng) 用程序的構(gòu)建。然而UDP協(xié)議本身存在著不通信不可靠的缺點(diǎn),于是對于基于UDP進(jìn) 行可靠通信的協(xié)議修改工作。目前在網(wǎng)絡(luò)上有許多人正做著這一工作,UDT、RakNet, eNet等都是構(gòu)建在UDP之后網(wǎng)絡(luò)可靠通信開發(fā)庫。然后這些庫開發(fā)時都針對了一些特殊 應(yīng)用來進(jìn)行設(shè)計的,不具備通用性。比如RakNet是為游戲應(yīng)用而設(shè)計,對于實時性等游 戲相關(guān)的網(wǎng)絡(luò)需求有很好的支持,對于大批量數(shù)據(jù)傳輸卻有點(diǎn)力所不及。而UDT基于一 種基于帶寬速率控制的擁塞控制算法進(jìn)行設(shè)計,主要用在小數(shù)量的bulk源共享富裕帶寬 的情況下,最典型的例子就是建立在光纖廣域網(wǎng)上的網(wǎng)格計算。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)之不足,提供一種基于UDP分布式小文件存 儲系統(tǒng)及其數(shù)據(jù)處理方法,利用對外服務(wù)器來接收用戶的讀寫要求,封裝對內(nèi)部存儲操 作,利用全局命名服務(wù)器來對新增文件進(jìn)行內(nèi)部唯一命名,利用信息索引庫服務(wù)器來登 記每個內(nèi)部文件名所對應(yīng)的存儲器,利用任務(wù)管理服務(wù)器來執(zhí)行對存儲器的讀寫管理操 作,利用存儲服務(wù)器來存放文件內(nèi)容,利用UDP改裝協(xié)議,來做為內(nèi)部服務(wù)器的通信 協(xié)議,以提高整個平臺的并發(fā)能力與高速I/O能力,解決了大容量存儲和負(fù)載均衡的問 題,特別適合以文件為載體的在線服務(wù)。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種基于UDP分布式小文件存儲 系統(tǒng),包括一個或多個第一服務(wù)器,該第一服務(wù)器內(nèi)包含有一個對外服務(wù)器和一個用來管 理對外服務(wù)器的運(yùn)行與停止、以及定時對對外服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù)器;該對 外服務(wù)器,對外負(fù)責(zé)向其它系統(tǒng)及用戶提供管理控制其文件和目錄的接口,對內(nèi)負(fù)責(zé)向 其它服務(wù)器傳送用戶的命令,并檢查命令執(zhí)行狀態(tài),最后將命令執(zhí)行結(jié)果反饋給用戶;—個第二服務(wù)器,該第二服務(wù)器內(nèi)包含有一個全局命名服務(wù)器和一個用來管理 全局命名服務(wù)器的運(yùn)行與停止、以及定時對全局命名服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù)器;該全局命名服務(wù)器設(shè)在客戶應(yīng)用和文件系統(tǒng)之間的一個邏輯層中,該全局命名服務(wù) 器為每個新添加的文件分配一個唯一的內(nèi)部名稱;一個第三服務(wù)器,該第三服務(wù)器內(nèi)包含有一個信息索引庫服務(wù)器和一個用來管 理信息索引庫服務(wù)器的運(yùn)行與停止、以及定時對信息索引庫服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控 服務(wù)器;該信息索引庫服務(wù)器與全局命名服務(wù)器一起組成位于客戶應(yīng)用和文件系統(tǒng)之間 一個邏輯層,該信息索引庫服務(wù)器采用NoSQL數(shù)據(jù)庫,用來保存全局名稱與文件存儲的 對應(yīng)Kye-Vahie數(shù)據(jù)、全局名稱與用戶路徑的對應(yīng)數(shù)據(jù);一個第四服務(wù)器,該第四服務(wù)器內(nèi)包含有一個任務(wù)管理服務(wù)器和一個用來管理 任務(wù)管理服務(wù)器的運(yùn)行與停止、以及定時對任務(wù)管理服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù) 器;該任務(wù)管理服務(wù)器設(shè)為系統(tǒng)的控制中心,負(fù)責(zé)識別并解決任何容量問題,運(yùn)行存 儲服務(wù)器負(fù)載平衡,優(yōu)化存儲服務(wù)器的使用,負(fù)責(zé)與對外服務(wù)器合作進(jìn)行增加/刪除文 件;一個或多個第五服務(wù)器,該第五服務(wù)器內(nèi)包含有一個存儲服務(wù)器和一個用來管 理存儲服務(wù)器的運(yùn)行與停止、以及定時對存儲服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù)器;該存 儲服務(wù)器按照對外服務(wù)器與任務(wù)管理服務(wù)器的指令進(jìn)行文件寫入與讀出;該第一服務(wù)器、第二服務(wù)器、第三服務(wù)器、第四服務(wù)器和第五服務(wù)器的相互之 間是通過用戶數(shù)據(jù)包協(xié)議來實現(xiàn)數(shù)據(jù)的相互傳遞和處理。所述的用戶數(shù)據(jù)包協(xié)議為UDP改裝協(xié)議,該UDP改裝協(xié)議具有如下協(xié)議格 式2位head 表示消息開始;6位版本號表示該UDP改裝協(xié)議的版本;8位命令號表示此消息包含的命令;16位生存時間表示此消息所保留的時間,如果超時,此消息會被丟棄,會由 發(fā)送端重發(fā)一次此消息;32位序列號表示此消息的編號,由系統(tǒng)隨機(jī)生成,用來確認(rèn)消息的成功發(fā)送 與接收對應(yīng);16位子命令與16位序列號由應(yīng)用程序自己指定,用來進(jìn)一步明確消息包含內(nèi) 容;數(shù)據(jù)表示消息內(nèi)容;16位數(shù)據(jù)大小發(fā)送數(shù)據(jù)的大小為子命令、子序列號與數(shù)據(jù)的總和,用來檢查 數(shù)據(jù)傳送過程的完整; 5位key 表示所使用的加密類型;1位ack 代表是否需要接收方進(jìn)行返回確認(rèn)包;2位tail 表示消息到此結(jié)束。所述的UDP改裝協(xié)議,包括如下處理流程由發(fā)送消息模塊負(fù)責(zé)將m_SendPaCket_LiSt需要發(fā)送包隊列緩存中的消息包發(fā)送 出去,并判斷是否超時,一旦超時,會將數(shù)據(jù)進(jìn)行重發(fā);由接收消息模塊負(fù)責(zé)接收消息包,并進(jìn)行判斷包的首尾標(biāo)志與數(shù)據(jù)長度是否一 致,并把符合條件的消息包放入需要接收包隊列緩存中,提供給消息處理模塊處理;由消息處理模塊對消息包進(jìn)行處理,并將需要發(fā)送的消息包放入m_SendPaCket_ List需要發(fā)送包隊列緩存中。所述的發(fā)送消息模塊的發(fā)送數(shù)據(jù)包過程,包括如下步驟al.從m_SendPacket_List需要發(fā)送包隊列緩存中按順序取出消息包;a2.查詢該消息包的屬性,判斷該消息包是否已發(fā)送過;判斷為是時,繼續(xù)下一 步驟,判斷為否時轉(zhuǎn)步驟a5;a3.判斷該消息包是否超時重發(fā);判斷為是時,繼續(xù)下一步驟,判斷為否時則返 回步驟al ;a4.判斷該消息包是否重發(fā)超過3次;判斷為是時,返回步驟al,判斷為否時繼
續(xù)下一步驟;a5.調(diào)用標(biāo)準(zhǔn)UDP SocketAPI發(fā)送出該消息包;a6.查詢該消息包的消息屬性,判斷是否需要對方進(jìn)行確認(rèn)包,判斷為是時,返 回步驟al,判斷為否時,將該消息包從m_SendPaCket_LiSt需要發(fā)送包隊列緩存中刪除。所述的接收消息模塊的接收數(shù)據(jù)包過程,包括如下步驟bl.調(diào)用標(biāo)準(zhǔn)UDP SocketAPI從網(wǎng)卡上接收新的消息數(shù)據(jù);b2.對消息數(shù)據(jù)包進(jìn)行驗證,判斷是否有新消息;判斷為是時,繼續(xù)下一步驟, 判斷為否時返回步驟bl ;b3.對該消息數(shù)據(jù)包的首尾標(biāo)志進(jìn)行判斷,判斷首尾標(biāo)志與數(shù)據(jù)長度是否一致; 判斷為是時,繼續(xù)下一步驟,判斷為否時則返回步驟bl ;b4.將該消息數(shù)據(jù)包放入m_ReCVPaCket_LiSt需要接收包隊列緩存中,交給消息處
理模塊處理。所述的消息處理模塊的處理數(shù)據(jù)包過程,包括如下步驟cl. Wm_RecvPacket_List需要接收包隊列緩存中按順序取出消息包,并將m_ RecvPacket_List需要接收包隊列緩存中刪除該消息包;c2.判斷該消息包否已加密;判斷為是時,繼續(xù)下一步驟,判斷為否時轉(zhuǎn)步驟 c4 ;c3.對該消息包進(jìn)行解密處理;C4.判斷該消息包是否為確認(rèn)包;判斷為是時,繼續(xù)下一步驟,判斷為否時轉(zhuǎn)步 驟Cl ;c5. Wm_SendPacket_LiSt需要發(fā)送包隊列緩存中將確認(rèn)包所對應(yīng)發(fā)送包刪除,而
后返回步驟Cl ;C6.按系統(tǒng)命令執(zhí)行,而后返回步驟Cl。一種基于UDP分布式小文件存儲系統(tǒng)的數(shù)據(jù)處理方法,包括接受系統(tǒng)外部的用戶的訪問請求,將用戶的指定數(shù)據(jù)文件從系統(tǒng)中讀取出來的 處理步驟;接受系統(tǒng)外部的用戶的寫入請求,將用戶的指定數(shù)據(jù)文件寫入系統(tǒng)中的處理步 驟;系統(tǒng)在讀取指定數(shù)據(jù)文件錯誤時,系統(tǒng)進(jìn)行自動恢復(fù)的處理步驟;
系統(tǒng)在擴(kuò)充存儲空間時,系統(tǒng)主動進(jìn)行負(fù)載均衡的處理步驟;系統(tǒng)對數(shù)據(jù)文件進(jìn)行定期自檢的處理步驟。所述的接受系統(tǒng)外部的用戶的訪問請求,將用戶的指定數(shù)據(jù)文件從系統(tǒng)中讀取 出來的處理步驟,包括dl.系統(tǒng)的對外服務(wù)器得到來自其它系統(tǒng)或用戶的訪問請求后,獲取請求中的其 它系統(tǒng)或用戶的唯一標(biāo)志字串與所需要訪問的文件路徑,并將該標(biāo)志字串與文件路徑發(fā) 送到系統(tǒng)的信息索引庫服務(wù)器中;d2.系統(tǒng)的信息索引庫服務(wù)器根據(jù)內(nèi)部唯一名稱查詢得到所述訪問請求對應(yīng)文件 所存儲的存儲服務(wù)器的地址,并將此消息返回給對外服務(wù)器;d3.對外服務(wù)器得到文件對應(yīng)的存儲服務(wù)器的地址編號與內(nèi)部名稱、MD5,向系 統(tǒng)的存儲服務(wù)器發(fā)出請求,發(fā)送內(nèi)部名稱與MD5;d4.存儲服務(wù)器接收到對外服務(wù)器的請求后,進(jìn)行讀取相應(yīng)的文件內(nèi)容,并計算 出MD5進(jìn)行校驗,如果校驗通過,存儲服務(wù)器向?qū)ν夥?wù)器返回文件內(nèi)容,否則返回出
曰fe息。所述的接受系統(tǒng)外部的用戶的寫入請求,將用戶的指定數(shù)據(jù)文件寫入系統(tǒng)中的 處理步驟,包括el.系統(tǒng)的對外服務(wù)器得到來自其它系統(tǒng)或用戶的訪問請求后,取得其它系統(tǒng)與 用戶的唯一標(biāo)志字串、所需要寫入的文件路徑與文件內(nèi)容,該對外服務(wù)器將標(biāo)志字串與 文件路徑發(fā)送到系統(tǒng)的全局命名服務(wù)器中;e2.全局命名服務(wù)器收到對外服務(wù)器的請求之后,根據(jù)標(biāo)志字串與文件路徑等參 數(shù),生成一個唯一的內(nèi)部名稱,發(fā)回給對外服務(wù)器;e3.對外服務(wù)器將取到的內(nèi)部名稱、標(biāo)志字串、文件路徑與文件內(nèi)容,發(fā)送到系 統(tǒng)的任務(wù)管理服務(wù)器,由任務(wù)管理服務(wù)器執(zhí)行寫入文件操作;e4.任務(wù)管理服務(wù)器收到寫入文件請求之后,確定要存儲數(shù)據(jù)文件的存儲服務(wù) 器;e5.存儲服務(wù)器收到任務(wù)管理服務(wù)器的寫入命令后,將文件內(nèi)容寫入存儲服務(wù)器 中,寫入完成后,進(jìn)行MD5檢驗,若檢驗正確,存儲服務(wù)器向任務(wù)管理服務(wù)器返回成 功消息,若檢驗不正確,返回步驟e4由任務(wù)管理服務(wù)器重新確定一個分配存儲服務(wù)器寫 入;e6.任務(wù)管理服務(wù)器收到存儲服務(wù)器成功寫入的返回消息后,任務(wù)管理服務(wù)器向 信息索引庫服務(wù)器寫入索引信息;e7.信息索引庫服務(wù)器向任務(wù)管理服務(wù)器返回寫入成功與否的消息,如果失敗, 由任務(wù)管理服務(wù)器向信息索引庫服務(wù)器重新發(fā)送一次寫入索引信息的命令;e8.任務(wù)管理服務(wù)器向?qū)ν夥?wù)器返回寫入成功與否的消息,對外服務(wù)器收到信 息后,向外部系統(tǒng)或用戶返回狀態(tài)消息。所述的系統(tǒng)在讀取指定數(shù)據(jù)文件錯誤時,系統(tǒng)進(jìn)行自動恢復(fù)的處理步驟,包 括fl.系統(tǒng)的對外服務(wù)器收到從系統(tǒng)的存儲服務(wù)器讀取文件時返回的錯誤編碼時, 向系統(tǒng)的任務(wù)管理服務(wù)器提交文件相應(yīng)的內(nèi)部名稱與存儲服務(wù)器地址;
β.任務(wù)管理服務(wù)器得到對外服務(wù)器的自動恢復(fù)消息,向系統(tǒng)的信息索引庫服務(wù) 器發(fā)送內(nèi)部名稱,取得要訪問的三個存儲服務(wù)器地址;β.信息索引庫服務(wù)器得到任務(wù)管理服務(wù)器發(fā)來的內(nèi)部名稱,查詢到相應(yīng)的三個 存儲服務(wù)器地址,并將三個存儲服務(wù)器地址信息發(fā)回到任務(wù)管理服務(wù)器中;f4.任務(wù)管理服務(wù)器將三個存儲服務(wù)器地址、MD5與內(nèi)部名稱發(fā)送到報錯的存儲 服務(wù)器上,讓它自行恢復(fù);β.存儲服務(wù)器收到任務(wù)管理服務(wù)器的恢復(fù)命令后,向其它二個存儲服務(wù)器讀取 內(nèi)部名稱的文件內(nèi)容,并進(jìn)行MD5檢驗,檢驗通過后,刪除本地內(nèi)部名稱的文件內(nèi)容, 用新的文件內(nèi)容替代,完成操作后,存儲服務(wù)器向任務(wù)管理服務(wù)器發(fā)送操作狀態(tài)。所述的系統(tǒng)在擴(kuò)充存儲空間時,系統(tǒng)主動進(jìn)行負(fù)載均衡的處理步驟,包括gl.系統(tǒng)的各個存儲服務(wù)器會定期給任務(wù)管理服務(wù)器發(fā)送自身容量消息,包含剩 余空間與剩余空間所占的百分比;g2.任務(wù)管理服務(wù)器進(jìn)行比較,當(dāng)發(fā)現(xiàn)有兩個存儲服務(wù)器的剩余空間所占的百分 比相差超過預(yù)先確定的閾值時,任務(wù)管理服務(wù)器向剩余空間所占的百分比較高的一個存 儲服務(wù)器發(fā)送負(fù)載均衡命令;該負(fù)載均衡命令中包含剩余空間所占的百分比較低的另一 個存儲服務(wù)器地址;g3.剩余空間所占的百分比較高的存儲服務(wù)器向剩余空間所占的百分比較低的存 儲服務(wù)器發(fā)送讀取隨機(jī)文件命令;g4.剩余空間所占的百分比較低的存儲服務(wù)器向剩余空間所占的百分比較高的存 儲服務(wù)器發(fā)送隨機(jī)文件內(nèi)容、內(nèi)部名稱與相應(yīng)MD5值;g5.剩余空間所占的百分比較高的存儲服務(wù)器保存從剩余空間所占的百分比較低 的存儲服務(wù)器得到的文件內(nèi)容、內(nèi)部名稱與相應(yīng)MD5值,并將文件寫入存儲設(shè)備中,通 過MD5檢驗之后,向任務(wù)管理服務(wù)器發(fā)送完成命令,包含剩余空間所占的百分比較低的 存儲服務(wù)器地址、內(nèi)部名稱與相應(yīng)MD5值;g6.任務(wù)管理服務(wù)器得到剩余空間所占的百分比較高的存儲服務(wù)器的反饋消息, 向信息索引庫服務(wù)器提交更改命令,包含剩余空間所占的百分比較高的存儲服務(wù)器地 址、剩余空間所占的百分比較低的存儲服務(wù)器地址、內(nèi)部名稱與相應(yīng)MD5值;g7.信息索引庫服務(wù)器得到任務(wù)管理服務(wù)器的更改命令時,將內(nèi)部名稱中關(guān)于存 儲服務(wù)器地址中的剩余空間所占的百分比較低的存儲服務(wù)器改為剩余空間所占的百分比 較高的存儲服務(wù)器,并MD5確認(rèn);更新完成后返回狀態(tài)給任務(wù)管理服務(wù)器;g8.任務(wù)管理服務(wù)器得到信息索引庫服務(wù)器的確認(rèn)之后,向剩余空間所占的百分 比較低的存儲服務(wù)器發(fā)送刪除給定內(nèi)部名稱的文件內(nèi)容;g9.剩余空間所占的百分比較低的存儲服務(wù)器刪除完成后,向任務(wù)管理服務(wù)器返 回狀態(tài)。所述的系統(tǒng)對數(shù)據(jù)文件進(jìn)行定期自檢的處理步驟,包括hi.系統(tǒng)的存儲服務(wù)器會定期把存儲服務(wù)器上的內(nèi)部名稱分批發(fā)送到任務(wù)管理服 務(wù)器上;h2.任務(wù)管理服務(wù)器收到存儲服務(wù)器提交上來的內(nèi)部名稱與存儲服務(wù)器地址后, 進(jìn)行轉(zhuǎn)發(fā)到信息索引庫服務(wù)器上查詢;
h3.信息索引庫服務(wù)器進(jìn)行查詢確認(rèn),并把確認(rèn)的結(jié)果返回給任務(wù)管理服務(wù)器;h4.任務(wù)管理服務(wù)器確認(rèn)該內(nèi)部名稱在信息索引庫服務(wù)器的查詢結(jié)果,如果并無 此記錄,則任務(wù)管理服務(wù)器向存儲服務(wù)器下達(dá)刪除此內(nèi)部名稱及文件內(nèi)容的指令;如果 有此記錄,任務(wù)管理服務(wù)器向存儲服務(wù)器下達(dá)查詢成功的指令。本發(fā)明的有益效果是,由于采用了一個或多個第一服務(wù)器、一個第二服務(wù)器、 一個第三服務(wù)器、一個第四服務(wù)器和一個或多個第五服務(wù)器來構(gòu)成基于UDP分布式小文 件存儲系統(tǒng),且第一服務(wù)器內(nèi)包含有一個對外服務(wù)器和一個服務(wù)監(jiān)控服務(wù)器,第二服務(wù) 器內(nèi)包含有一個全局命名服務(wù)器和一個服務(wù)監(jiān)控服務(wù)器,第三服務(wù)器內(nèi)包含有一個信息 索引庫服務(wù)器和一個服務(wù)監(jiān)控服務(wù)器,第四服務(wù)器內(nèi)包含有一個任務(wù)管理服務(wù)器和一個 服務(wù)監(jiān)控服務(wù)器,第五服務(wù)器內(nèi)包含有一個存儲服務(wù)器和一個服務(wù)監(jiān)控服務(wù)器;第一服 務(wù)器、第二服務(wù)器、第三服務(wù)器、第四服務(wù)器和第五服務(wù)器的相互之間是通過UDP改裝 協(xié)議來實現(xiàn)數(shù)據(jù)的相互傳遞和處理;該系統(tǒng)是通過對外服務(wù)器向用戶與其它系統(tǒng)提供服 務(wù),采用UDP改裝協(xié)議,做為內(nèi)部服務(wù)器的通信協(xié)議,以提高整個平臺的并發(fā)能力與高 速I/O能力;采用對外服務(wù)器來接收用戶的讀寫要求,封裝對內(nèi)部存儲操作,對用戶而 言是透明;全局命名服務(wù)器對新增文件進(jìn)行內(nèi)部唯一命名,信息索引庫服務(wù)器里登記每 個內(nèi)部文件名所對應(yīng)的存儲器,任務(wù)管理服務(wù)器執(zhí)行對存儲器的讀寫管理操作,存儲服 務(wù)器存放文件內(nèi)容;該系統(tǒng)在對外服務(wù)器上提供了 API訪問方法,能為其它系統(tǒng)及用戶 提供高效、快速的訪問接口,使用戶與系統(tǒng)能透明方便的使用與管理此海量、穩(wěn)定、便 捷分布式小文件存儲系統(tǒng);解決了大容量存儲和負(fù)載均衡的問題,特別適合以文件為載 體的在線服務(wù)。以下結(jié)合附圖及實施例對本發(fā)明作進(jìn)一步詳細(xì)說明;但本發(fā)明的一種基于UDP 分布式小文件存儲系統(tǒng)及其數(shù)據(jù)處理方法不局限于實施例。
圖1是本發(fā)明的系統(tǒng)框架圖2是改裝前后UDP協(xié)議棧應(yīng)用圖3是改裝后UDP協(xié)議-QDP格式圖4是QDP協(xié)議工作流程示意圖5是QDP協(xié)議發(fā)送消息模塊流程示意圖6是QDP協(xié)議接收消息模塊流程示意圖7是QDP協(xié)議消息處理模塊流程示意圖8是本發(fā)明方法的數(shù)據(jù)文件讀取流程示意圖9是本發(fā)明方法的數(shù)據(jù)文件寫入流程示意圖10是本發(fā)明方法的數(shù)據(jù)文件出錯恢復(fù)流程示意圖11是本發(fā)明方法的增加新存儲服務(wù)器負(fù)載勻衡流程示意圖
圖12是本發(fā)明方法的數(shù)據(jù)文件自檢流程示意圖。
具體實施例方式
實施例,請參見圖1所示,本發(fā)明的一種基于UDP分布式小文件存儲系統(tǒng),包括二個第一服務(wù)器,該第一服務(wù)器內(nèi)包含有一個對外服務(wù)器和一個用來管理對外 服務(wù)器的運(yùn)行與停止、以及定時對對外服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù)器;該對外服務(wù) 器,對外負(fù)責(zé)向其它系統(tǒng)及用戶提供管理控制其文件和目錄的接口,對內(nèi)負(fù)責(zé)向其它服 務(wù)器傳送用戶的命令,并檢查命令執(zhí)行狀態(tài),最后將命令執(zhí)行結(jié)果反饋給用戶;當(dāng)然, 第一服務(wù)器也可以選擇采用一個或二個以上,根據(jù)需要進(jìn)行設(shè)置;一個第二服務(wù)器,該第二服務(wù)器內(nèi)包含有一個全局命名服務(wù)器和一個用來管理 全局命名服務(wù)器的運(yùn)行與停止、以及定時對全局命名服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù) 器;該全局命名服務(wù)器設(shè)在客戶應(yīng)用和文件系統(tǒng)之間的一個邏輯層中,該全局命名服務(wù) 器為每個新添加的文件分配一個唯一的內(nèi)部名稱;一個第三服務(wù)器,該第三服務(wù)器內(nèi)包含有一個信息索引庫服務(wù)器和一個用來管 理信息索引庫服務(wù)器的運(yùn)行與停止、以及定時對信息索引庫服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控 服務(wù)器;該信息索引庫服務(wù)器與全局命名服務(wù)器一起組成位于客戶應(yīng)用和文件系統(tǒng)之間 一個邏輯層,該信息索引庫服務(wù)器采用NoSQL數(shù)據(jù)庫,用來保存全局名稱與文件存儲的 對應(yīng)Kye-Vahie數(shù)據(jù)、全局名稱與用戶路徑的對應(yīng)數(shù)據(jù);信息索引庫服務(wù)器對于文件存 儲的作用就好像是DNS對于網(wǎng)絡(luò)的作用一樣;一個第四服務(wù)器,該第四服務(wù)器內(nèi)包含有一個任務(wù)管理服務(wù)器和一個用來管理 任務(wù)管理服務(wù)器的運(yùn)行與停止、以及定時對任務(wù)管理服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù) 器;該任務(wù)管理服務(wù)器設(shè)為系統(tǒng)的控制中心,負(fù)責(zé)識別并解決任何容量問題,運(yùn)行存 儲服務(wù)器負(fù)載平衡,優(yōu)化存儲服務(wù)器的使用,負(fù)責(zé)與對外服務(wù)器合作進(jìn)行增加/刪除文 件;二個第五服務(wù)器,該第五服務(wù)器內(nèi)包含有一個存儲服務(wù)器和一個用來管理存儲 服務(wù)器的運(yùn)行與停止、以及定時對存儲服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù)器;該存儲服務(wù) 器按照對外服務(wù)器與任務(wù)管理服務(wù)器的指令進(jìn)行文件寫入與讀出;當(dāng)然,第五服務(wù)器也 可以選擇采用一個或二個以上,根據(jù)需要進(jìn)行設(shè)置;第一服務(wù)器、第二服務(wù)器、第三服務(wù)器、第四服務(wù)器和第五服務(wù)器中均有選用 服務(wù)監(jiān)控服務(wù)器,該服務(wù)監(jiān)控服務(wù)器負(fù)責(zé)管理其它服務(wù)器的運(yùn)行與停止,并可以定時對 所管理的其它服務(wù)器進(jìn)行檢查,如果所管理的其它服務(wù)器出錯時,可由它對所管理的其 它服務(wù)器進(jìn)行重啟,也可對自身與所管理的其它服務(wù)器進(jìn)行定期重啟,及自動更新操 作;該第一服務(wù)器、第二服務(wù)器、第三服務(wù)器、第四服務(wù)器和第五服務(wù)器的相互之 間是通過用戶數(shù)據(jù)包協(xié)議來實現(xiàn)數(shù)據(jù)的相互傳遞和處理。本發(fā)明的系統(tǒng)提供多個對外服務(wù)器的用戶訪問入口點(diǎn),以及對內(nèi)部的文件存儲 管理,解決了大容量存儲和負(fù)載均衡的問題,特別適合以文件為載體的在線服務(wù)。在對 外服務(wù)器中提供完整的API操作接口,可以方便與第三方軟件相合,以擴(kuò)展第三方軟件 的文件存儲應(yīng)用;同時,系統(tǒng)可以在文件數(shù)據(jù)量的增長時,進(jìn)行順滑擴(kuò)展。所述的用戶數(shù)據(jù)包協(xié)議為UDP改裝協(xié)議。本發(fā)明為了系統(tǒng)高速通信的需要對UDP協(xié)議進(jìn)行改造,我們將改裝后的UDP協(xié) 議稱為QDP (Quick UDP)。UDP是User Datagram Protocol的簡稱,中文名是用戶數(shù)據(jù)包協(xié)議,是OSI參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳 送服務(wù)。UDP特性有以下幾個方面(I)UDP是一個無連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳 送時就簡單地去抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送端, UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計算機(jī)的能力和傳輸帶寬的限 制;在接收端,UDP把每個消息段放在隊列中,應(yīng)用程序每次從隊列中讀一個消息段;(2)由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護(hù)連接狀態(tài),包括收發(fā)狀態(tài) 等,因此一臺服務(wù)機(jī)可同時向多個客戶機(jī)傳輸相同的消息。(3) UDP信息包的標(biāo)題很短,只有8個字節(jié),相對于TCP的20個字節(jié)信息包的 額外開銷很??;(4)吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶 寬、源端和終端主機(jī)性能的限制;(5)UDP使用盡最大努力交付,即不保證可靠交付,因此主機(jī)不需要維持復(fù)雜的 鏈接狀態(tài)表(這里面有許多參數(shù));(6)UDP是面向報文的。發(fā)送方的UDP對應(yīng)用程序交下來的報文,在添加首部 后就向下交付給IP層。既不拆分,也不合并,而是保留這些報文的邊界,因此,應(yīng)用程 序需要選擇合適的報文大小。由于UDP所具有以上的特性,所以在高速的IO數(shù)據(jù)通信方面,具有較強(qiáng)的優(yōu) 勢。然而UDP也有一些弱點(diǎn)。與TCP不同,UDP協(xié)議并不提供數(shù)據(jù)傳送的保證機(jī)制。如果在從發(fā)送方到接收 方的傳遞過程中出現(xiàn)數(shù)據(jù)報的丟失,協(xié)議本身并不能做出任何檢測或提示。因此,通常 人們把UDP協(xié)議稱為不可靠的傳輸協(xié)議。相對于TCP協(xié)議,UDP協(xié)議的另外一個不同之處在于如何接收突法性的多個數(shù) 據(jù)報。不同于TCP,UDP并不能確保數(shù)據(jù)的發(fā)送和接收順序。例如,一個位于客戶端 的應(yīng)用程序向服務(wù)器發(fā)出了以下4個數(shù)據(jù)報。DlD22D333D4444但是UDP有可能按照以下順序?qū)⑺邮盏臄?shù)據(jù)提交到服務(wù)端的應(yīng)用D333DlD4444D22為了避免UDP的弱點(diǎn),本發(fā)明在正常的UDP協(xié)議通信中增加一個確認(rèn),就可 以對消息進(jìn)行有限的保護(hù)以防丟失。在一個正常的對話中,NCPA發(fā)送數(shù)據(jù)消息<data, m>,并等待來自NCPB的確認(rèn)消息<ack>。當(dāng)接到這個確認(rèn)消息時,NCPA關(guān)閉對話。 NCPB—旦接收到這一消息<data,m>,就把m傳送到b,并用<ack>消息進(jìn)行應(yīng)答,然
14后關(guān)閉。NCPA 發(fā)送 <data,m> ;NCPB接收<data,m>,傳送 m,發(fā)送 <ack>,關(guān)閉;NCPA接收<ack>,通知關(guān)閉。如果在某段時間后,NCPA沒有接到確認(rèn)應(yīng)答,數(shù)據(jù)丟失的可能性迫使NCPA再 次發(fā)送數(shù)據(jù)<data,m>。(由于缺乏全局狀態(tài)知識,在接收<data,m>和發(fā)送<ack>之 間,NCPA不能觀測到是否<data,m>已丟失、<ack>已丟失或NCP B機(jī)器已關(guān)閉。) 因此,NCPA在有限時間內(nèi),等侯接收確認(rèn)消息,如果不能接收到這一消息,則計時器斷 定時間用完,就會產(chǎn)生超時(timeout)信息。顯而易見,這種選擇重傳消息的機(jī)制仍然有 丟失的可能性。情形如下NCPA 發(fā)送 <data,ml> ;NCPB 接收 <data,ml>,傳送 ml,發(fā)送 <ack>,關(guān)閉;NCPA 超時,發(fā)送 <data,ml> ;NCPB 接收 <data,m>,傳送 ml,發(fā)送 <ack>,關(guān)閉;NCPA接收<ack>,通知關(guān)閉;NCPA 發(fā)送 <data,m2> ;DN<data, m2> 丟失;NCPA 接收 <ack> (Step 2),通知關(guān)閉。這樣會使m2消息沒有被成功發(fā)送。為了確認(rèn)消息的成功發(fā)送與接收對應(yīng)。在 協(xié)議中添加一個序列號,可避免以前對話的信息傳送。NCPA 發(fā)送〈data, ml, x> ;NCPB 接收 <data,ml, x>,傳送 ml,發(fā)送 <ack,x>,關(guān)閉;NCPA 接收 <ack,x>,通知關(guān)閉。QDP主要的目標(biāo)就是在UDP層之上實現(xiàn)以上的協(xié)議算法,使得應(yīng)用程序能夠在 UDP層之上獲得通用、可靠、高效的通信能力。QDP提供的用于開發(fā)的應(yīng)用程序接口與 SocketAPI非常相像,姑且稱之為QDP SocketAPI,基本上的函數(shù)名與參數(shù)等都與Socket API相一致,但是QDP Socket API的API接口都位于命名空間QDP當(dāng)中。QDP協(xié)議棧
應(yīng)用如圖2所示。參見圖3所示,所述UDP改裝協(xié)議即QDP具有如下協(xié)議格式2位head 表示消息開始;6位版本號表示該QDP的版本,為以后可能QDP協(xié)議升級留下空間;8位命令號表示此消息包含的命令;16位生存時間表示此消息所保留的時間,如果超時,此消息會被丟棄,會由 發(fā)送端重發(fā)一次此消息;32位序列號表示此消息的編號,由系統(tǒng)隨機(jī)生成,用來確認(rèn)消息的成功發(fā)送 與接收對應(yīng);16位子命令與16位序列號由應(yīng)用程序自己指定,用來進(jìn)一步明確消息包含內(nèi) 容;數(shù)據(jù)表示消息內(nèi)容;
16位數(shù)據(jù)大小發(fā)送數(shù)據(jù)的大小為子命令、子序列號與數(shù)據(jù)的總和,用來檢查 數(shù)據(jù)傳送過程的完整;5位key 表示所使用的加密類型;1位ack 代表是否需要接收方進(jìn)行返回確認(rèn)包;2位tail 表示消息到此結(jié)束。參見圖4所示,所述的UDP改裝協(xié)議即QDP協(xié)議,包括如下處理流程由發(fā)送消息模塊負(fù)責(zé)將m_SendPaCket_LiSt需要發(fā)送包隊列緩存中的消息包發(fā)送 出去,并判斷是否超時,一旦超時,會將數(shù)據(jù)進(jìn)行重發(fā);由接收消息模塊負(fù)責(zé)接收消息包,并進(jìn)行判斷包的首尾標(biāo)志與數(shù)據(jù)長度是否一 致,并把符合條件的消息包放入需要接收包隊列緩存中,提供給消 息處理模塊處理;由消息處理模塊對消息包進(jìn)行處理,并將需要發(fā)送的消息包放入m_SendPaCket_ List需要發(fā)送包隊列緩存中;消息處理模塊是協(xié)議中主要處理流程,可以創(chuàng)建多個實 例,以提高消息包并發(fā)處理速度,主動確認(rèn)返回消息包,并主動將其對應(yīng)的消息包從m_ SendPacket_List 隊列中消除。參見圖5所示,所述的發(fā)送消息模塊的發(fā)送數(shù)據(jù)包過程,包括如下步驟al.從m_SendPacket_List需要發(fā)送包隊列緩存中按順序取出消息包;如圖5框 501所示的步驟;a2.查詢該消息包的屬性,判斷該消息包是否已發(fā)送過;判斷為是時,繼續(xù)下一 步驟,判斷為否時轉(zhuǎn)步驟a5;如圖5框502所示的步驟;a3.判斷該消息包是否超時重發(fā);判斷為是時,繼續(xù)下一步驟,判斷為否時則返 回步驟al ;如圖5框503所示的步驟;a4.判斷該消息包是否重發(fā)超過3次;判斷為是時,返回步驟al,判斷為否時繼 續(xù)下一步驟;如圖5框504所示的步驟;a5.調(diào)用標(biāo)準(zhǔn)UDP SocketAPI發(fā)送出該消息包;如圖5框505所示的步驟;a6.查詢該消息包的消息屬性,判斷是否需要對方進(jìn)行確認(rèn)包,判斷為是時,返 回步驟al,判斷為否時,將該消息包從m_SendPaCket_LiSt需要發(fā)送包隊列緩存中刪除; 如圖5框506所示的步驟。參見圖6所示,所述的接收消息模塊的接收數(shù)據(jù)包過程,包括如下步驟bl.調(diào)用標(biāo)準(zhǔn)UDP SocketAPI從網(wǎng)卡上接收新的消息數(shù)據(jù);如圖6框601所示的
步驟;b2.對消息數(shù)據(jù)包進(jìn)行驗證,判斷是否有新消息;判斷為是時,繼續(xù)下一步驟, 判斷為否時返回步驟bl ;如圖6框602所示的步驟;b3.對該消息數(shù)據(jù)包的首尾標(biāo)志進(jìn)行判斷,判斷首尾標(biāo)志與數(shù)據(jù)長度是否一致; 判斷為是時,繼續(xù)下一步驟,判斷為否時則返回步驟bl ;如圖6框603所示的步驟;b4.將該消息數(shù)據(jù)包放入m_ReCVPaCket_LiSt需要接收包隊列緩存中,交給消息處 理模塊處理;如圖6框604所示的步驟。參見圖7所示,所述的消息處理模塊的處理數(shù)據(jù)包過程,包括如下步驟cl. Wm_RecvPacket_List需要接收包隊列緩存中按順序取出消息包,并將m_RecvPacket_List需要接收包隊列緩存中刪除該消息包;如圖7框701所示的步驟;
c2.判斷該消息包否已加密;判斷為是時,繼續(xù)下一步驟,判斷為否時轉(zhuǎn)步驟 c4 ;如圖7框702所示的步驟; C3.對該消息包進(jìn)行解密處理;如圖7框703所示的步驟;c4.判斷該消息包是否為確認(rèn)包;判斷為是時,繼續(xù)下一步驟,判斷為否時轉(zhuǎn)步 驟Cl ;如圖7框704所示的步驟;c5. Wm_SendPacket_LiSt需要發(fā)送包隊列緩存中將確認(rèn)包所對應(yīng)發(fā)送包刪除,而
后返回步驟Cl ;如圖7框705所示的步驟;c6.按系統(tǒng)命令執(zhí)行,而后返回步驟Cl ;如圖7框706所示的步驟。在本發(fā)明中,配備大容量的存儲設(shè)備,需要對這些設(shè)備進(jìn)行管理,同時還要為 其它系統(tǒng)與用戶提供良好的文件存儲服務(wù)。本發(fā)明將系統(tǒng)中所有的存儲設(shè)備整合起來, 建立一個統(tǒng)一的名字空間(各個服務(wù)器的IP地址與目錄組織),在集成的個個存儲服務(wù)的 目錄結(jié)構(gòu)是一致,其它系統(tǒng)與用戶可以以透明的方式通過對外服務(wù)器訪問其文件。本發(fā)明的一種基于UDP分布式小文件存儲系統(tǒng)的數(shù)據(jù)處理方法,包括接受系統(tǒng)外部的用戶的訪問請求,將用戶的指定數(shù)據(jù)文件從系統(tǒng)中讀取出來的 處理步驟;接受系統(tǒng)外部的用戶的寫入請求,將用戶的指定數(shù)據(jù)文件寫入系統(tǒng)中的處理步 驟;系統(tǒng)在讀取指定數(shù)據(jù)文件錯誤時,系統(tǒng)進(jìn)行自動恢復(fù)的處理步驟;系統(tǒng)在擴(kuò)充存儲空間時,系統(tǒng)主動進(jìn)行負(fù)載均衡的處理步驟;系統(tǒng)對數(shù)據(jù)文件進(jìn)行定期自檢的處理步驟。參見圖8所示,所述的接受系統(tǒng)外部的用戶的訪問請求,將用戶的指定數(shù)據(jù)文 件從系統(tǒng)中讀取出來的處理步驟,包括dl.系統(tǒng)的對外服務(wù)器得到來自其它系統(tǒng)或用戶的訪問請求后,獲取請求中的其 它系統(tǒng)或用戶的唯一標(biāo)志字串與所需要訪問的文件路徑,并將該標(biāo)志字串與文件路徑發(fā) 送到系統(tǒng)的信息索引庫服務(wù)器中,查詢所對應(yīng)的內(nèi)部唯一名稱;如圖8所示的步驟8.1;其中信息索引庫服務(wù)器中的外部映射數(shù)據(jù)采用如下的結(jié)構(gòu)形式
權(quán)利要求
1.一種基于UDP分布式小文件存儲系統(tǒng),其特征在于包括一個或多個第一服務(wù)器,該第一服務(wù)器內(nèi)包含有一個對外服務(wù)器和一個用來管理對 外服務(wù)器的運(yùn)行與停止、以及定時對對外服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù)器;該對外服 務(wù)器,對外負(fù)責(zé)向其它系統(tǒng)及用戶提供管理控制其文件和目錄的接口,對內(nèi)負(fù)責(zé)向其它 服務(wù)器傳送用戶的命令,并檢查命令執(zhí)行狀態(tài),最后將命令執(zhí)行結(jié)果反饋給用戶;一個第二服務(wù)器,該第二服務(wù)器內(nèi)包含有一個全局命名服務(wù)器和一個用來管理全局 命名服務(wù)器的運(yùn)行與停止、以及定時對全局命名服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù)器;該 全局命名服務(wù)器設(shè)在客戶應(yīng)用和文件系統(tǒng)之間的一個邏輯層中,該全局命名服務(wù)器為每 個新添加的文件分配一個唯一的內(nèi)部名稱;一個第三服務(wù)器,該第三服務(wù)器內(nèi)包含有一個信息索引庫服務(wù)器和一個用來管理信 息索引庫服務(wù)器的運(yùn)行與停止、以及定時對信息索引庫服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù) 器;該信息索引庫服務(wù)器與全局命名服務(wù)器一起組成位于客戶應(yīng)用和文件系統(tǒng)之間一個 邏輯層,該信息索引庫服務(wù)器采用NoSQL數(shù)據(jù)庫,用來保存全局名稱與文件存儲的對應(yīng) Kye-Vahie數(shù)據(jù)、全局名稱與用戶路徑的對應(yīng)數(shù)據(jù);一個第四服務(wù)器,該第四服務(wù)器內(nèi)包含有一個任務(wù)管理服務(wù)器和一個用來管理任務(wù) 管理服務(wù)器的運(yùn)行與停止、以及定時對任務(wù)管理服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù)器;該 任務(wù)管理服務(wù)器設(shè)為系統(tǒng)的控制中心,負(fù)責(zé)識別并解決任何容量問題,運(yùn)行存儲服務(wù)器 負(fù)載平衡,優(yōu)化存儲服務(wù)器的使用,負(fù)責(zé)與對外服務(wù)器合作進(jìn)行增加/刪除文件;一個或多個第五服務(wù)器,該第五服務(wù)器內(nèi)包含有一個存儲服務(wù)器和一個用來管理存 儲服務(wù)器的運(yùn)行與停止、以及定時對存儲服務(wù)器進(jìn)行檢查的服務(wù)監(jiān)控服務(wù)器;該存儲服 務(wù)器按照對外服務(wù)器與任務(wù)管理服務(wù)器的指令進(jìn)行文件寫入與讀出;該第一服務(wù)器、第二服務(wù)器、第三服務(wù)器、第四服務(wù)器和第五服務(wù)器的相互之間是 通過用戶數(shù)據(jù)包協(xié)議來實現(xiàn)數(shù)據(jù)的相互傳遞和處理。
2.根據(jù)權(quán)利要求1所述的基于UDP分布式小文件存儲系統(tǒng),其特征在于所述的用 戶數(shù)據(jù)包協(xié)議為UDP改裝協(xié)議,該UDP改裝協(xié)議具有如下協(xié)議格式2位head:表示消息開始; 6位版本號表示該UDP改裝協(xié)議的版本; 8位命令號表示此消息包含的命令;16位生存時間表示此消息所保留的時間,如果超時,此消息會被丟棄,會由發(fā)送 端重發(fā)一次此消息;32位序列號表示此消息的編號,由系統(tǒng)隨機(jī)生成,用來確認(rèn)消息的成功發(fā)送與接 收對應(yīng);16位子命令與16位序列號由應(yīng)用程序自己指定,用來進(jìn)一步明確消息包含內(nèi)容;數(shù)據(jù)表示消息內(nèi)容;16位數(shù)據(jù)大小發(fā)送數(shù)據(jù)的大小為子命令、子序列號與數(shù)據(jù)的總和,用來檢查數(shù)據(jù) 傳送過程的完整;5位key 表示所使用的加密類型; 1位ack:代表是否需要接收方進(jìn)行返回確認(rèn)包;2位tail:表示消息到此結(jié)束。
3.根據(jù)權(quán)利要求2所述的基于UDP分布式小文件存儲系統(tǒng),其特征在于所述的 UDP改裝協(xié)議,包括如下處理流程由發(fā)送消息模塊負(fù)責(zé)需要發(fā)送包隊列緩存中的消息包發(fā)送出 去,并判斷是否超時,一旦超時,會將數(shù)據(jù)進(jìn)行重發(fā);由接收消息模塊負(fù)責(zé)接收消息包,并進(jìn)行判斷包的首尾標(biāo)志與數(shù)據(jù)長度是否一致, 并把符合條件的消息包放入到m_ReCVPaCket_LiSt需要接收包隊列緩存中,提供給消息處 理模塊處理;由消息處理模塊對消息包進(jìn)行處理,并將需要發(fā)送的消息包放入m_SendPaCket_LiSt 需要發(fā)送包隊列緩存中。
4.根據(jù)權(quán)利要求3所述的基于UDP分布式小文件存儲系統(tǒng),其特征在于所述的發(fā) 送消息模塊的發(fā)送數(shù)據(jù)包過程,包括如下步驟al. Wm_SendPacket_LiSt需要發(fā)送包隊列緩存中按順序取出消息包; a2.查詢該消息包的屬性,判斷該消息包是否已發(fā)送過;判斷為是時,繼續(xù)下一步 驟,判斷為否時轉(zhuǎn)步驟a5;a3.判斷該消息包是否超時重發(fā);判斷為是時,繼續(xù)下一步驟,判斷為否時則返回步 驟al ;a4.判斷該消息包是否重發(fā)超過3次;判斷為是時,返回步驟al,判斷為否時繼續(xù)下一步驟;a5.調(diào)用標(biāo)準(zhǔn)UDP SocketAPI發(fā)送出該消息包;a6.查詢該消息包的消息屬性,判斷是否需要對方進(jìn)行確認(rèn)包,判斷為是時,返回步 驟al,判斷為否時,將該消息包從m_SendPaCket_LiSt需要發(fā)送包隊列緩存中刪除。
5.根據(jù)權(quán)利要求3所述的基于UDP分布式小文件存儲系統(tǒng),其特征在于所述的接 收消息模塊的接收數(shù)據(jù)包過程,包括如下步驟bl.調(diào)用標(biāo)準(zhǔn)UDP SocketAPI從網(wǎng)卡上接收新的消息數(shù)據(jù);b2.對消息數(shù)據(jù)包進(jìn)行驗證,判斷是否有新消息;判斷為是時,繼續(xù)下一步驟,判斷 為否時返回步驟bl ;b3.對該消息數(shù)據(jù)包的首尾標(biāo)志進(jìn)行判斷,判斷首尾標(biāo)志與數(shù)據(jù)長度是否一致;判斷 為是時,繼續(xù)下一步驟,判斷為否時則返回步驟bl ;b4.將該消息數(shù)據(jù)包放入m_ReCVPacket_LiSt需要接收包隊列緩存中,交給消息處理模 塊處理。
6.根據(jù)權(quán)利要求3所述的基于UDP分布式小文件存儲系統(tǒng),其特征在于所述的消 息處理模塊的處理數(shù)據(jù)包過程,包括如下步驟cl.從m_RecvPacket_List需要接收包隊列緩存中按順序取出消息包,并將m_ RecvPacket_List需要接收包隊列緩存中刪除該消息包;C2.判斷該消息包否已加密;判斷為是時,繼續(xù)下一步驟,判斷為否時轉(zhuǎn)步驟c4; c3.對該消息包進(jìn)行解密處理;c4.判斷該消息包是否為確認(rèn)包;判斷為是時,繼續(xù)下一步驟,判斷為否時轉(zhuǎn)步驟Cl ;c5.從m_SendPaCket_LiSt需要發(fā)送包隊列緩存中將確認(rèn)包所對應(yīng)發(fā)送包刪除,而后返 回步驟Cl ;c6.按系統(tǒng)命令執(zhí)行,而后返回步驟Cl。
7.一種基于UDP分布式小文件存儲系統(tǒng)的數(shù)據(jù)處理方法,包括接受系統(tǒng)外部的用戶的訪問請求,將用戶的指定數(shù)據(jù)文件從系統(tǒng)中讀取出來的處理 步驟;接受系統(tǒng)外部的用戶的寫入請求,將用戶的指定數(shù)據(jù)文件寫入系統(tǒng)中的處理步驟; 系統(tǒng)在讀取指定數(shù)據(jù)文件錯誤時,系統(tǒng)進(jìn)行自動恢復(fù)的處理步驟; 系統(tǒng)在擴(kuò)充存儲空間時,系統(tǒng)主動進(jìn)行負(fù)載均衡的處理步驟; 系統(tǒng)對數(shù)據(jù)文件進(jìn)行定期自檢的處理步驟。
8.根據(jù)權(quán)利要求7所述的基于UDP分布式小文件存儲系統(tǒng),其特征在于所述的接 受系統(tǒng)外部的用戶的訪問請求,將用戶的指定數(shù)據(jù)文件從系統(tǒng)中讀取出來的處理步驟, 包括dl.系統(tǒng)的對外服務(wù)器得到來自其它系統(tǒng)或用戶的訪問請求后,獲取請求中的其它系 統(tǒng)或用戶的唯一標(biāo)志字串與所需要訪問的文件路徑,并將該標(biāo)志字串與文件路徑發(fā)送到 系統(tǒng)的信息索引庫服務(wù)器中;d2.系統(tǒng)的信息索引庫服務(wù)器根據(jù)內(nèi)部唯一名稱查詢得到所述訪問請求對應(yīng)文件所存 儲的存儲服務(wù)器的地址,并將此消息返回給對外服務(wù)器;d3.對外服務(wù)器得到文件對應(yīng)的存儲服務(wù)器的地址編號與內(nèi)部名稱、MD5,向系統(tǒng)的 存儲服務(wù)器發(fā)出請求,發(fā)送內(nèi)部名稱與MD5;d4.存儲服務(wù)器接收到對外服務(wù)器的請求后,進(jìn)行讀取相應(yīng)的文件內(nèi)容,并計算出 MD5進(jìn)行校驗,如果校驗通過,存儲服務(wù)器向?qū)ν夥?wù)器返回文件內(nèi)容,否則返回出錯 fn息ο
9.根據(jù)權(quán)利要求7所述的基于UDP分布式小文件存儲系統(tǒng),其特征在于所述的接 受系統(tǒng)外部的用戶的寫入請求,將用戶的指定數(shù)據(jù)文件寫入系統(tǒng)中的處理步驟,包括el.系統(tǒng)的對外服務(wù)器得到來自其它系統(tǒng)或用戶的訪問請求后,取得其它系統(tǒng)與用戶 的唯一標(biāo)志字串、所需要寫入的文件路徑與文件內(nèi)容,該對外服務(wù)器將標(biāo)志字串與文件 路徑發(fā)送到系統(tǒng)的全局命名服務(wù)器中;e2.全局命名服務(wù)器收到對外服務(wù)器的請求之后,根據(jù)標(biāo)志字串與文件路徑等參數(shù), 生成一個唯一的內(nèi)部名稱,發(fā)回給對外服務(wù)器;e3.對外服務(wù)器將取到的內(nèi)部名稱、標(biāo)志字串、文件路徑與文件內(nèi)容,發(fā)送到系統(tǒng)的 任務(wù)管理服務(wù)器,由任務(wù)管理服務(wù)器執(zhí)行寫入文件操作;e4.任務(wù)管理服務(wù)器收到寫入文件請求之后,確定要存儲數(shù)據(jù)文件的存儲服務(wù)器; e5.存儲服務(wù)器收到任務(wù)管理服務(wù)器的寫入命令后,將文件內(nèi)容寫入存儲服務(wù)器中, 寫入完成后,進(jìn)行MD5檢驗,若檢驗正確,存儲服務(wù)器向任務(wù)管理服務(wù)器返回成功消 息,若檢驗不正確,返回步驟e4由任務(wù)管理服務(wù)器重新確定一個分配存儲服務(wù)器寫入;e6.任務(wù)管理服務(wù)器收到存儲服務(wù)器成功寫入的返回消息后,任務(wù)管理服務(wù)器向信息 索引庫服務(wù)器寫入索引信息;e7.信息索引庫服務(wù)器向任務(wù)管理服務(wù)器返回寫入成功與否的消息,如果失敗,由任務(wù)管理服務(wù)器向信息索引庫服務(wù)器重新發(fā)送一次寫入索引信息的命令;e8.任務(wù)管理服務(wù)器向?qū)ν夥?wù)器返回寫入成功與否的消息,對外服務(wù)器收到信息 后,向外部系統(tǒng)或用戶返回狀態(tài)消息。
10.根據(jù)權(quán)利要求7所述的基于UDP分布式小文件存儲系統(tǒng),其特征在于所述的系 統(tǒng)在讀取指定數(shù)據(jù)文件錯誤時,系統(tǒng)進(jìn)行自動恢復(fù)的處理步驟,包括fl.系統(tǒng)的對外服務(wù)器收到從系統(tǒng)的存儲服務(wù)器讀取文件時返回的錯誤編碼時,向系 統(tǒng)的任務(wù)管理服務(wù)器提交文件相應(yīng)的內(nèi)部名稱與存儲服務(wù)器地址;f2.任務(wù)管理服務(wù)器得到對外服務(wù)器的自動恢復(fù)消息,向系統(tǒng)的信息索引庫服務(wù)器發(fā) 送內(nèi)部名稱,取得要訪問的三個存儲服務(wù)器地址;β.信息索引庫服務(wù)器得到任務(wù)管理服務(wù)器發(fā)來的內(nèi)部名稱,查詢到相應(yīng)的三個存儲 服務(wù)器地址,并將三個存儲服務(wù)器地址信息發(fā)回到任務(wù)管理服務(wù)器中;f4.任務(wù)管理服務(wù)器將三個存儲服務(wù)器地址、MD5與內(nèi)部名稱發(fā)送到報錯的存儲服務(wù) 器上,讓它自行恢復(fù);f5.存儲服務(wù)器收到任務(wù)管理服務(wù)器的恢復(fù)命令后,向其它二個存儲服務(wù)器讀取內(nèi)部 名稱的文件內(nèi)容,并進(jìn)行MD5檢驗,檢驗通過后,刪除本地內(nèi)部名稱的文件內(nèi)容,用新 的文件內(nèi)容替代,完成操作后,存儲服務(wù)器向任務(wù)管理服務(wù)器發(fā)送操作狀態(tài)。
11.根據(jù)權(quán)利要求7所述的基于UDP分布式小文件存儲系統(tǒng),其特征在于所述的系 統(tǒng)在擴(kuò)充存儲空間時,系統(tǒng)主動進(jìn)行負(fù)載均衡的處理步驟,包括gl.系統(tǒng)的各個存儲服務(wù)器會定期給任務(wù)管理服務(wù)器發(fā)送自身容量消息,包含剩余空 間與剩余空間所占的百分比;g2.任務(wù)管理服務(wù)器進(jìn)行比較,當(dāng)發(fā)現(xiàn)有兩個存儲服務(wù)器的剩余空間所占的百分比相 差超過預(yù)先確定的閾值時,任務(wù)管理服務(wù)器向剩余空間所占的百分比較高的一個存儲服 務(wù)器發(fā)送負(fù)載均衡命令;該負(fù)載均衡命令中包含剩余空間所占的百分比較低的另一個存 儲服務(wù)器地址;g3.剩余空間所占的百分比較高的存儲服務(wù)器向剩余空間所占的百分比較低的存儲服 務(wù)器發(fā)送讀取隨機(jī)文件命令;g4.剩余空間所占的百分比較低的存儲服務(wù)器向剩余空間所占的百分比較高的存儲服 務(wù)器發(fā)送隨機(jī)文件內(nèi)容、內(nèi)部名稱與相應(yīng)MD5值;g5.剩余空間所占的百分比較高的存儲服務(wù)器保存從剩余空間所占的百分比較低的存 儲服務(wù)器得到的文件內(nèi)容、內(nèi)部名稱與相應(yīng)MD5值,并將文件寫入存儲設(shè)備中,通過 MD5檢驗之后,向任務(wù)管理服務(wù)器發(fā)送完成命令,包含剩余空間所占的百分比較低的存 儲服務(wù)器地址、內(nèi)部名稱與相應(yīng)MD5值;g6.任務(wù)管理服務(wù)器得到剩余空間所占的百分比較高的存儲服務(wù)器的反饋消息,向信 息索引庫服務(wù)器提交更改命令,包含剩余空間所占的百分比較高的存儲服務(wù)器地址、剩 余空間所占的百分比較低的存儲服務(wù)器地址、內(nèi)部名稱與相應(yīng)MD5值;g7.信息索引庫服務(wù)器得到任務(wù)管理服務(wù)器的更改命令時,將內(nèi)部名稱中關(guān)于存儲服 務(wù)器地址中的剩余空間所占的百分比較低的存儲服務(wù)器改為剩余空間所占的百分比較高 的存儲服務(wù)器,并MD5確認(rèn);更新完成后返回狀態(tài)給任務(wù)管理服務(wù)器;g8.任務(wù)管理服務(wù)器得到信息索引庫服務(wù)器的確認(rèn)之后,向剩余空間所占的百分比較低的存儲服務(wù)器發(fā)送刪除給定內(nèi)部名稱的文件內(nèi)容;g9.剩余空間所占的百分比較低的存儲服務(wù)器刪除完成后,向任務(wù)管理服務(wù)器返回狀態(tài)。
12.根據(jù)權(quán)利要求7所述的基于UDP分布式小文件存儲系統(tǒng),其特征在于所述的系 統(tǒng)對數(shù)據(jù)文件進(jìn)行定期自檢的處理步驟,包括hi.系統(tǒng)的存儲服務(wù)器會定期把存儲服務(wù)器上的內(nèi)部名稱分批發(fā)送到任務(wù)管理服務(wù)器上;h2.任務(wù)管理服務(wù)器收到存儲服務(wù)器提交上來的內(nèi)部名稱與存儲服務(wù)器地址后,進(jìn)行 轉(zhuǎn)發(fā)到信息索引庫服務(wù)器上查詢;h3.信息索引庫服務(wù)器進(jìn)行查詢確認(rèn),并把確認(rèn)的結(jié)果返回給任務(wù)管理服務(wù)器; h4.任務(wù)管理服務(wù)器確認(rèn)該內(nèi)部名稱在信息索引庫服務(wù)器的查詢結(jié)果,如果并無此記 錄,則任務(wù)管理服務(wù)器向存儲服務(wù)器下達(dá)刪除此內(nèi)部名稱及文件內(nèi)容的指令;如果有此 記錄,任務(wù)管理服務(wù)器向存儲服務(wù)器下達(dá)查詢成功的指令。
全文摘要
本發(fā)明公開了一種基于UDP分布式小文件存儲系統(tǒng)及其數(shù)據(jù)處理方法,包括第一服務(wù)器、第二服務(wù)器、第三服務(wù)器、第四服務(wù)器和第五服務(wù)器,第一服務(wù)器含有對外服務(wù)器和服務(wù)監(jiān)控服務(wù)器,第二服務(wù)器含有全局命名服務(wù)器和服務(wù)監(jiān)控服務(wù)器,第三服務(wù)器含有信息索引庫服務(wù)器和服務(wù)監(jiān)控服務(wù)器,第四服務(wù)器含有任務(wù)管理服務(wù)器和服務(wù)監(jiān)控服務(wù)器,第五服務(wù)器含有存儲服務(wù)器和服務(wù)監(jiān)控服務(wù)器;第一服務(wù)器、第二服務(wù)器、第三服務(wù)器、第四服務(wù)器和第五服務(wù)器的相互之間是通過UDP改裝協(xié)議來實現(xiàn)數(shù)據(jù)的相互傳遞和處理。該系統(tǒng)利用UDP改裝協(xié)議,來做為內(nèi)部服務(wù)器的通信協(xié)議,可以提高整個平臺的并發(fā)能力與高速I/O能力,解決了大容量存儲和負(fù)載均衡的問題,特別適合以文件為載體的在線服務(wù)。
文檔編號H04L29/08GK102014150SQ201010296948
公開日2011年4月13日 申請日期2010年9月29日 優(yōu)先權(quán)日2010年9月29日
發(fā)明者吳世雄, 林志揚(yáng), 章正道 申請人:廈門市美亞柏科信息股份有限公司