基于分布式文件的高效緩存服務器的制造方法
【專利摘要】本發(fā)明提供基于分布式文件的高效緩存服務器,用于與客戶端通信,包括輸入處理器、讀寫器、緩存監(jiān)聽器、輸出處理器;其中:輸入處理器用于接收客戶端的讀寫業(yè)務請求、客戶端的身份驗證、客戶端的請求類型,并用于將合法的請求傳遞到讀寫器處理;讀寫器用于對輸入處理器所傳遞的客戶端請求進行驗證、讀取數(shù)據(jù)輸出以及寫入數(shù)據(jù)處理;緩存監(jiān)聽器用于監(jiān)聽業(yè)務和監(jiān)聽系統(tǒng)事件;輸出處理器用于將讀寫器讀取的數(shù)據(jù)信息或?qū)憯?shù)據(jù)的返回狀態(tài)信息發(fā)送給客戶端。本發(fā)明在保障大文件數(shù)據(jù)存儲的同時,也能同樣的支持小數(shù)據(jù)的性能。
【專利說明】基于分布式文件的高效緩存服務器
【技術領域】
[0001]本發(fā)明涉及基于分布式文件的高效緩存服務器。
【背景技術】
[0002]根據(jù)did you know (http://didyouknow.0rg/)的數(shù)據(jù),目前互聯(lián)網(wǎng)上可訪問的信息數(shù)量接近I秭=1百萬億億。與目前常見的集中式存儲技術不同,分布式存儲技術并不是將數(shù)據(jù)存儲在某個或多個特定的節(jié)點上,而是通過網(wǎng)絡使用企業(yè)中的每臺機器上的磁盤空間,并將這些分散的存儲資源構成一個虛擬的存儲設備,數(shù)據(jù)分散的存儲在企業(yè)的各個角落。
[0003]目前行業(yè)內(nèi)比較主流的分布式存儲技術可以大致分為結(jié)構化數(shù)據(jù),非結(jié)構化數(shù)據(jù),半結(jié)構化數(shù)據(jù)。不論任何的分布式存儲方式,其目的都是將客戶端的數(shù)據(jù)分散保存在網(wǎng)絡中不同的存儲設備內(nèi)。要實現(xiàn)這個目標,對于網(wǎng)絡、IO的讀寫性能都有著很高的要求。近年來,以Google為代表的GFS技術以及Apache公司的HDFS技術,在分布式存儲技術方面異軍突起,為人們帶來了新的思路。
[0004]分布式文件存儲大部分都是通過將文件分塊進行存儲,將不同的文件塊存儲在不同的網(wǎng)絡設備上。當文件存入的時候,對不同設備上的塊進行寫操作;傳輸和下載數(shù)據(jù)的時候則對文件塊進行讀操作。并通過Key-Value的方式,通過內(nèi)存緩存相關數(shù)據(jù)信息。由于分布式文件存儲系統(tǒng)的特性,內(nèi)存緩存與文件IO讀寫的性能成為了至關重要的關鍵因素。
[0005]在現(xiàn)有的技術中,在單個存儲節(jié)點上,數(shù)據(jù)的讀取是通過預先讀入緩存的方式(例如GFS和HDFS等),當客戶端大量的寫入文件時候,系統(tǒng)將頻繁的對文件進行寫操作。
[0006]對于GFS和HDFS而言,高性能的處理大數(shù)據(jù)文件存儲是其特有的優(yōu)點,但是在實際運用中,小數(shù)據(jù)的存儲卻很不理想。
[0007]而NoSQL的出現(xiàn),能夠滿足小數(shù)據(jù)的存儲。但是對于動輒上G的大文件,則容易造成性能的下降,甚至一些內(nèi)存數(shù)據(jù)庫由于存儲過多大文件造成內(nèi)存不足當機。
[0008]同時對于多變的云計算的運用而言,用戶的存儲需求也是多變的,更多的時候,數(shù)據(jù)往往都是小數(shù)據(jù)與大數(shù)據(jù)的并存。面對只能為大文件提供存儲,或只能為小數(shù)據(jù)提供存儲,都是不利的,有制約的。
【發(fā)明內(nèi)容】
[0009]本發(fā)明要解決的技術問題,在于提供基于分布式文件的高效緩存服務器,解決現(xiàn)有分布式文件存儲系統(tǒng)無法同時滿足大文件存儲和大量小文件存儲的問題。
[0010]本發(fā)明是這樣實現(xiàn)的:
[0011]基于分布式文件的高效緩存服務器,用于與客戶端通信,包括輸入處理器、讀寫器、緩存監(jiān)聽器、輸出處理器;其中:
[0012]輸入處理器用于接收客戶端的讀寫業(yè)務請求、客戶端的身份驗證、客戶端的請求類型,并用于將合法的請求傳遞到讀寫器處理;[0013]讀寫器用于對輸入處理器所傳遞的客戶端請求進行驗證、讀取數(shù)據(jù)輸出以及寫入數(shù)據(jù)處理;
[0014]讀寫器包括只讀主緩存、只讀副緩存和只寫緩存;
[0015]所述的只讀主緩存用于記錄文件表內(nèi)文件塊的物理或內(nèi)存的地址位;
[0016]所述的只讀副緩存用于記錄只寫緩存未寫入物理文件且符合寫入規(guī)則的數(shù)據(jù);
[0017]所述的只寫緩存用于記錄要寫入物理文件的請求和數(shù)據(jù);
[0018]緩存監(jiān)聽器用于監(jiān)聽業(yè)務和監(jiān)聽系統(tǒng)事件;
[0019]監(jiān)聽業(yè)務具體為:實時監(jiān)測只寫緩存,對每個寫數(shù)據(jù)請求進行校驗;如果只寫緩存超過預設時間而無任何寫請求,而只寫緩存中存在數(shù)據(jù),則進行寫物理文件操作;寫操作完成后,同時修改只讀主緩存的內(nèi)存鏈址為物理文件鏈址,清理只寫緩存和只讀副緩存中的失效寫請求日志;
[0020]監(jiān)聽系統(tǒng)事件具體為:通過系統(tǒng)鉤子,監(jiān)測系統(tǒng)服務關閉、操作系統(tǒng)是否關閉本程序進程、是否關機或注銷操作;一旦發(fā)現(xiàn)這些事件,則將只寫緩存數(shù)據(jù)進行寫物理文件操作;
[0021]輸出處理器用于將讀寫器讀取的數(shù)據(jù)信息或?qū)憯?shù)據(jù)的返回狀態(tài)信息發(fā)送給客戶端。
[0022]進一步地,所述只讀主緩存的大小不超過空閑物理內(nèi)存的3/4。
[0023]進一步地,所述只讀副緩存的大小不超過64MB。
[0024]進一步地,所述只寫緩存的大小為64MB以上及512MB以下。
[0025]進一步地,所述預設時間為6秒。
[0026]本發(fā)明具有如下優(yōu)點:
[0027]1.能夠支持各種大小的海量文件存儲,并優(yōu)化了 IO的讀寫,避免了現(xiàn)有技術僅僅能支持大文件存儲或小文件存儲的單一性。
[0028]2.通過內(nèi)存緩存未寫入物理文件的數(shù)據(jù),異步延遲過于頻繁的寫操作,提升了用戶對寫操作快速,能及時讀取新數(shù)據(jù)的體驗效果。
[0029]3.適應了各領域中對文件存儲的多變需求,減少項目架構的復雜性。原有的技術中,架構一個項目,需要構建大文件存儲(HDFS、GFS等)和小數(shù)據(jù)存儲(NoSQL等)兩種不同的存儲方案。
[0030]4.文件存儲數(shù)據(jù)不存儲在內(nèi)存,內(nèi)存僅存儲鏈址,避免了因為存儲數(shù)據(jù)過大造成整個系統(tǒng)崩潰和不穩(wěn)定的風險。
【專利附圖】
【附圖說明】
[0031]下面參照附圖結(jié)合實施例對本發(fā)明作進一步的說明。
[0032]圖1為本發(fā)明的單個分布式存儲服務器的結(jié)構圖。
[0033]圖2為本發(fā)明的讀文件流程圖。
[0034]圖3為本發(fā)明的寫文件流程圖。
【具體實施方式】
[0035]請參閱圖1到圖3所示,以下將對本發(fā)明進行詳細說明。[0036]基于分布式文件的高效緩存服務器,用于與客戶端通信,包括輸入處理器、讀寫器、緩存監(jiān)聽器、輸出處理器(如圖1所示);其中:輸入處理器用于接收客戶端的讀寫業(yè)務請求、客戶端的身份驗證、客戶端的請求類型(包括讀請求和寫請求),并用于將合法的請求傳遞到讀寫器處理。
[0037]讀寫器用于對輸入處理器所傳遞的客戶端請求進行驗證、讀取數(shù)據(jù)輸出以及寫入數(shù)據(jù)處理;讀寫器包括只讀主緩存(RD1)、只讀副緩存(RD2)和只寫緩存(WL);所述的只讀主緩存用于記錄文件表內(nèi)文件塊的物理或內(nèi)存的地址位;所述的只讀副緩存用于記錄只寫緩存未寫入物理文件且符合寫入規(guī)則的數(shù)據(jù);所述的只寫緩存用于記錄要寫入物理文件的請求和數(shù)據(jù)。
[0038]緩存監(jiān)聽器用于監(jiān)聽業(yè)務和監(jiān)聽系統(tǒng)事件。監(jiān)聽業(yè)務具體為:實時監(jiān)測只寫緩存,對每個寫數(shù)據(jù)請求進行校驗;如果只寫緩存超過預設時間而無任何寫請求,而只寫緩存中存在數(shù)據(jù),則進行寫物理文件操作;寫操作完成后,同時修改只讀主緩存的內(nèi)存鏈址為物理文件鏈址,清理只寫緩存和只讀副緩存中的失效寫請求日志。其中鏈址為數(shù)據(jù)在物理文件或內(nèi)存中的存儲地址,包含開始地址和數(shù)據(jù)長度。通過鏈址,系統(tǒng)能夠方便、快速、準確的讀取文件內(nèi)容。監(jiān)聽系統(tǒng)事件具體為:通過系統(tǒng)鉤子,監(jiān)測系統(tǒng)服務關閉、操作系統(tǒng)是否關閉本程序進程、是否關機或注銷操作;一旦發(fā)現(xiàn)這些事件,則將只寫緩存數(shù)據(jù)進行寫物理文件操作。
[0039]輸出處理器用于將讀寫器讀取的數(shù)據(jù)信息或?qū)憯?shù)據(jù)的返回狀態(tài)信息發(fā)送給客戶端。
[0040]在優(yōu)選的情況下,只讀主緩存的大小不超過空閑物理內(nèi)存的3/4 ;只讀副緩存的大小不超過64MB ;只寫緩存的大小為64MB以上及512MB以下;預設時間為6秒。
[0041]本發(fā)明在與客戶端通信時,客戶端發(fā)送請求給輸入處理器,輸入處理器驗證完客戶端的身份、數(shù)據(jù)格式、包頭等信息后,將請求數(shù)據(jù)發(fā)送給讀寫器。
[0042]如果請求數(shù)據(jù)是讀取數(shù)據(jù),則如圖2所示,讀寫器將請求交給單獨子進程,通過只讀主緩存獲取物理或內(nèi)存鏈址,讀取數(shù)據(jù)內(nèi)容。并將數(shù)據(jù)內(nèi)容轉(zhuǎn)換為輸出格式后送到輸出處理器。
[0043]如果請求數(shù)據(jù)是寫入數(shù)據(jù),則如圖3所示,讀寫器將請求信息加入只寫緩存的緩存和將數(shù)據(jù)加入只讀副緩存,同時將只讀副緩存的鍵值和長度加入只讀主緩存內(nèi)。如果只寫緩存內(nèi)的數(shù)據(jù)滿64MB,讀寫器的將在完成上述操作后,將寫文件的任務交給單獨子進程進行寫入操作,寫為物理文件(即寫到物理存儲器),并對只讀主緩存的鏈址進行修改,并將只寫緩存清空,格式化只讀副緩存為當前進入的最新數(shù)據(jù),回寫只讀主緩存新數(shù)據(jù)等操作。
[0044]上述的讀寫操作結(jié)束后,讀寫器將對讀取內(nèi)容或?qū)懭虢Y(jié)果通過輸出處理器發(fā)送給客戶端。
[0045]本發(fā)明的讀寫過程為讀寫緩存分離,數(shù)據(jù)的寫入滿足寫入的規(guī)則要求后,進入緩存隊列,隊列數(shù)據(jù)滿64MB時系統(tǒng)寫入物理文件,不論大文件塊還是小文件塊,無須頻繁的寫文件,降低IO操作次數(shù),提升性能。當用戶訪問少的情況下,寫文件的緩存隊列數(shù)據(jù)不足64MB時,當延遲超過6秒,系統(tǒng)自動寫入文件,并更新物理鏈址到只讀緩存內(nèi)。則本發(fā)明在保障大文件數(shù)據(jù)同時,也能同樣的支持小數(shù)據(jù)的性能,并保障數(shù)據(jù)的實時更新,減少大量小數(shù)據(jù)和小文件對IO性能造成的損耗。[0046]雖然以上描述了本發(fā)明的【具體實施方式】,但是熟悉本【技術領域】的技術人員應當理解,我們所描述的具體的實施例只是說明性的,而不是用于對本發(fā)明的范圍的限定,熟悉本領域的技術人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應當涵蓋在本發(fā)明的權利要求所保護的范圍內(nèi)。
【權利要求】
1.基于分布式文件的高效緩存服務器,用于與客戶端通信,其特征在于:包括輸入處理器、讀寫器、緩存監(jiān)聽器、輸出處理器;其中: 輸入處理器用于接收客戶端的讀寫業(yè)務請求、客戶端的身份驗證、客戶端的請求類型,并用于將合法的請求傳遞到讀寫器處理; 讀寫器用于對輸入處理器所傳遞的客戶端請求進行驗證、讀取數(shù)據(jù)輸出以及寫入數(shù)據(jù)處理; 讀寫器包括只讀主緩存、只讀副緩存和只寫緩存; 所述的只讀主緩存用于記錄文件表內(nèi)文件塊的物理或內(nèi)存的地址位; 所述的只讀副緩存用于記錄只寫緩存未寫入物理文件且符合寫入規(guī)則的數(shù)據(jù); 所述的只寫緩存用于記錄要寫入物理文件的請求和數(shù)據(jù); 緩存監(jiān)聽器用于監(jiān)聽業(yè)務和監(jiān)聽系統(tǒng)事件; 監(jiān)聽業(yè)務具體為:實時監(jiān)測只寫緩存,對每個寫數(shù)據(jù)請求進行校驗;如果只寫緩存超過預設時間而無任何寫請求,而只寫緩存中存在數(shù)據(jù),則進行寫物理文件操作;寫操作完成后,同時修改只讀主緩存的內(nèi)存鏈址為物理文件鏈址,清理只寫緩存和只讀副緩存中的失效寫請求日志; 監(jiān)聽系統(tǒng)事件具體為:通過系統(tǒng)鉤子,監(jiān)測系統(tǒng)服務關閉、操作系統(tǒng)是否關閉本程序進程、是否關機或注銷操作;一旦發(fā)現(xiàn)這些事件,則將只寫緩存數(shù)據(jù)進行寫物理文件操作; 輸出處理器用于將讀寫器讀取的數(shù)據(jù)信息或?qū)憯?shù)據(jù)的返回狀態(tài)信息發(fā)送給客戶端。
2.根據(jù)權利要求1所述的基于分布式文件的高效緩存服務器,其特征在于:所述只讀主緩存的大小不超過空閑物理內(nèi)存的3/4。
3.根據(jù)權利要求1所述的基于分布式文件的高效緩存服務器,其特征在于:所述只讀副緩存的大小不超過64MB。
4.根據(jù)權利要求1所述的基于分布式文件的高效緩存服務器,其特征在于:所述只寫緩存的大小為64MB以上及512MB以下。
5.根據(jù)權利要求1所述的基于分布式文件的高效緩存服務器,其特征在于:所述預設時間為6秒。
【文檔編號】G06F17/30GK103744975SQ201410013966
【公開日】2014年4月23日 申請日期:2014年1月13日 優(yōu)先權日:2014年1月13日
【發(fā)明者】丁萬年, 洪文潔, 陳日良, 姜士鎰 申請人:銳達互動科技股份有限公司