本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種讀取位置獲取方法及裝置、計(jì)算機(jī)裝置、可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
隨著虛擬化技術(shù)的發(fā)展,不僅服務(wù)器資源的復(fù)用率得到了很大提升,而且存儲(chǔ)資源的復(fù)用率也得到了很大提升。
在物理機(jī)時(shí)代,購(gòu)買一個(gè)存儲(chǔ)介質(zhì),往往只供有限的幾個(gè)應(yīng)用使用,且煙囪式的數(shù)據(jù)中心結(jié)構(gòu)非常盛行。而隨著虛擬化技術(shù)的發(fā)展,由于一個(gè)存儲(chǔ)系統(tǒng)上面可以存儲(chǔ)成百上千的虛擬機(jī)(vm),從而使得一個(gè)存儲(chǔ)介質(zhì)的存儲(chǔ)密度得到了很大的提升。然而,存儲(chǔ)介質(zhì)的存儲(chǔ)密度在得到提升的同時(shí),也會(huì)引發(fā)另一個(gè)問題,即存儲(chǔ)局部資源的爭(zhēng)搶問題,例如,在某一個(gè)時(shí)段,當(dāng)多個(gè)虛擬機(jī)同時(shí)進(jìn)行讀寫io操作時(shí),由于多個(gè)虛擬機(jī)io的數(shù)據(jù)剛好保存在同一塊物理硬盤上面,則此時(shí)多個(gè)虛擬機(jī)會(huì)爭(zhēng)搶這同一塊物理硬盤的io性能,而若這塊硬盤的io性能成為瓶頸,則會(huì)產(chǎn)生局部資源的爭(zhēng)搶問題,尤其是在高密度的虛擬化環(huán)境中,這個(gè)問題更為凸顯。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種讀取位置獲取方法及裝置、計(jì)算機(jī)裝置、可讀存儲(chǔ)介質(zhì),用于避開局部資源的爭(zhēng)搶,自動(dòng)調(diào)整讀取位置。
有鑒于此,本發(fā)明第一方面提供一種讀取位置獲取方法,應(yīng)用于存儲(chǔ)客戶端,可包括:
接收讀取數(shù)據(jù)的請(qǐng)求,請(qǐng)求包括待讀取數(shù)據(jù)的相關(guān)參數(shù);
根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息,n為不小于2的整數(shù);
根據(jù)負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置。
進(jìn)一步的,根據(jù)負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)包括:
根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io等待隊(duì)列的長(zhǎng)度;
根據(jù)io等待隊(duì)列的長(zhǎng)度,從n個(gè)第一存儲(chǔ)介質(zhì)中確定io等待隊(duì)列的長(zhǎng)度最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
進(jìn)一步的,根據(jù)負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)包括:
根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io延時(shí);
根據(jù)io延時(shí),從n個(gè)第一存儲(chǔ)介質(zhì)中確定io延時(shí)最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
進(jìn)一步的,在根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息之前,該方法還包括:
接收存儲(chǔ)服務(wù)端反饋的第二存儲(chǔ)介質(zhì)的負(fù)載信息,第二存儲(chǔ)介質(zhì)由存儲(chǔ)服務(wù)端控制,存儲(chǔ)服務(wù)端和存儲(chǔ)客戶端運(yùn)行于相同或不同的節(jié)點(diǎn);
根據(jù)第二存儲(chǔ)介質(zhì)的負(fù)載信息建立存儲(chǔ)介質(zhì)負(fù)載表;
根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息包括:
根據(jù)相關(guān)參數(shù),從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
進(jìn)一步的,根據(jù)相關(guān)參數(shù),從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息包括:
根據(jù)相關(guān)參數(shù),按照預(yù)設(shè)的尋址方法確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的位置信息;
根據(jù)位置信息從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
進(jìn)一步的,第一存儲(chǔ)介質(zhì)和第二存儲(chǔ)介質(zhì)中存儲(chǔ)有相同副本。
本發(fā)明第二方面提供一種讀取位置獲取裝置,應(yīng)用于存儲(chǔ)客戶端,可包括:
第一接收單元,用于接收讀取數(shù)據(jù)的請(qǐng)求,請(qǐng)求包括待讀取數(shù)據(jù)的相關(guān)參數(shù);
獲取單元,用于根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息,n為不小于2的整數(shù);
確定單元,用于根據(jù)負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置。
進(jìn)一步的,確定單元,具體用于:
根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io等待隊(duì)列的長(zhǎng)度;
根據(jù)io等待隊(duì)列的長(zhǎng)度,從n個(gè)第一存儲(chǔ)介質(zhì)中確定io等待隊(duì)列的長(zhǎng)度最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
進(jìn)一步的,確定單元,具體用于:
根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io延時(shí);
根據(jù)io延時(shí),從n個(gè)第一存儲(chǔ)介質(zhì)中確定io延時(shí)最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
進(jìn)一步的,裝置還包括:
第二接收單元,用于接收存儲(chǔ)服務(wù)端反饋的第二存儲(chǔ)介質(zhì)的負(fù)載信息,第二存儲(chǔ)介質(zhì)由存儲(chǔ)服務(wù)端控制,存儲(chǔ)服務(wù)端和存儲(chǔ)客戶端運(yùn)行于相同或不同的節(jié)點(diǎn);
建立單元,用于根據(jù)第二存儲(chǔ)介質(zhì)的負(fù)載信息建立存儲(chǔ)介質(zhì)負(fù)載表;
獲取單元,具體用于:
根據(jù)相關(guān)參數(shù),從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
進(jìn)一步的,獲取單元,具體用于:
根據(jù)相關(guān)參數(shù),按照預(yù)設(shè)的尋址方法確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的位置信息;
根據(jù)位置信息從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
進(jìn)一步的,第一存儲(chǔ)介質(zhì)和第二存儲(chǔ)介質(zhì)中存儲(chǔ)有相同副本。
本發(fā)明第三方面提供一種計(jì)算機(jī)裝置,計(jì)算機(jī)裝置包括處理器,處理器用于執(zhí)行存儲(chǔ)器中存儲(chǔ)的計(jì)算機(jī)程序時(shí),實(shí)現(xiàn)如下步驟:
接收讀取數(shù)據(jù)的請(qǐng)求,請(qǐng)求包括待讀取數(shù)據(jù)的相關(guān)參數(shù);
根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息,n為不小于2的整數(shù);
根據(jù)負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置。
本發(fā)明第四方面提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí),處理器,用于執(zhí)行如下步驟:
接收讀取數(shù)據(jù)的請(qǐng)求,請(qǐng)求包括待讀取數(shù)據(jù)的相關(guān)參數(shù);
根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息,n為不小于2的整數(shù);
根據(jù)負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
本發(fā)明提供了一種讀取位置獲取方法,通過(guò)負(fù)載信息的獲取,可以確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載狀態(tài),并可以從中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置,有利于避開局部資源的爭(zhēng)搶,自動(dòng)調(diào)整讀取位置,達(dá)到提升性能的目的。
附圖說(shuō)明
圖1為現(xiàn)有的讀取位置示意圖;
圖2為本發(fā)明實(shí)施例中的讀取位置示意圖;
圖3為本發(fā)明實(shí)施例中讀取位置獲取方法一個(gè)實(shí)施例示意圖;
圖4為本發(fā)明實(shí)施例中的數(shù)據(jù)分布式存儲(chǔ)示意圖;
圖5為本發(fā)明實(shí)施例中讀取位置獲取方法另一實(shí)施例示意圖;
圖6為本發(fā)明實(shí)施例中的硬盤分組示意圖;
圖7為本發(fā)明實(shí)施例中存儲(chǔ)客戶端與存儲(chǔ)服務(wù)端的交互示意圖;
圖8為本發(fā)明實(shí)施例中讀取位置獲取方法另一實(shí)施例示意圖;
圖9為本發(fā)明實(shí)施例中讀取位置獲取裝置另一實(shí)施例示意圖;
圖10為本發(fā)明實(shí)施例中讀取位置獲取裝置另一實(shí)施例示意圖;
圖11為本發(fā)明實(shí)施例中讀取位置獲取裝置另一實(shí)施例示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種讀取位置獲取方法及裝置、計(jì)算機(jī)裝置、可讀存儲(chǔ)介質(zhì),用于避開局部資源的爭(zhēng)搶,自動(dòng)調(diào)整讀取位置。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的說(shuō)明書和權(quán)利要求書及上述附圖中的術(shù)語(yǔ)“第一”、“第二”、“第三”、“第四”等(如果存在)是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的實(shí)施例能夠以除了在這里圖示或描述的內(nèi)容以外的順序?qū)嵤?。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
近年來(lái),超融合架構(gòu)得到廣泛應(yīng)用,超融合架構(gòu)的存儲(chǔ)通常采用分布式存儲(chǔ)。在超融合架構(gòu)中,多個(gè)節(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)連接在一起,每個(gè)節(jié)點(diǎn)都有自己的存儲(chǔ)介質(zhì),若干個(gè)物理節(jié)點(diǎn)通過(guò)存儲(chǔ)軟件可以組成一個(gè)集群,存儲(chǔ)軟件把分布在每個(gè)節(jié)點(diǎn)上的存儲(chǔ)介質(zhì)統(tǒng)一整合起來(lái),能夠形成統(tǒng)一的存儲(chǔ)資源池,并對(duì)外提供存儲(chǔ)服務(wù)。
其中,存儲(chǔ)對(duì)象在進(jìn)行存儲(chǔ)時(shí),可以被切成指定大小的數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊可以保存若干份拷貝,即若數(shù)據(jù)塊保存2份拷貝,稱之為2副本,若數(shù)據(jù)塊保存3份拷貝,稱之為3副本,以此類推,保存幾份拷貝,即稱之為幾副本。為了保證節(jié)點(diǎn)中的存儲(chǔ)介質(zhì)故障時(shí)不會(huì)損壞數(shù)據(jù),同一數(shù)據(jù)塊的多個(gè)副本需要保存到不同的硬盤上面。
現(xiàn)有的方案中,如圖1所示,假設(shè)存在三個(gè)節(jié)點(diǎn),即節(jié)點(diǎn)1、節(jié)點(diǎn)2、節(jié)點(diǎn)3,其中節(jié)點(diǎn)1中有存儲(chǔ)介質(zhì)硬盤1、硬盤2,其上運(yùn)行有vm1、vm2,節(jié)點(diǎn)2中有存儲(chǔ)介質(zhì)硬盤3、硬盤4,其上運(yùn)行有vm3、vm4,節(jié)點(diǎn)3中有存儲(chǔ)介質(zhì)硬盤5、硬盤6,其上運(yùn)行有vm5、vm6,若vm1需要讀取的數(shù)據(jù)塊的2個(gè)副本分別位于硬盤1和硬盤4,vm2需要讀取的數(shù)據(jù)塊的2個(gè)副本分別位于硬盤1和硬盤3,則若vm1、vm2都從硬盤1讀取相應(yīng)的數(shù)據(jù)塊,從而造成vm1、vm2對(duì)硬盤1的io性能的爭(zhēng)搶,不利于局部資源的分配。
為解決上述局部資源爭(zhēng)搶的問題,沿用上述的舉例內(nèi)容,在本發(fā)明中,如圖2所示,當(dāng)vm1或vm2在需要讀取相應(yīng)的數(shù)據(jù)塊時(shí),vm1將比較硬盤1和硬盤4的負(fù)載,vm2將比較硬盤1和硬盤3的負(fù)載,例如,若硬盤1正由vm1在讀取相應(yīng)的數(shù)據(jù)塊,那么vm2通過(guò)比較硬盤1和硬盤3的負(fù)載,可以發(fā)現(xiàn)硬盤3的負(fù)載較輕,則vm2可以從硬盤1切換至硬盤3進(jìn)行相應(yīng)數(shù)據(jù)塊的讀取,從而避免了與vm1對(duì)硬盤1的局部資源的爭(zhēng)搶,有利于優(yōu)化資源。
為便于理解,下面對(duì)本發(fā)明實(shí)施例中的具體流程進(jìn)行交互式描述,請(qǐng)參閱圖3,本發(fā)明實(shí)施例中讀取位置獲取方法一個(gè)實(shí)施例包括:
301、接收讀取數(shù)據(jù)的請(qǐng)求;
本實(shí)施例中,超融合架構(gòu)的每一個(gè)節(jié)點(diǎn)上運(yùn)行有相同的存儲(chǔ)軟件,該存儲(chǔ)軟件可以對(duì)應(yīng)有存儲(chǔ)客戶端和存儲(chǔ)服務(wù)端。其中,每一個(gè)節(jié)點(diǎn)上可以運(yùn)行有一個(gè)存儲(chǔ)客戶端和對(duì)應(yīng)的存儲(chǔ)服務(wù)端,存儲(chǔ)客戶端在節(jié)點(diǎn)的訪問點(diǎn)一側(cè),存儲(chǔ)服務(wù)端在節(jié)點(diǎn)的存儲(chǔ)介質(zhì)的一側(cè),用于實(shí)現(xiàn)對(duì)相應(yīng)節(jié)點(diǎn)的存儲(chǔ)介質(zhì)的實(shí)時(shí)監(jiān)控。
具體的,以存儲(chǔ)介質(zhì)為硬盤為例進(jìn)行說(shuō)明。其中,在每一個(gè)節(jié)點(diǎn)上,可以至少包括一個(gè)硬盤。本實(shí)施例中,節(jié)點(diǎn)的上層應(yīng)用系統(tǒng),如虛擬機(jī),通過(guò)存儲(chǔ)客戶端可以請(qǐng)求獲取要讀取的對(duì)象的數(shù)據(jù)塊,則存儲(chǔ)客戶端可以接收虛擬機(jī)用于讀取數(shù)據(jù)的請(qǐng)求,該請(qǐng)求中可以包括待讀取數(shù)據(jù)的相關(guān)參數(shù)。
例如,假設(shè)超融合架構(gòu)中有3個(gè)節(jié)點(diǎn),每一個(gè)節(jié)點(diǎn)上有2個(gè)硬盤,虛擬機(jī)要讀取的存儲(chǔ)對(duì)象按照指定大小切成了6個(gè)數(shù)據(jù)塊,那么如圖4所示,該6個(gè)數(shù)據(jù)塊可以采用3副本的方式分布于3個(gè)節(jié)點(diǎn)的硬盤中,即6個(gè)數(shù)據(jù)塊的3副本可以存儲(chǔ)在不同節(jié)點(diǎn)的不同硬盤上,每一個(gè)硬盤上存儲(chǔ)有3個(gè)不同的數(shù)據(jù)塊。其中,當(dāng)虛擬機(jī)從節(jié)點(diǎn)1進(jìn)行某一數(shù)據(jù)塊的讀取時(shí),節(jié)點(diǎn)1的存儲(chǔ)客戶端1可以接收到讀取數(shù)據(jù)的請(qǐng)求。
可以理解的是,本實(shí)施例中的分布式存儲(chǔ)僅為舉例說(shuō)明,在實(shí)際應(yīng)用中,只要保證相同數(shù)據(jù)塊的幾個(gè)副本可以存儲(chǔ)于不同的硬盤即可,優(yōu)選的,為了避免相同數(shù)據(jù)塊的幾個(gè)副本存儲(chǔ)于同一節(jié)點(diǎn)的不同硬盤中,而在節(jié)點(diǎn)出現(xiàn)故障時(shí)導(dǎo)致無(wú)法讀取該數(shù)據(jù)塊的情況的出現(xiàn),相同數(shù)據(jù)塊的幾個(gè)副本可以存儲(chǔ)于至少兩個(gè)節(jié)點(diǎn)的不同的硬盤中,具體此處不做限定。
本實(shí)施例中,請(qǐng)求中待讀取數(shù)據(jù)的相關(guān)參數(shù)是為了用于確定待讀取數(shù)據(jù)對(duì)應(yīng)的副本的存儲(chǔ)位置,可以包括待讀取數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)對(duì)象的對(duì)象名、待讀取數(shù)據(jù)在存儲(chǔ)對(duì)象中的偏移位置,例如,假設(shè)存儲(chǔ)對(duì)象為48k,若存儲(chǔ)對(duì)象被切成18k的大小數(shù)據(jù)塊,那么相應(yīng)數(shù)據(jù)塊的偏移位置可以為0k、18k、36k。
需要說(shuō)明的是,本實(shí)施例中待讀取數(shù)據(jù)的相關(guān)參數(shù)除了上述說(shuō)明的內(nèi)容,在實(shí)際應(yīng)用中,還可以包括其它內(nèi)容,如待讀取數(shù)據(jù)在對(duì)應(yīng)的存儲(chǔ)對(duì)象中的名稱或標(biāo)識(shí),具體此處不做限定。
302、根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息;
本實(shí)施例中,存儲(chǔ)客戶端接收到讀取數(shù)據(jù)的請(qǐng)求后,可以根據(jù)請(qǐng)求中待讀取數(shù)據(jù)的相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。其中,n為不小于2的整數(shù),一個(gè)第一存儲(chǔ)介質(zhì)中存儲(chǔ)有待讀取數(shù)據(jù)的一個(gè)副本。
具體的,存儲(chǔ)客戶端接收到讀取數(shù)據(jù)的請(qǐng)求后,可以根據(jù)請(qǐng)求中待讀取數(shù)據(jù)的相關(guān)參數(shù)確定待讀取數(shù)據(jù),例如,沿用圖4說(shuō)明的內(nèi)容,存儲(chǔ)對(duì)象被切成了6個(gè)數(shù)據(jù)塊(數(shù)據(jù)塊1、數(shù)據(jù)塊2、數(shù)據(jù)塊3、數(shù)據(jù)塊4、數(shù)據(jù)塊5、數(shù)據(jù)塊6),節(jié)點(diǎn)1的存儲(chǔ)客戶端1根據(jù)待讀取數(shù)據(jù)的相關(guān)參數(shù)可以確定待讀取數(shù)據(jù)為數(shù)據(jù)塊3,確定待讀取數(shù)據(jù)后,可以進(jìn)一步獲取待讀取數(shù)據(jù)的n個(gè)副本所在n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
例如,假設(shè)數(shù)據(jù)塊3為3副本,若3個(gè)副本分別存儲(chǔ)于3個(gè)節(jié)點(diǎn)的不同的硬盤(硬盤1、硬盤3、硬盤5),則可以獲取這3個(gè)硬盤的負(fù)載信息。其中,負(fù)載信息可以由存儲(chǔ)客戶端1從所有節(jié)點(diǎn)或相應(yīng)節(jié)點(diǎn)的存儲(chǔ)服務(wù)端主動(dòng)獲取,也可以由所有節(jié)點(diǎn)或相應(yīng)節(jié)點(diǎn)的存儲(chǔ)服務(wù)端主動(dòng)上報(bào)至存儲(chǔ)客戶端,各個(gè)節(jié)點(diǎn)的存儲(chǔ)儲(chǔ)客戶端和存儲(chǔ)服務(wù)端之間可以通過(guò)存儲(chǔ)網(wǎng)絡(luò)建立通信連接,以進(jìn)行相關(guān)信息的交互,該存儲(chǔ)網(wǎng)絡(luò)可以包括以太網(wǎng)或infinband網(wǎng)等不同的通信網(wǎng)絡(luò)。
其中,負(fù)載信息可以與節(jié)點(diǎn)、節(jié)點(diǎn)中的硬盤,乃至與副本在節(jié)點(diǎn)中硬盤的位置建立映射關(guān)系,以區(qū)別不同硬盤的負(fù)載信息。
303、根據(jù)負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置。
本實(shí)施例中,存儲(chǔ)客戶端根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息后,可以根據(jù)獲取的負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置。
例如,沿用上述說(shuō)明的例子,獲取到數(shù)據(jù)塊3的3副本對(duì)應(yīng)的3個(gè)硬盤的負(fù)載信息后,可以根據(jù)這3個(gè)硬盤的負(fù)載信息對(duì)3個(gè)硬盤的負(fù)載進(jìn)行比較,若硬盤1的負(fù)載大于硬盤3,硬盤3的負(fù)載大于硬盤5,則可以確定硬盤5的負(fù)載最輕,則可以以硬盤5為目標(biāo)讀取位置。
進(jìn)一步的,本實(shí)施例中,確定硬盤5為目標(biāo)讀取位置后,存儲(chǔ)客戶端1可以將讀取數(shù)據(jù)的請(qǐng)求發(fā)送至控制硬盤5的存儲(chǔ)服務(wù)端3,存儲(chǔ)服務(wù)端3接收到該請(qǐng)求后,可以對(duì)硬盤5執(zhí)行讀取操作,并將在硬盤5讀取到的數(shù)據(jù)塊3的副本返回至存儲(chǔ)客戶端1,以完成對(duì)待讀取數(shù)據(jù)的讀取。
本實(shí)施例中,通過(guò)對(duì)待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息的獲取,可以確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載狀態(tài),并可以從中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置,以防止上層應(yīng)用系統(tǒng)對(duì)某一節(jié)點(diǎn)的某一存儲(chǔ)介質(zhì)進(jìn)行擁擠式的數(shù)據(jù)讀取,有利于避開局部資源的爭(zhēng)搶,自動(dòng)調(diào)整讀取位置,達(dá)到提升性能的目的。
可以理解的是,目標(biāo)讀取位置可以由不同的確定方式,下面分別進(jìn)行說(shuō)明:
請(qǐng)參閱圖5,本發(fā)明實(shí)施例中讀取位置獲取方法另一實(shí)施例包括:
本實(shí)施例中的步驟501與圖3所示實(shí)施例中的步驟301相同,此處不再贅述。
502、根據(jù)相關(guān)參數(shù),按照預(yù)設(shè)的尋址方法確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的位置信息;
本實(shí)施例中,存儲(chǔ)客戶端接收到讀取數(shù)據(jù)的請(qǐng)求后,可以根據(jù)請(qǐng)求中待讀取數(shù)據(jù)的相關(guān)參數(shù),可以按照預(yù)設(shè)的尋址方法確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的位置信息。
具體的,本實(shí)施例中預(yù)設(shè)的尋址方法可以包括hash尋址法或元數(shù)據(jù)尋址法,下面分別進(jìn)行說(shuō)明:
1、hash尋址法:
在采用n個(gè)副本的分布式系統(tǒng)中,將所有的硬盤按照n塊硬盤一組劃分成若干個(gè)硬盤組,這n塊硬盤組由不同的節(jié)點(diǎn)的硬盤組成。如圖6所示,3個(gè)節(jié)點(diǎn),采用3副本,可以劃分為2個(gè)硬盤組,每個(gè)硬盤組都由不同的硬盤組成,3副本可以放入其中一個(gè)硬盤組中,確定硬盤組后,可以將3個(gè)副本保存至該硬盤組,硬盤組的每一個(gè)硬盤都保存一個(gè)拷貝。
每一個(gè)副本在硬盤內(nèi)的存儲(chǔ)位置可以是硬盤的物理位置,也可以是快速轉(zhuǎn)化成物理位置的邏輯位置。
存儲(chǔ)客戶端接收到讀取數(shù)據(jù)的請(qǐng)求后,可以從中提取待讀取數(shù)據(jù)的相關(guān)參數(shù),而后可以根據(jù)hash函數(shù),即可以確定待讀取數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)塊的副本存儲(chǔ)于哪一個(gè)硬盤組中,即副本所在的第一存儲(chǔ)介質(zhì)的位置信息。其中,hash函數(shù)如下:
硬盤組=(對(duì)象名,代表數(shù)據(jù)塊偏移的數(shù)值)
進(jìn)一步的,本實(shí)施例中副本所在的第一存儲(chǔ)介質(zhì)的位置信息表示副本位于哪個(gè)節(jié)點(diǎn)的哪個(gè)硬盤,在實(shí)際應(yīng)用中,若需要獲悉副本位于哪個(gè)節(jié)點(diǎn)的哪個(gè)硬盤的哪個(gè)位置,則可以由控制相應(yīng)硬盤的存儲(chǔ)服務(wù)端繼續(xù)完成尋址,以進(jìn)一步確定副本位于哪個(gè)節(jié)點(diǎn)的哪個(gè)硬盤的哪個(gè)位置。
2、元數(shù)據(jù)尋址法:
在存儲(chǔ)對(duì)象的各個(gè)數(shù)據(jù)塊的副本存儲(chǔ)至相應(yīng)節(jié)點(diǎn)的相應(yīng)硬盤之后,存儲(chǔ)對(duì)象的每一個(gè)數(shù)據(jù)塊的存儲(chǔ)位置都可以作為存儲(chǔ)對(duì)象的元數(shù)據(jù)存儲(chǔ)起來(lái),那么通過(guò)讀取相應(yīng)數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)對(duì)象的元數(shù)據(jù),即可確定相應(yīng)數(shù)據(jù)塊的存儲(chǔ)位置。
假設(shè)存儲(chǔ)對(duì)象filea切成了2個(gè)數(shù)據(jù)塊b1、b2,每一個(gè)數(shù)據(jù)塊有3個(gè)副本,那么每一個(gè)數(shù)據(jù)塊都要記錄3個(gè)副本的存儲(chǔ)位置,包括節(jié)點(diǎn)、硬盤以及在硬盤內(nèi)的位置,如表1所示:
表1
由此可知,通過(guò)待讀取數(shù)據(jù)的相關(guān)參數(shù)與上表的比對(duì),如根據(jù)待讀取數(shù)據(jù)的相關(guān)參數(shù)確定待讀取數(shù)據(jù)為存儲(chǔ)對(duì)象filea的數(shù)據(jù)塊b1,可以確定數(shù)據(jù)塊b1位于哪個(gè)節(jié)點(diǎn)的哪個(gè)硬盤,乃至于哪個(gè)硬盤的哪個(gè)位置。
由此可知,通過(guò)上述預(yù)設(shè)的尋址法,存儲(chǔ)客戶端可以確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的位置信息。
可以理解的是,本實(shí)施例中確定確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的位置信息的方式除了上述說(shuō)明的內(nèi)容,在實(shí)際應(yīng)用中,還可以采用其它方式,如根據(jù)待讀取數(shù)據(jù)的n個(gè)副本的存儲(chǔ)方式確定,具體此處不做限定。
503、根據(jù)位置信息從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息;
本實(shí)施例中,存儲(chǔ)客戶端根據(jù)相關(guān)參數(shù),按照預(yù)設(shè)的尋址方法確定n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的位置信息后,可以根據(jù)位置信息從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
具體的,節(jié)點(diǎn)中的每一個(gè)存儲(chǔ)客戶端可以與不同的存儲(chǔ)服務(wù)端建立通信連接,每一個(gè)節(jié)點(diǎn)的存儲(chǔ)服務(wù)端可以實(shí)時(shí)監(jiān)控受其控制的存儲(chǔ)介質(zhì)的負(fù)載信息,獲取到負(fù)載信息后,存儲(chǔ)服務(wù)端可以實(shí)時(shí)將負(fù)載信息發(fā)送給每一個(gè)存儲(chǔ)客戶端,即存儲(chǔ)客戶端可以接收每一個(gè)存儲(chǔ)服務(wù)端反饋的第二存儲(chǔ)介質(zhì)的負(fù)載信息,該第二存儲(chǔ)介質(zhì)可以由存儲(chǔ)服務(wù)端控制,控制第二存儲(chǔ)介質(zhì)的存儲(chǔ)服務(wù)端和存儲(chǔ)客戶端運(yùn)行于相同或不同的節(jié)點(diǎn)。
如圖7所示,節(jié)點(diǎn)1中的存儲(chǔ)服務(wù)端1可以將監(jiān)控的硬盤1、硬盤2的負(fù)載信息發(fā)送至存儲(chǔ)客戶端1、存儲(chǔ)客戶端2、存儲(chǔ)客戶端3,節(jié)點(diǎn)2中的存儲(chǔ)服務(wù)端2可以將監(jiān)控的硬盤3、硬盤4的負(fù)載信息發(fā)送至存儲(chǔ)客戶端1、存儲(chǔ)客戶端2、存儲(chǔ)客戶端3,節(jié)點(diǎn)3中的存儲(chǔ)服務(wù)端3可以將監(jiān)控的硬盤5、硬盤6的負(fù)載信息發(fā)送至存儲(chǔ)客戶端1、存儲(chǔ)客戶端2、存儲(chǔ)客戶端3,
進(jìn)一步的,存儲(chǔ)客戶端接收到不同服務(wù)端反饋的第二存儲(chǔ)介質(zhì)的負(fù)載信息后,可以根據(jù)第二存儲(chǔ)介質(zhì)的負(fù)載信息建立存儲(chǔ)介質(zhì)負(fù)載表,沿用圖7說(shuō)明的內(nèi)容,如表2所示。
表2
通過(guò)存儲(chǔ)介質(zhì)負(fù)載表的建立,每個(gè)節(jié)點(diǎn)的每個(gè)存儲(chǔ)客戶端均可以獲取各個(gè)節(jié)點(diǎn)中各個(gè)硬盤的負(fù)載,以使得上層應(yīng)用系統(tǒng)無(wú)論從哪一個(gè)節(jié)點(diǎn)的存儲(chǔ)客戶端進(jìn)行訪問時(shí),相應(yīng)的存儲(chǔ)客戶端均可以從存儲(chǔ)介質(zhì)負(fù)載表中獲取相應(yīng)硬盤的負(fù)載信息,尤其是在某一存儲(chǔ)方式下,當(dāng)訪問的存儲(chǔ)客戶端所運(yùn)行的節(jié)點(diǎn)的存儲(chǔ)介質(zhì)未與存儲(chǔ)服務(wù)端所運(yùn)行的節(jié)點(diǎn)的存儲(chǔ)介質(zhì)存儲(chǔ)相同副本時(shí)。
本實(shí)施例中,沿用步驟502說(shuō)明的內(nèi)容,節(jié)點(diǎn)1的存儲(chǔ)客戶端1確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的存儲(chǔ)位置為節(jié)點(diǎn)1的硬盤1、節(jié)點(diǎn)2的硬盤3、節(jié)點(diǎn)3的硬盤5后,可以從存儲(chǔ)介質(zhì)負(fù)載表中分別確定硬盤1、節(jié)點(diǎn)2的硬盤3、節(jié)點(diǎn)3的硬盤5的負(fù)載信息。
可以理解的是,在實(shí)際應(yīng)用中,為了減少存儲(chǔ)客戶端的占用內(nèi)存,可以只有相應(yīng)節(jié)點(diǎn)的存儲(chǔ)服務(wù)端將受其控制的硬盤的負(fù)載信息反饋至存儲(chǔ)客戶端,即只有第一存儲(chǔ)介質(zhì)和第二存儲(chǔ)介質(zhì)中存儲(chǔ)有相同副本時(shí),控制第二存儲(chǔ)介質(zhì)的存儲(chǔ)服務(wù)端才會(huì)將第二存介質(zhì)的負(fù)載信息反饋至相應(yīng)的存儲(chǔ)客戶端。例如,沿用圖2說(shuō)明的內(nèi)容,假設(shè)待讀取數(shù)據(jù)的2個(gè)副本分別存儲(chǔ)于節(jié)點(diǎn)1的硬盤1和節(jié)點(diǎn)2的硬盤4,那么在硬盤4未存儲(chǔ)其它數(shù)據(jù)的情況下,節(jié)點(diǎn)2的存儲(chǔ)服務(wù)端2可以只將硬盤4的負(fù)載信息反饋至存儲(chǔ)客戶端2、節(jié)點(diǎn)1的存儲(chǔ)客戶端1,由此說(shuō)明,在不同硬盤中存儲(chǔ)的數(shù)據(jù)同為相同副本的情況下,這各個(gè)硬盤對(duì)應(yīng)的存儲(chǔ)服務(wù)端可以將這各個(gè)硬盤的負(fù)載信息反饋至這各個(gè)硬盤對(duì)應(yīng)的存儲(chǔ)服務(wù)端、以及自身對(duì)應(yīng)的存儲(chǔ)客戶端。
需要說(shuō)明的是,本實(shí)施例中上述對(duì)負(fù)載信息的獲取也可以為存儲(chǔ)客戶端主動(dòng)進(jìn)行獲取,如在存儲(chǔ)客戶端接收到讀取數(shù)據(jù)的請(qǐng)求后,可以以該請(qǐng)求為觸發(fā)條件,存儲(chǔ)客戶端可以發(fā)送指令至所有或相應(yīng)的存儲(chǔ)客戶端,以指示存儲(chǔ)客戶端上報(bào)受其控制的硬盤的負(fù)載信息。
504、根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io等待隊(duì)列的長(zhǎng)度;
本實(shí)施例中,存儲(chǔ)客戶端根據(jù)位置信息從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息后,可以根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io等待隊(duì)列的長(zhǎng)度。
具體的,本實(shí)施例中的負(fù)載信息可以包括相應(yīng)的第一存儲(chǔ)介質(zhì)的io等待隊(duì)列的長(zhǎng)度,存儲(chǔ)客戶端確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息后,可以對(duì)各個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息進(jìn)行解析,并從相應(yīng)的負(fù)載信息中提取出這n個(gè)第一存儲(chǔ)介質(zhì)的io等待隊(duì)列的長(zhǎng)度。其中,io等待隊(duì)列可以包括對(duì)第一存儲(chǔ)介質(zhì)進(jìn)行讀取或?qū)懖僮鞯牡却?duì)列。
例如,假設(shè)n個(gè)第一存儲(chǔ)介質(zhì)為硬盤1、硬盤3、硬盤5,對(duì)硬盤1進(jìn)行讀取操作的有vm1、vm2,對(duì)硬盤1進(jìn)行寫操作的有vm3,而對(duì)硬盤3進(jìn)行寫操作的有vm4、vm5,對(duì)硬盤5進(jìn)行讀取操作的有vm6,那么由此可知,硬盤1的io等待隊(duì)列的長(zhǎng)度可以為3,硬盤3的io等待隊(duì)列可以為2,硬盤5的io等待隊(duì)列可以為1。需要說(shuō)明的是,本實(shí)施例中對(duì)io等待隊(duì)列的長(zhǎng)度的說(shuō)明僅為示意性舉例,在實(shí)際應(yīng)用中,應(yīng)按照具有有效的方法進(jìn)行確定。
其中,io等待隊(duì)列的長(zhǎng)度的確定可以參照現(xiàn)有技術(shù),此處不再贅述。
505、根據(jù)io等待隊(duì)列的長(zhǎng)度,從n個(gè)第一存儲(chǔ)介質(zhì)中確定io等待隊(duì)列的長(zhǎng)度最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
本實(shí)施例中,存儲(chǔ)客戶端根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io等待隊(duì)列的長(zhǎng)度后,可以根據(jù)io等待隊(duì)列的長(zhǎng)度,從n個(gè)第一存儲(chǔ)介質(zhì)中確定io等待隊(duì)列的長(zhǎng)度最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì),即目標(biāo)讀取位置。
具體的,沿用步驟504的例子,通過(guò)比較硬盤1、硬盤3、硬盤5的io等待隊(duì)列的長(zhǎng)度可知,硬盤5的io等待隊(duì)列的長(zhǎng)度最短,而由于io等待隊(duì)列的長(zhǎng)度越長(zhǎng),說(shuō)明硬盤的負(fù)載越重,反之,說(shuō)明硬盤的負(fù)載越輕,那么可以確定硬盤5即為負(fù)載最輕的存儲(chǔ)介質(zhì),硬盤5可以作為目標(biāo)讀取位置。
本步驟中其它內(nèi)容的相同部分可以參照?qǐng)D3所示實(shí)施例中步驟303說(shuō)明的內(nèi)容,此處不再贅述。
請(qǐng)參閱圖8,本發(fā)明實(shí)施例中讀取位置獲取方法另一實(shí)施例包括:
本實(shí)施例中的步驟801至步驟803與圖5所示實(shí)施例中的步驟501至步驟503相同,此處不再贅述。
804、根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io延時(shí);
本實(shí)施例中,存儲(chǔ)客戶端根據(jù)位置信息從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息后,可以根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io延時(shí)。
具體的,本實(shí)施例中的負(fù)載信息可以包括相應(yīng)的第一存儲(chǔ)介質(zhì)的io延時(shí),存儲(chǔ)客戶端確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息后,可以對(duì)各個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息進(jìn)行解析,并從相應(yīng)的負(fù)載信息中確定這n個(gè)第一存儲(chǔ)介質(zhì)的io延時(shí)。其中,io延時(shí)指的是存儲(chǔ)介質(zhì)的響應(yīng)時(shí)間,即從操作系統(tǒng)內(nèi)核發(fā)出的一個(gè)讀或者寫的io命令到操作系統(tǒng)內(nèi)核接收到io回應(yīng)的時(shí)間,io延時(shí)可以反應(yīng)io等待隊(duì)列的長(zhǎng)度,io延時(shí)越長(zhǎng),意味著io等待隊(duì)列的長(zhǎng)度越長(zhǎng),反之,則越短。
805、根據(jù)io延時(shí),從n個(gè)第一存儲(chǔ)介質(zhì)中確定io延時(shí)最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
本實(shí)施例中,存儲(chǔ)客戶端根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io延時(shí)后,可以根據(jù)io延時(shí),從n個(gè)第一存儲(chǔ)介質(zhì)中確定io延時(shí)最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì),即目標(biāo)讀取位置。
例如,假設(shè)n個(gè)第一存儲(chǔ)介質(zhì)為硬盤1、硬盤3、硬盤5,其中,硬盤1、硬盤3、硬盤5的io延時(shí)分別為10秒、5秒、3秒,那么通過(guò)比較硬盤1、硬盤3、硬盤5的io延時(shí)的大小,可以確定硬盤5的io延時(shí)最短,從而可以說(shuō)明硬盤5為負(fù)載最輕的存儲(chǔ)介質(zhì),硬盤5可以作為目標(biāo)讀取位置。
本步驟中其它內(nèi)容的相同部分可以參照?qǐng)D3所示實(shí)施例中步驟303說(shuō)明的內(nèi)容,此處不再贅述。
可以理解的是,本實(shí)施例中的圖3所示實(shí)施例和圖8所示實(shí)施例僅以兩個(gè)方面對(duì)確定目標(biāo)讀取位置的方式進(jìn)行了說(shuō)明,在實(shí)際應(yīng)用中,還可以采用其它方式,只要能夠從待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)作為目標(biāo)讀取位置即可,具體此處不做限定。
需要說(shuō)明的是,在實(shí)際應(yīng)用中,在存儲(chǔ)服務(wù)端一側(cè),由于與存儲(chǔ)客戶端之間的通信連接,可以實(shí)現(xiàn)對(duì)其控制的第二存儲(chǔ)介質(zhì)的負(fù)載信息向存儲(chǔ)客戶端的反饋,以從可行的實(shí)現(xiàn)方式中,輔助對(duì)目標(biāo)讀取位置的確定,具體可以參照上述實(shí)施例中說(shuō)明的內(nèi)容,此處不再贅述。
上面對(duì)本發(fā)明實(shí)施例中的讀取位置獲取方法進(jìn)行了描述,下面分別對(duì)本發(fā)明實(shí)施例中的讀取位置獲取裝置進(jìn)行描述,該讀取位置獲取裝置應(yīng)用于存儲(chǔ)服務(wù)端,請(qǐng)參閱圖9,本發(fā)明實(shí)施例中讀取位置獲取裝置一個(gè)實(shí)施例包括:
第一接收單元901,用于接收讀取數(shù)據(jù)的請(qǐng)求,請(qǐng)求包括待讀取數(shù)據(jù)的相關(guān)參數(shù);
獲取單元902,用于根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息,n為不小于2的整數(shù);
確定單元903,用于根據(jù)負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置。
請(qǐng)參閱圖10,本發(fā)明實(shí)施例中讀取位置獲取裝置另一實(shí)施例包括:
本實(shí)施例中的單元1001與圖9所示實(shí)施例中的單元901相同,此處不再贅述。
第二接收單元1002,用于接收存儲(chǔ)服務(wù)端反饋的第二存儲(chǔ)介質(zhì)的負(fù)載信息,第二存儲(chǔ)介質(zhì)由存儲(chǔ)服務(wù)端控制,存儲(chǔ)服務(wù)端和存儲(chǔ)客戶端運(yùn)行于相同或不同的節(jié)點(diǎn);
建立單元1003,用于根據(jù)第二存儲(chǔ)介質(zhì)的負(fù)載信息建立存儲(chǔ)介質(zhì)負(fù)載表;
獲取單元1004,用于根據(jù)相關(guān)參數(shù),從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息;
本實(shí)施例中的單元1005與圖9所示實(shí)施例中的單元903相同,此處不再贅述。
可選的,在本發(fā)明的一些實(shí)施例中,確定單元,可以進(jìn)一步具體用于:
根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io等待隊(duì)列的長(zhǎng)度;
根據(jù)io等待隊(duì)列的長(zhǎng)度,從n個(gè)第一存儲(chǔ)介質(zhì)中確定io等待隊(duì)列的長(zhǎng)度最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
可選的,在本發(fā)明的一些實(shí)施例中,確定單元,可以進(jìn)一步具體用于:
根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io延時(shí);
根據(jù)io延時(shí),從n個(gè)第一存儲(chǔ)介質(zhì)中確定io延時(shí)最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
可選的,在本發(fā)明的一些實(shí)施例中,獲取單元,可以進(jìn)一步具體用于:
根據(jù)相關(guān)參數(shù),按照預(yù)設(shè)的尋址方法確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的位置信息;
根據(jù)位置信息從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
下面從存儲(chǔ)服務(wù)端一側(cè)對(duì)讀取位置獲取裝置進(jìn)行說(shuō)明,請(qǐng)參閱圖11,本發(fā)明實(shí)施例中讀取位置獲取方法另一實(shí)施例包括:
獲取單元1101,用于獲取第二存儲(chǔ)介質(zhì)的負(fù)載信息,第二存儲(chǔ)介質(zhì)由存儲(chǔ)服務(wù)端控制;
發(fā)送單元1102,用于將負(fù)載信息發(fā)送至存儲(chǔ)客戶端,存儲(chǔ)服務(wù)端和存儲(chǔ)客戶端運(yùn)行于相同或不同的節(jié)點(diǎn)。
通過(guò)上述的描述可知,本發(fā)明還可以提供一種讀取位置獲取系統(tǒng),該系統(tǒng)可以包括上述說(shuō)明的存儲(chǔ)客戶端和存儲(chǔ)服務(wù)端,通過(guò)分別應(yīng)用于存儲(chǔ)客戶端和存儲(chǔ)服務(wù)端的讀取位置獲取裝置之間的相互配合,可以實(shí)現(xiàn)對(duì)負(fù)載最輕的存儲(chǔ)介質(zhì)的數(shù)據(jù)的讀取,有利于避開局部資源的爭(zhēng)搶。
上面從模塊化功能實(shí)體的角度對(duì)本發(fā)明實(shí)施例中的讀取位置獲取裝置進(jìn)行了描述,下面從硬件處理的角度對(duì)本發(fā)明實(shí)施例中的計(jì)算機(jī)裝置進(jìn)行描述:
該計(jì)算機(jī)裝置用于實(shí)現(xiàn)存儲(chǔ)客戶端一側(cè)的功能,本發(fā)明實(shí)施例中計(jì)算機(jī)裝置一個(gè)實(shí)施例包括:
接收讀取數(shù)據(jù)的請(qǐng)求,請(qǐng)求包括待讀取數(shù)據(jù)的相關(guān)參數(shù);
根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息,n為不小于2的整數(shù);
根據(jù)負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置。
在本發(fā)明的一些實(shí)施例中,處理器,還可以用于實(shí)現(xiàn)如下步驟:
根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io等待隊(duì)列的長(zhǎng)度;
根據(jù)io等待隊(duì)列的長(zhǎng)度,從n個(gè)第一存儲(chǔ)介質(zhì)中確定io等待隊(duì)列的長(zhǎng)度最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
在本發(fā)明的一些實(shí)施例中,處理器,還可以用于實(shí)現(xiàn)如下步驟:
根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io延時(shí);
根據(jù)io延時(shí),從n個(gè)第一存儲(chǔ)介質(zhì)中確定io延時(shí)最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
在本發(fā)明的一些實(shí)施例中,處理器,還可以用于實(shí)現(xiàn)如下步驟:
接收存儲(chǔ)服務(wù)端反饋的第二存儲(chǔ)介質(zhì)的負(fù)載信息,第二存儲(chǔ)介質(zhì)由存儲(chǔ)服務(wù)端控制,存儲(chǔ)服務(wù)端和存儲(chǔ)客戶端運(yùn)行于相同或不同的節(jié)點(diǎn);
根據(jù)第二存儲(chǔ)介質(zhì)的負(fù)載信息建立存儲(chǔ)介質(zhì)負(fù)載表;
根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息包括:
根據(jù)相關(guān)參數(shù),從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
在本發(fā)明的一些實(shí)施例中,處理器,還可以用于實(shí)現(xiàn)如下步驟:
根據(jù)相關(guān)參數(shù),按照預(yù)設(shè)的尋址方法確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的位置信息;
根據(jù)位置信息從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
可以理解的是,上述說(shuō)明的計(jì)算機(jī)裝置中的處理器執(zhí)行所述計(jì)算機(jī)程序時(shí),也可以實(shí)現(xiàn)上述對(duì)應(yīng)的各裝置實(shí)施例中各單元的功能,此處不再贅述。示例性的,所述計(jì)算機(jī)程序可以被分割成一個(gè)或多個(gè)模塊/單元,所述一個(gè)或者多個(gè)模塊/單元被存儲(chǔ)在所述存儲(chǔ)器中,并由所述處理器執(zhí)行,以完成本發(fā)明。所述一個(gè)或多個(gè)模塊/單元可以是能夠完成特定功能的一系列計(jì)算機(jī)程序指令段,該指令段用于描述所述計(jì)算機(jī)程序在所述存儲(chǔ)客戶端一側(cè)的讀取位置獲取裝置中的執(zhí)行過(guò)程。例如,所述計(jì)算機(jī)程序可以被分割成上述存儲(chǔ)客戶端一側(cè)的讀取位置獲取裝置中的各單元,各單元可以實(shí)現(xiàn)如上述相應(yīng)讀取位置獲取裝置說(shuō)明的具體功能。
所述計(jì)算機(jī)裝置可以是桌上型計(jì)算機(jī)、筆記本、掌上電腦及云端服務(wù)器等計(jì)算設(shè)備。所述計(jì)算機(jī)裝置可包括但不僅限于處理器、存儲(chǔ)器。本領(lǐng)域技術(shù)人員可以理解,處理器、存儲(chǔ)器僅僅是計(jì)算機(jī)裝置的示例,并不構(gòu)成對(duì)計(jì)算機(jī)裝置的限定,可以包括更多或更少的部件,或者組合某些部件,或者不同的部件,例如所述計(jì)算機(jī)裝置還可以包括輸入輸出設(shè)備、網(wǎng)絡(luò)接入設(shè)備、總線等。
所述處理器可以是中央處理單元(centralprocessingunit,cpu),還可以是其他通用處理器、數(shù)字信號(hào)處理器(digitalsignalprocessor,dsp)、專用集成電路(applicationspecificintegratedcircuit,asic)、現(xiàn)成可編程門陣列(field-programmablegatearray,fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等,所述處理器是所述計(jì)算機(jī)裝置的控制中心,利用各種接口和線路連接整個(gè)計(jì)算機(jī)裝置的各個(gè)部分。
所述存儲(chǔ)器可用于存儲(chǔ)所述計(jì)算機(jī)程序和/或模塊,所述處理器通過(guò)運(yùn)行或執(zhí)行存儲(chǔ)在所述存儲(chǔ)器內(nèi)的計(jì)算機(jī)程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器內(nèi)的數(shù)據(jù),實(shí)現(xiàn)所述計(jì)算機(jī)裝置的各種功能。所述存儲(chǔ)器可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)終端的使用所創(chuàng)建的數(shù)據(jù)等。此外,存儲(chǔ)器可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如硬盤、內(nèi)存、插接式硬盤,智能存儲(chǔ)卡(smartmediacard,smc),安全數(shù)字(securedigital,sd)卡,閃存卡(flashcard)、至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。
本發(fā)明還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)用于實(shí)現(xiàn)存儲(chǔ)客戶端一側(cè)的功能,其上存儲(chǔ)有計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí),處理器,可以用于執(zhí)行如下步驟:
接收讀取數(shù)據(jù)的請(qǐng)求,請(qǐng)求包括待讀取數(shù)據(jù)的相關(guān)參數(shù);
根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息,n為不小于2的整數(shù);
根據(jù)負(fù)載信息,從n個(gè)第一存儲(chǔ)介質(zhì)中確定負(fù)載最輕的存儲(chǔ)介質(zhì)為目標(biāo)讀取位置。
在本發(fā)明的一些實(shí)施例中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)的計(jì)算機(jī)程序被處理器執(zhí)行時(shí),處理器,可以具體用于執(zhí)行如下步驟:
根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io等待隊(duì)列的長(zhǎng)度;
根據(jù)io等待隊(duì)列的長(zhǎng)度,從n個(gè)第一存儲(chǔ)介質(zhì)中確定io等待隊(duì)列的長(zhǎng)度最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
在本發(fā)明的一些實(shí)施例中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)的計(jì)算機(jī)程序被處理器執(zhí)行時(shí),處理器,可以具體用于執(zhí)行如下步驟:
根據(jù)負(fù)載信息,確定n個(gè)第一存儲(chǔ)介質(zhì)的io延時(shí);
根據(jù)io延時(shí),從n個(gè)第一存儲(chǔ)介質(zhì)中確定io延時(shí)最短的存儲(chǔ)介質(zhì)為負(fù)載最輕的存儲(chǔ)介質(zhì)。
在本發(fā)明的一些實(shí)施例中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)的計(jì)算機(jī)程序被處理器執(zhí)行時(shí),處理器,可以具體用于執(zhí)行如下步驟:
接收存儲(chǔ)服務(wù)端反饋的第二存儲(chǔ)介質(zhì)的負(fù)載信息,第二存儲(chǔ)介質(zhì)由存儲(chǔ)服務(wù)端控制,存儲(chǔ)服務(wù)端和存儲(chǔ)客戶端運(yùn)行于相同或不同的節(jié)點(diǎn);
根據(jù)第二存儲(chǔ)介質(zhì)的負(fù)載信息建立存儲(chǔ)介質(zhì)負(fù)載表;
根據(jù)相關(guān)參數(shù),獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息包括:
根據(jù)相關(guān)參數(shù),從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
在本發(fā)明的一些實(shí)施例中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)的計(jì)算機(jī)程序被處理器執(zhí)行時(shí),處理器,可以具體用于執(zhí)行如下步驟:
根據(jù)相關(guān)參數(shù),按照預(yù)設(shè)的尋址方法確定待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的位置信息;
根據(jù)位置信息從存儲(chǔ)介質(zhì)負(fù)載表中獲取待讀取數(shù)據(jù)的n個(gè)副本所在的n個(gè)第一存儲(chǔ)介質(zhì)的負(fù)載信息。
可以理解的是,所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在相應(yīng)的一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明實(shí)現(xiàn)上述相應(yīng)的實(shí)施例方法中的全部或部分流程,也可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的計(jì)算機(jī)程序可存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該計(jì)算機(jī)程序在被處理器執(zhí)行時(shí),可實(shí)現(xiàn)上述各個(gè)方法實(shí)施例的步驟。其中,所述計(jì)算機(jī)程序包括計(jì)算機(jī)程序代碼,所述計(jì)算機(jī)程序代碼可以為源代碼形式、對(duì)象代碼形式、可執(zhí)行文件或某些中間形式等。所述計(jì)算機(jī)可讀介質(zhì)可以包括:能夠攜帶所述計(jì)算機(jī)程序代碼的任何實(shí)體或裝置、記錄介質(zhì)、u盤、移動(dòng)硬盤、磁碟、光盤、計(jì)算機(jī)存儲(chǔ)器、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、電載波信號(hào)、電信信號(hào)以及軟件分發(fā)介質(zhì)等。需要說(shuō)明的是,所述計(jì)算機(jī)可讀介質(zhì)包含的內(nèi)容可以根據(jù)司法管轄區(qū)內(nèi)立法和專利實(shí)踐的要求進(jìn)行適當(dāng)?shù)脑鰷p,例如在某些司法管轄區(qū),根據(jù)立法和專利實(shí)踐,計(jì)算機(jī)可讀介質(zhì)不包括電載波信號(hào)和電信信號(hào)。
需要說(shuō)明的是,在存儲(chǔ)服務(wù)端一側(cè),也可以有對(duì)應(yīng)的計(jì)算機(jī)裝置、可讀存儲(chǔ)介質(zhì),具體可以參照讀取位置獲取裝置在存儲(chǔ)服務(wù)端一側(cè)的說(shuō)明以及上述對(duì)存儲(chǔ)客戶端一側(cè)的計(jì)算機(jī)裝置、可讀存儲(chǔ)介質(zhì)的說(shuō)明,此處不再贅述。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
以上所述,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。