一種數據讀取方法、裝置及分布式存儲系統與流程
2023-06-19 15:58:51 2

本發明實施例涉及計算機數據處理技術領域,尤其涉及一種數據讀取方法、裝置及分布式存儲系統。
背景技術:
分布式存儲系統是將數據按照一定規則切分並打散存儲在多臺獨立通用存儲伺服器上。在分布式存儲系統中,為了讓數據儘量均勻,通常都會講一個大文件切分成多個較小的文件進行存儲,比如一個512MB的文件切分成128個4MB的子文件,這128個子文件則按照文件映射規則寫到不同的磁碟上,這種方式顯然比寫把所有的512MB寫到相同的磁碟上要強,因為能夠避免某些磁碟在數據讀寫時成為熱點和集群性能的瓶頸。
傳統的網絡存儲系統則是採用集中的存儲伺服器存放所有數據,所以存儲伺服器成為系統性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規模存儲應用的需要,而分布式存儲系統採用可擴展的系統結構,利用多臺存儲伺服器分擔存儲負荷,利用位置伺服器定位存儲信息,不但提高了系統的可靠性、可用性和存取效率,還易於擴展。存儲集群的成千上萬臺伺服器可以將數據充分冗餘,從而可以顯著提高數據的安全性。
分布式存儲系統在數據組織上,數據的多個副本會有主副本和備副本之分,在寫入路徑上,先將主副本寫入一個存儲伺服器,其後再將多個備副本分別寫入多個存儲伺服器,備副本寫入成功之後回應主副本所在伺服器,主副本所在伺服器在收集到所有備副本所在伺服器的回應消息之後再回應用戶寫入成功。而在讀取方面,請求首先到達主副本所在伺服器,數據從磁碟上讀取之後再將數據回應給用戶。
在實現本發明實施例的過程中,發明人發現由於數據的讀取需要佔用內存、網絡、CPU、磁碟資源,如果全部都由主副本所在伺服器來負責讀取,那麼多個副本所述伺服器將出現不均衡的情況,主副本所在伺服器將會成為數據讀取的瓶頸,此時如果有數據新寫入到主副本所在伺服器中,那麼這個主副本所在伺服器將面臨更多的讀寫請求,而此時備副本所在伺服器卻並未承擔任何數據讀取的任務,最終造成了備副本所在伺服器資源的浪費和主副本所在伺服器的負載過重。
技術實現要素:
本發明實施例提供的一種數據讀取方法,可以解決現有全部由主副本所在伺服器來負責數據讀取造成的備副本所在伺服器資源的浪費和主副本所在伺服器的負載過重問題。
為此目的,本發明實施例提供了一種數據讀取方法,所述數據包括多個副本,所述多個副本分為主副本和備副本,所述多個副本分別存儲在不同的伺服器中,所述方法包括:
主副本所在伺服器接收用戶的數據讀取請求;
根據所有副本所在伺服器的負載信息,選取負載最小的副本所在伺服器;
若所述主副本所在伺服器不是負載最小的伺服器,則將所述數據讀取請求發送至負載最小的備副本所在伺服器,以使其進行數據讀取操作;
接收所述負載最小的備副本所在伺服器讀取的數據,向用戶展示。
優選的,所述方法還包括:若所述主副本所在伺服器為負載最小的伺服器,則所述主副本所在伺服器進行數據讀取操作,並將讀取的數據向用戶展示。
優選的,所述根據所有副本所在伺服器的負載信息,選取負載最小的副本所在伺服器,具體包括:
採集所有副本所在伺服器的負載信息,其中,所述所有副本所在伺服器按照預設的時間間隔上報本伺服器的負載信息;
根據所述負載信息,按照預設的轉換關係,選取負載最小的副本所在伺服器。
優選的,所述負載信息包括:預設時間內的CPU負載,剩餘內存、網絡流量和磁碟利用率。
優選的,所述轉換關係為權重關係;其中,所述預設時間內的CPU負載和剩餘內存的權重均大於所述網絡流量和磁碟利用率的權重。
由上可知,本發明實施例提供的數據讀取方法,根據所有副本所在伺服器的負載信息,通過選取負載最小的副本所在伺服器進行數據的讀取操作,而非全部由主副本所在伺服器進行數據讀取操作,因此,可以實現多個副本所在伺服器的負載均衡,提高數據讀取效率,解決現有備副本所在伺服器的資源浪費和主副本所在伺服器的負載過重問題。
另一方面,本發明實施例還提供了一種數據讀取裝置,所述數據包括多個副本,所述多個副本分為主副本和備副本,所述多個副本分別存儲在不同的伺服器中,所述裝置包括:
請求接收模塊,用於接收用戶的數據讀取請求;
副本選取模塊,用於根據所有副本所在伺服器的負載信息,選取負載最小的副本所在伺服器;
請求發送模塊,用於在主副本所在伺服器不是負載最小的伺服器時,將所述數據讀取請求發送至負載最小的備副本所在伺服器,以使其進行數據讀取操作;
數據返回模塊,用於接收所述負載最小的備副本所在伺服器讀取的數據,向用戶展示。
優選的,所述裝置還包括:數據讀取模塊,用於在所述主副本所在伺服器為負載最小的伺服器時,進行數據讀取操作,並將讀取的數據向用戶展示。
優選的,所述副本選取模塊包括:
負載信息收集單元,用於採集所有副本所在伺服器的負載信息,其中,所述所有副本所在伺服器均包括負載上報模塊,用於按照預設的時間間隔上報本伺服器的負載信息至所述負責信息收集單元;
副本選取子單元,用於根據所述負載信息,按照預設的轉換關係,選取負載最小的副本所在伺服器。
優選的,所述負載信息包括:預設時間內的CPU負載,剩餘內存、網絡流量和磁碟利用率。
優選的,所述轉換關係為權重關係;其中,所述預設時間內的CPU負載和剩餘內存的權重均大於所述網絡流量和磁碟利用率的權重。
再一方面,本發明實施例還提供了一種分布式存儲系統,包括上述任意一種所述的數據讀取裝置。
由上可知,本發明實施例提供的數據讀取裝置和分布式存儲系統,根據所有副本所在伺服器的負載信息,通過選取負載最小的副本所在伺服器進行數據的讀取操作,而非全部由主副本所在伺服器進行數據讀取操作,因此,可以實現多個副本所在伺服器的負載均衡,提高數據讀取效率,解決現有備副本所在伺服器的資源浪費和主副本所在伺服器的負載過重問題。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例提供的數據讀取方法的流程示意圖;
圖2為本發明另一實施例提供的數據讀取方法的流程示意圖;
圖3為本發明又一施例提供的數據讀取方法的流程示意圖;
圖4為本發明實施例提供的數據讀取裝置的框架示意圖;
圖5為本發明另一實施例提供的數據讀取裝置的結構示意圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
需要說明的是,在分布式存儲系統的數據組織上,數據的多個副本會有主副本和備副本之分,由於現有技術中數據的讀取都由主副本所在伺服器進行,而備副本所在伺服器並未承擔任何數據讀取的任務,從而造成了備副本所在伺服器的資源浪費和主副本所在伺服器的負載過重,基於此,本發明實施例提供的數據讀取方法,讓數據讀取任務不再全部由主副本所在伺服器進行,而是選擇一個負載最佳的副本所在伺服器進行數據讀取,從而可以避免備副本所在伺服器的資源浪費和主副本所在伺服器的負載過重。
實施例1
如圖1所示,本發明實施例提供了一種數據讀取方法,其中,所述數據包括多個副本,所述多個副本分為主副本和備副本,所述多個副本分別存儲在不同的伺服器中,所述方法包括以下步驟:
S1:主副本所在伺服器接收用戶的數據讀取請求;
其中,主副本所在伺服器負責接收用戶請求,在接收到用戶請求後,首先判斷是否為讀請求,如果是讀請求,再進行後續的步驟。
S2:根據所有副本所在伺服器的負載信息,選取負載最小的副本所在伺服器;
需要說明的是,主副本所在伺服器設有負載收集模塊,每個副本所在的伺服器(主副本所在伺服器和備副本所在伺服器)均設有負載上報模塊,負責每5秒上報本伺服器的負載信息至主副本所在伺服器的負載收集模塊,由主副本所在伺服器根據負載收集模塊收集的每個副本所在伺服器的負載信息,選取負載相對較小的副本所在伺服器,用於後續的數據讀取操作。
S3:若所述主副本所在伺服器不是負載最小的伺服器,則將所述數據讀取請求發送至負載最小的備副本所在伺服器,以使其進行數據讀取操作;
具體的,根據上述步驟S2的判斷,得知主副本所在伺服器不是負載最小的伺服器時,主副本所在伺服器將步驟S1接收的數據讀取請求發送至負載最小的備副本所在伺服器,讓備副本所在伺服器進行數據讀取操作。
S4:接收所述負載最小的備副本所在伺服器讀取的數據,向用戶展示。
具體的,在負載最小的備副本所在伺服器進行數據讀取操作後,主副本所在伺服器接收備副本所在伺服器發送的該讀取的數據,並將該讀取的數據返回給用戶。
由上可知,本發明實施例提供的數據讀取方法,根據所有副本所在伺服器的負載信息,通過選取負載最小的副本所在伺服器進行數據的讀取操作,而非全部由主副本所在伺服器進行數據讀取操作,因此,可以實現多個副本所在伺服器的負載均衡,提高數據讀取效率,解決現有備副本所在伺服器的資源浪費和主副本所在伺服器的負載過重問題。
實施例2
如圖2所示,本發明另一實施例提供了一種數據讀取方法,該方法包括以下步驟:
S1:主副本所在伺服器接收用戶的數據讀取請求;
其中,主副本所在伺服器負責接收用戶請求,在接收到用戶請求後,首先判斷是否為讀請求,如果是讀請求,再進行後續的步驟。
S2:根據所有副本所在伺服器的負載信息,選取負載最小的副本所在伺服器;
需要說明的是,主副本所在伺服器設有負載收集模塊,每個副本所在的伺服器(主副本所在伺服器和備副本所在伺服器)均設有負載上報模塊,負責每5秒上報本伺服器的負載信息至主副本所在伺服器的負載收集模塊,由主副本所在伺服器根據負載收集模塊收集的每個副本所在伺服器的負載信息,選取負載相對較小的副本所在伺服器,用於後續的數據讀取操作。
S3』:若所述主副本所在伺服器為負載最小的伺服器,則所述主副本所在伺服器進行數據讀取操作,並將讀取的數據向用戶展示。
具體的,當根據上述步驟S2的判斷,得知主副本所在伺服器就是負載最小的伺服器時,主副本所在伺服器不再將數據讀取請求發送給其他的副本所在伺服器,仍由主副本所在伺服器進行數據讀取操作,並將讀取的數據返回給用戶。
由上述可知,在主副本所在伺服器為負載最小的伺服器時,仍由主副本伺服器進行數據讀取操作,從而可以保證所有副本伺服器的負載均衡,提高數據讀取效率。
實施例3
如圖3所示,本發明又一實施例提供了一種數據讀取方法,該方法包括以下步驟:
S1:主副本所在伺服器接收用戶的數據讀取請求;
其中,主副本所在伺服器負責接收用戶請求,在接收到用戶請求後,首先判斷是否為讀請求,如果是讀請求,再進行後續的步驟。
S201:採集所有副本所在伺服器的負載信息,其中,所述所有副本所在伺服器按照預設的時間間隔上報本伺服器的負載信息;
其中,所述負載信息包括預設時間內的CPU負載,剩餘內存、網絡流量和磁碟利用率。
需要說明的是,主副本所在伺服器設有負載收集模塊,每個副本所在的伺服器(主副本所在伺服器和備副本所在伺服器)均設有負載上報模塊,負載上報模塊負責每5秒上報本伺服器的負載信息至主副本所在伺服器的負載收集模塊。其中,預設時間內的CPU負載可以是指副本所在伺服器15分鐘內的CPU負載。
S202:根據所述負載信息,按照預設的轉換關係,選取負載最小的副本所在伺服器。
具體的,主副本所在伺服器的負載收集模塊收集每個副本所在伺服器的負載信息,考慮到讀取操作消耗最高的是磁碟和CPU,較少的是內存和網絡流量,因此磁碟使用率和CPU負載的權重較高,內存和網絡流量的權重較低,主副本所在伺服器根據CPU負載、剩餘內存、網絡流量和磁碟利用率的權重關係,可以計算出負載相對較小的副本所在伺服器,用於後續的數據讀取操作。
S3:若所述主副本所在伺服器不是負載最小的伺服器,則將所述數據讀取請求發送至負載最小的備副本所在伺服器,以使其進行數據讀取操作;
S4:主副本所在伺服器接收所述負載最小的備副本所在伺服器讀取的數據,向用戶展示。
相反的,若所述主副本所在伺服器為負載最小的伺服器,則所述主副本所在伺服器進行數據讀取操作,並將讀取的數據向用戶展示。
具體的,根據上述步驟S2的判斷,得知主副本所在伺服器不是負載最小的伺服器時,主副本所在伺服器將步驟S1接收的數據讀取請求發送至負載最小的備副本所在伺服器,讓備副本所在伺服器進行數據讀取操作,在負載最小的備副本所在伺服器進行數據讀取操作後,主副本所在伺服器接收備副本所在伺服器發送的該讀取的數據,並將該讀取的數據返回給用戶。相反的,當根據上述步驟S2的判斷,得知主副本所在伺服器就是負載最小的伺服器時,主副本所在伺服器不再將數據讀取請求發送給其他的副本所在伺服器,仍由主副本所在伺服器進行數據讀取操作,並將讀取的數據返回給用戶。
由上述可知,根據CPU負載、剩餘內存、網絡流量和磁碟利用率的權重關係確定負載最小的副本所在伺服器進行數據讀取,可以準確找到負載最佳的副本所在伺服器,從而保證所有副本伺服器的負載均衡,並且進一步提高了數據讀取效率。
另一方面,如圖4所示,本發明實施例還提供一種數據讀取裝置,該裝置為上述實施例1-3中所述的主副本所在伺服器,其中,所述數據包括多個副本,所述多個副本分為主副本和備副本,所述多個副本分別存儲在不同的伺服器中,具體的,所述裝置包括:依次連接的請求接收模塊41、副本選取模塊42、請求發送模塊43和數據返回模塊44;
其中,請求接收模塊41用於接收用戶的數據讀取請求;
副本選取模塊42用於根據所有副本所在伺服器的負載信息,選取負載最小的副本所在伺服器;
請求發送模塊43用於在主副本所在伺服器不是負載最小的伺服器時,將所述數據讀取請求發送至負載最小的備副本所在伺服器,以使其進行數據讀取操作;
數據返回模塊44用於接收所述負載最小的備副本所在伺服器讀取的數據,向用戶展示。
請求接收模塊41接收用戶的數據讀取請求,副本選取模塊42根據所有副本所在伺服器的負載信息,選取負載最小的副本所在伺服器,請求發送模塊43在主副本所在伺服器不是負載最小的伺服器時,將所述數據讀取請求發送至負載最小的備副本所在伺服器,以使其進行數據讀取操作,數據返回模塊44接收所述負載最小的備副本所在伺服器讀取的數據,向用戶展示。
本發明實施例提供的數據讀取裝置,根據所有副本所在伺服器的負載信息,通過選取負載最小的副本所在伺服器進行數據的讀取操作,而非全部由主副本所在伺服器進行數據讀取操作,因此,可以實現多個副本所在伺服器的負載均衡,提高數據讀取效率,解決現有備副本所在伺服器的資源浪費和主副本所在伺服器的負載過重問題。
在上述實施例的基礎上,優選的,所述裝置還包括:數據讀取模塊,用於在所述主副本所在伺服器為負載最小的伺服器時,進行數據讀取操作,並將讀取的數據向用戶展示。
在上述實施例的基礎上,優選的,所述副本選取模塊42包括:
負載信息收集單元,用於採集所有副本所在伺服器的負載信息,其中,所述所有副本所在伺服器均包括負載上報模塊,用於按照預設的時間間隔上報本伺服器的負載信息至所述負責信息收集單元;
副本選取子單元,用於根據所述負載信息,按照預設的轉換關係,選取負載最小的副本所在伺服器。
在上述實施例的基礎上,優選的,所述負載信息包括:預設時間內的CPU負載,剩餘內存、網絡流量和磁碟利用率。
在上述實施例的基礎上,優選的,所述轉換關係為權重關係;其中,所述預設時間內的CPU負載和剩餘內存的權重均大於所述網絡流量和磁碟利用率的權重。
又一方面,本發明還提供了一種分布式存儲系統,包括上述實施例所述的任意一種數據讀取裝置。
對於與方法對應的數據讀取裝置實施例而言,由於其與方法實施例基本相似,達到的技術效果也與方法實施例起到的效果相同,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
再一方面,如圖5所示,本發明實施例還提供了一種數據讀取裝置,該裝置可以是存儲伺服器,該裝置包括處理器(processor)51、通信接口(Communications Interface)52、存儲器(memory)53和總線54,其中,處理器51,通信接口52,存儲器53通過總線354完成相互間的通信。通信接口52可以用於移動終端與外部設備之間的信息傳輸。處理器51可以調用存儲器53中的邏輯指令,以執行如下方法:接收用戶的數據讀取請求;根據所有副本所在伺服器的負載信息,選取負載最小的副本所在伺服器;若所述主副本所在伺服器不是負載最小的伺服器,則將所述數據讀取請求發送至負載最小的備副本所在伺服器,以使其進行數據讀取操作;接收所述負載最小的備副本所在伺服器讀取的數據,向用戶展示。
此外,上述的存儲器53中的邏輯指令可以通過軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬碟、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光碟等各種可以存儲程序代碼的介質。
上述實施例提供的數據讀取裝置,處理器根據所有副本所在伺服器的負載信息,通過選取負載最小的副本所在伺服器進行數據的讀取操作,而非全部由主副本所在伺服器進行數據讀取操作,因此,可以實現多個副本所在伺服器的負載均衡,提高數據讀取效率,解決現有備副本所在伺服器的資源浪費和主副本所在伺服器的負載過重問題。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性的勞動的情況下,即可以理解並實施。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可藉助軟體加必需的通用硬體平臺的方式來實現,當然也可以通過硬體。基於這樣的理解,上述技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品可以存儲在計算機可讀存儲介質中,如ROM/RAM、磁碟、光碟等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行各個實施例或者實施例的某些部分所述的方法。
最後應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的精神和範圍。