數據讀寫方法及分布式存儲系統的制作方法【
技術領域:
】[0001]本申請涉及計算機領域,具體涉及分布式
技術領域:
,尤其涉及數據讀寫方法及分布式存儲系統。【
背景技術:
】[0002]目前,對于網絡中的海量數據,通常采用分布式存儲系統對海量數據進行存儲。在已知的分布式存儲系統中,通常采用sstable文件對數據進行存儲,對數據的讀取則通過在所有sstable文件中進行二分查找實現。當采用上述分布式存儲系統對數據進行存儲時,一方面,由于sstable文件中數據是有序排列的,因此需要頻繁的對各個sstable文件做歸并排序,對于很大的數據長度(例如單條數據長度在IMB以上),在完全隨機讀取以及高吞吐的情形下,sstable文件合并過程所消耗的資源量大,從而造成系統瓶頸。另一方面,sstable文件在通常以3副本形式存儲數據,存儲成本較大。【
發明內容】[0003]本申請提供了數據讀寫方法及分布式存儲系統,用于解決上述【
背景技術:
】部分存在的技術問題。[0004]第一方面,本申請提供了數據讀寫方法,該方法包括:分片服務器接收客戶端發送的對分片數據的包含分片數據的數據標識的處理請求,所述處理請求包括:寫入請求、讀取請求;基于預先加載在內存中的指示分片數據的數據標識與數據索引的對應關系的哈希表,對處理請求進行處理,得到處理結果,數據索引包括所述分片數據在分布式文件系統中的存儲位置;將處理結果發送至客戶端。[0005]第二方面,本申請提供了數據讀寫方法,該方法包括:接收客戶端發送的查詢請求,查詢請求包括待處理的分片數據對應的數據標識;基于數據標識對應的哈希值所處的哈希值區間,確定用于對待處理的分片數據進行處理的分片服務器,以使客戶端可向分片服務器發送對分片數據的處理請求對待處理的分片數據進行處理,其中,每一個分片服務器預先對應多個哈希值區間。[0006]第三方面,本申請提供了數據讀寫方法,該方法包括:接收對分片數據的處理指令,向主控服務器發送查詢請求,查詢請求包括分片數據的數據標識;向分片服務器發送對分片數據的處理請求,分片服務器為經由主控服務器基于分片數據的數據標識而確定的分片服務器;接收分片服務器返回的對處理請求進行處理之后得到的處理結果。[0007]第四方面,本申請提供了分布式存儲系統,該系統包括:客戶端,配置用于接收對分片數據的處理指令,向主控服務器發送查詢請求,查詢請求包括所述分片數據的數據標識;向分片服務器發送對分片數據的處理請求,分片服務器為經由主控服務器基于分片數據的數據標識而確定的分片服務器;接收分片服務器返回的對處理請求進行處理之后得到的處理結果;主控服務器,配置用于基于配置用于接收客戶端發送的查詢請求,查詢請求包括待處理的分片數據對應的數據標識;基于數據標識對應的哈希值所處的哈希值區間,確定用于對待處理的分片數據進行處理的分片服務器,以使客戶端可向分片服務器發送對分片數據的處理請求對待處理的分片數據進行處理,其中,每一個分片服務器預先對應多個哈希值區間;分片服務器,配置用于接收客戶端發送的對分片數據的包含分片數據的數據標識的處理請求,處理請求包括:寫入請求、讀取請求;基于預先加載在內存中的指示分片數據的數據標識與數據索引的對應關系的哈希表,對處理請求進行處理,得到處理結果,數據索引包括分片數據在分布式文件系統中的存儲位置;將處理結果發送至客戶端。[0008]本申請提供的數據讀寫方法及分布式存儲系統,通過分片服務器接收客戶端發送的對分片數據的包含分片數據的數據標識的處理請求;基于預先加載在內存中的指示分片數據的數據標識與數據索引的對應關系的哈希表,對處理請求進行處理,得到處理結果;將處理結果發送至客戶端。實現了通過加載在內存中的哈希表完成對數據的讀寫,使得對分片數據讀取請求進行處理的時間接近于一次分布式文件系統的隨機讀請求的時間,從而最大限度的接近分布式文件系統的極限性能。相較于現有技術的sstable文件以二分查找的方式查找分片數據,節省了大量歸并查找的時間。同時,對分片數據的寫入請求的處理的耗時接近于分布式文件系統對索引和數據文件以追加寫方式進行寫入所消耗的時間,從而提升分布式存儲系統的性能。【附圖說明】[0009]通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優點將會變得更明顯:[0010]圖1示出了適用于本申請的數據讀寫方法的一個系統架構示意圖;[0011]圖2示出了根據本申請的數據讀寫方法的一個實施例的流程圖;[0012]圖3示出了適用于本申請的數據讀寫方法的另一個系統架構示意圖;[0013]圖4其示出了對分片數據進行讀寫的原理示意圖;[0014]圖5示出了根據本申請的數據讀寫方法的另一個實施例的流程圖;[0015]圖6示出了根據本申請的數據讀寫方法的再一個實施例的流程圖;[0016]圖7示出了根據本申請的分布式存儲系統的一個實施例的結構示意圖;[0017]圖8其示出了適于用來實現本申請實施例的終端設備或主機的計算機系統800的結構示意圖。【具體實施方式】[0018]下面結合附圖和實施例對本申請作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋相關發明,而非對該發明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關發明相關的部分。[0019]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結合實施例來詳細說明本申請。[0020]請參考圖1,適用于本申請的數據讀寫方法的一個系統架構示意圖。在圖1中,示出了客戶端101、主控服務器102(也可稱之為Master服務器),分片服務器103(也可稱之為UnitServer服務器)、分布式文件系統104。主控服務器101可以與多個分片服務器102連接。主控服務器102可以用于接收客戶端101的查詢請求,確定用于處理對分片數據的處理請求(例如寫入請求、讀取請求)的分片服務器103。分片服務器103可以用于接收客戶端101發送的處理請求,對處理請求進行處理。例如,將分片數據寫入分布式文件系統104中或從分布式文件系統104中讀取分片數據。[0021]請參考圖2,其示出了根據本申請的數據讀寫方法的一個實施例的流程200。本實施例所提供的數據讀寫方法可由分片服務器執行。該方法包括以下步驟:[0022]步驟201,分片服務器接收客戶端發送的對分片數據的包含分片數據的數據標識的處理請求。[0023]在本實施例中,處理請求包括:寫入請求、讀取請求。在本實施例中,對數據的寫入和讀取可以以分片數據為單位。例如,在將一本詞典對應的數據寫入分布式文件系統中時,可以將字典對應的數據劃分為多份數據,將每一份數據稱之為分片數據。在將分片數據存儲在分布式文件系統后,可以以分片數據為單元對分片數據進行讀取。在實施例中,分片數據可以預先對應一個數據標識(也可稱之為Key)。[0024]步驟202,基于預先加載在內存中的指示分片數據的數據標識與數據索引的對應關系的哈希表,對處理請求進行處理,得到處理結果。[0025]在本實施例中,數據索引包括分片數據在分布式文件系統中的存儲位置。可以預先在分片服務器的內存中加載指示分片數據的數據標識與數據索引對應關系的哈希表。分片數據的數據標識與數據索引可以采用以下方式建立對應關系:數據標識經由哈希函數經計算后可以對應于一個哈希值,然后在哈希表中與該哈希值對應的位置上存儲數據標識對應的數據索引。[0026]在本實施例中,可以基于預先在分片服務器的內存中加載指示分片數據的數據標識與數據索引對應關系的哈希表,對接收到的處理請求進行處理。例如,當處理請求為對分片數據的讀取請求時,可以根據分片數據的數據標識,在哈希中查找出該分片數據的數據索引。當處理請求為對分片數據的寫入請求時,可以將分片數據寫入分布式文件系統后得到分布式文件系統返回的數據索引,同時,可以對分片數據的標識進行哈希函數計算后得到哈希值,然后將數據索弓I存儲在哈希表中與該哈希值對應的位置上。此時,存儲在分布式文件系統中的分片數據可以稱之為Value,從而實現了以Key-Value形式對分片數據的存儲,可以將由主控服務器、分片服務器、分布式文件系統構成的系統稱之為分布式存儲系統。[0027]在本實施例中,由于將所有的分片數據的數據索引存儲在哈希表中,使得數據索引全量加載在內存中,從而使得對分片數據的讀取請求(也可稱之為查詢請求)的處理時間接近于一次分布式文件系統的隨機讀請求的處理時間,從而最大限度的接近分布式文件系統的極限性能。相較于現有技術的sstable文件以二分查找的方式查找分片數據,節省了大量歸并查找的時間。同時,對分片數據的寫入請求的處理的耗時接近于分布式文件系統對索引和當前第1頁1 2 3 4 5