本發(fā)明屬于數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其是涉及一種分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布方法及裝置。
背景技術(shù):
分布式數(shù)據(jù)庫(kù)是指利用高速計(jì)算機(jī)網(wǎng)絡(luò)將物理上分散的多個(gè)數(shù)據(jù)存儲(chǔ)單元連接起來(lái)組成一個(gè)邏輯上統(tǒng)一的數(shù)據(jù)庫(kù)。分布式數(shù)據(jù)庫(kù)的基本思想是將原來(lái)集中式數(shù)據(jù)庫(kù)中的數(shù)據(jù)分散存儲(chǔ)到多個(gè)通過(guò)網(wǎng)絡(luò)連接的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)上,以獲取更大的存儲(chǔ)容量和更高的并發(fā)訪問(wèn)量。近年來(lái),隨著數(shù)據(jù)量的高速增長(zhǎng),分布式數(shù)據(jù)庫(kù)技術(shù)也得到了快速的發(fā)展,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)開始從集中式模型向分布式架構(gòu)發(fā)展,基于關(guān)系型的分布式數(shù)據(jù)庫(kù)在保留了傳統(tǒng)數(shù)據(jù)庫(kù)的數(shù)據(jù)模型和基本特征下,從集中式存儲(chǔ)走向分布式存儲(chǔ),從集中式計(jì)算走向分布式計(jì)算。
在客戶的業(yè)務(wù)場(chǎng)景中,當(dāng)初始安裝集群時(shí),如果集群節(jié)點(diǎn)的硬件資源不對(duì)等,或者當(dāng)安裝完集群后需要進(jìn)行節(jié)點(diǎn)替換時(shí),當(dāng)替換的新節(jié)點(diǎn)和原有集群節(jié)點(diǎn)的硬件資源不對(duì)等時(shí),或者到進(jìn)行集群擴(kuò)容時(shí),新的擴(kuò)容的節(jié)點(diǎn)的硬件資源和原集群節(jié)點(diǎn)資源不對(duì)等時(shí),當(dāng)前版本的集群進(jìn)行數(shù)據(jù)分布時(shí)采用一致性的hash方式來(lái)分布數(shù)據(jù)時(shí)把節(jié)點(diǎn)對(duì)等看待,保證了節(jié)點(diǎn)數(shù)據(jù)是均勻的,但節(jié)點(diǎn)的硬件資源的不對(duì)等導(dǎo)致了節(jié)點(diǎn)運(yùn)算的木桶效應(yīng)。目前市場(chǎng)上主流的分布式數(shù)據(jù)庫(kù)系統(tǒng)vertica,GreepPlum一般也是采用一致性的hash方式來(lái)分布集群中的數(shù)據(jù),經(jīng)過(guò)hash分布的表,在初始安裝,節(jié)點(diǎn)替換和擴(kuò)容時(shí),按照以上方式導(dǎo)致當(dāng)集群中的物理節(jié)點(diǎn)的硬件配置即使不同時(shí),采用一致性的hash方式來(lái)分布數(shù)據(jù)把節(jié)點(diǎn)對(duì)等看待,因此無(wú)論集群中硬件配置高的物理節(jié)點(diǎn),還是集群中硬件配置低的物理節(jié)點(diǎn)都分配到了基本相當(dāng)?shù)臄?shù)據(jù)量,帶來(lái)的問(wèn)題是硬件配置低的物理節(jié)點(diǎn)成為了系統(tǒng)性能的瓶頸。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布方法及裝置,以解決現(xiàn)有技術(shù)中集群節(jié)點(diǎn)的硬件資源的不對(duì)等導(dǎo)致了節(jié)點(diǎn)運(yùn)算的木桶效應(yīng)。的技術(shù)問(wèn)題。
一方面,本發(fā)明實(shí)施例提供了一種分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布方法,包括:
在集群節(jié)點(diǎn)安裝時(shí),獲取所述節(jié)點(diǎn)的硬件信息;
配置所述集群的哈希地圖Hash Map,并根據(jù)所述節(jié)點(diǎn)的硬件信息為每個(gè)節(jié)點(diǎn)分配哈希桶。
進(jìn)一步的,所述方法還包括:
在所述節(jié)點(diǎn)的硬件配置發(fā)生變化時(shí),根據(jù)所述變化調(diào)整所述節(jié)點(diǎn)的哈希桶。
進(jìn)一步的,所述方法還包括:
在所述集群增加節(jié)點(diǎn)時(shí),建立新的Hash Map,并根據(jù)所述增加的節(jié)點(diǎn)的硬件信息分配哈希桶。
更進(jìn)一步的,所述根據(jù)所述增加的節(jié)點(diǎn)的硬件信息分配哈希桶,包括:
移動(dòng)變更哈希桶的節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)至所述增加的節(jié)點(diǎn)。
另一方面,本發(fā)明實(shí)施例提供了一種分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布裝置,包括:
獲取單元,用于在集群節(jié)點(diǎn)安裝時(shí),獲取所述節(jié)點(diǎn)的硬件信息;
分配單元,用于配置所述集群的哈希地圖Hash Map,并根據(jù)所述節(jié)點(diǎn)的硬件信息為每個(gè)節(jié)點(diǎn)分配哈希桶。
進(jìn)一步的,所述裝置還包括:
調(diào)整單元,用于在所述節(jié)點(diǎn)的硬件配置發(fā)生變化時(shí),根據(jù)所述變化調(diào)整所述節(jié)點(diǎn)的哈希桶。
進(jìn)一步的,所述裝置還包括:
再分配單元,用于在所述集群增加節(jié)點(diǎn)時(shí),建立新的Hash Map,并根據(jù)所述增加的節(jié)點(diǎn)的硬件信息分配哈希桶。
更進(jìn)一步的,所述再分配單元用于:
移動(dòng)變更哈希桶的節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)至所述增加的節(jié)點(diǎn)。
本發(fā)明實(shí)施例提供的分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布方法及裝置,通過(guò)根據(jù)分布式數(shù)據(jù)庫(kù)集群節(jié)點(diǎn)的硬件配置哈希地圖,并可靈活的調(diào)整節(jié)點(diǎn)哈希桶的數(shù)量,能夠保證高硬件資源的節(jié)點(diǎn)分配更多的數(shù)據(jù),避免了節(jié)點(diǎn)運(yùn)算的木桶效應(yīng)。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例一提供的分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布方法的流程示意圖;
圖2是本發(fā)明實(shí)施例二提供的分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布方法的流程示意圖;
圖3是本發(fā)明實(shí)施例三提供的分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布方法的流程示意圖;
圖4是本發(fā)明實(shí)施例四提供的布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例一
圖1為本發(fā)明實(shí)施例一提供的分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布方法的流程圖,本實(shí)施例可適用于對(duì)集群中的數(shù)據(jù)進(jìn)行分布的情況,該方法可以由分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布裝置來(lái)執(zhí)行,該裝置可由軟件/硬件方式實(shí)現(xiàn),并可集成于分布式數(shù)據(jù)庫(kù)系統(tǒng)的管理節(jié)點(diǎn)中。
參見圖1,所述分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布的方法,包括:
S110,在集群節(jié)點(diǎn)安裝時(shí),獲取所述節(jié)點(diǎn)的硬件信息。
分布式數(shù)據(jù)庫(kù)系統(tǒng)通常使用較小的計(jì)算機(jī)系統(tǒng),每臺(tái)計(jì)算機(jī)可單獨(dú)放在一個(gè)地方,每臺(tái)計(jì)算機(jī)中都可能有DBMS的一份完整拷貝副本,或者部分拷貝副本,并具有自己局部的數(shù)據(jù)庫(kù)。每個(gè)計(jì)算機(jī)系統(tǒng)的硬件配置可能相同,也可能不同。在本實(shí)施例中,可以將分布式數(shù)據(jù)庫(kù)系統(tǒng)的節(jié)點(diǎn)分為三類,分別為低硬件資源的節(jié)點(diǎn),中硬件資源的節(jié)點(diǎn),高硬件資源的節(jié)點(diǎn)。在創(chuàng)建分布式數(shù)據(jù)庫(kù)時(shí),對(duì)集群中每個(gè)節(jié)點(diǎn)進(jìn)行安裝,在進(jìn)行安裝時(shí),可以通過(guò)網(wǎng)絡(luò)和相應(yīng)的指令獲取每個(gè)節(jié)點(diǎn)的硬件信息。所述硬件信息可以包括:CPU頻率、內(nèi)存大小和硬盤大小等。
S120,配置所述集群的哈希地圖Hash Map,并根據(jù)所述節(jié)點(diǎn)的硬件信息為每個(gè)節(jié)點(diǎn)分配哈希桶。
在節(jié)點(diǎn)硬件信息缺省情況下,各個(gè)節(jié)點(diǎn)所分配到的hash桶是均勻的,因此保證了各個(gè)節(jié)點(diǎn)所分配的數(shù)據(jù)是均勻的,但如果節(jié)點(diǎn)本身的硬件資源不均等時(shí),如果數(shù)據(jù)分配是均勻的,反而造成了節(jié)點(diǎn)運(yùn)算的木桶效應(yīng)。在集群節(jié)點(diǎn)安裝完成后,配置集群的hashmap。高硬件資源的節(jié)點(diǎn)分配更多的hash桶,其次是中硬件資源的節(jié)點(diǎn),最后是低硬件資源的節(jié)點(diǎn),按此方式自動(dòng)產(chǎn)生hashmap。其中,hash map是hash值和節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系。哈希桶通常容量是固定值,即能處理固定次數(shù)的沖突。由此可以看出,哈希桶的容量與節(jié)點(diǎn)運(yùn)算處理能力相關(guān)。所以,需要根據(jù)所述節(jié)點(diǎn)的硬件信息為每個(gè)節(jié)點(diǎn)分配哈希桶。當(dāng)數(shù)據(jù)進(jìn)行分布時(shí),能夠保證高硬件資源的節(jié)點(diǎn)分配更多的數(shù)據(jù),其次是中硬件資源的節(jié)點(diǎn),最后是低硬件資源的節(jié)點(diǎn),按照該種方式避免了節(jié)點(diǎn)運(yùn)算的木桶效應(yīng)。缺省情況下,各個(gè)節(jié)點(diǎn)所分配到的hash桶是均勻的。根據(jù)hash map對(duì)數(shù)據(jù)進(jìn)行分布。即在數(shù)據(jù)進(jìn)行分布時(shí),首先計(jì)算數(shù)據(jù)的hash值,根據(jù)hashmap中的hash值取得該hash值所對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的分布。
本實(shí)施例通過(guò)根據(jù)分布式數(shù)據(jù)庫(kù)集群節(jié)點(diǎn)的硬件配置哈希地圖,并可靈活的調(diào)整節(jié)點(diǎn)哈希桶的數(shù)量,能夠保證高硬件資源的節(jié)點(diǎn)分配更多的數(shù)據(jù),避免了節(jié)點(diǎn)運(yùn)算的木桶效應(yīng)。
實(shí)施例二
圖2是本發(fā)明實(shí)施例二提供的分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布的方法的流程示意圖,本發(fā)明實(shí)施例以上述實(shí)施例為基礎(chǔ),進(jìn)一步的,所述方法還包括:在所述節(jié)點(diǎn)的硬件配置發(fā)生變化時(shí),根據(jù)所述變化調(diào)整所述節(jié)點(diǎn)的哈希桶。
參見圖2,所述分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布的方法,包括:
S210,在集群節(jié)點(diǎn)安裝時(shí),獲取所述節(jié)點(diǎn)的硬件信息。
S220,配置所述集群的哈希地圖Hash Map,并根據(jù)所述節(jié)點(diǎn)的硬件信息為每個(gè)節(jié)點(diǎn)分配哈希桶。
S230,在所述節(jié)點(diǎn)的硬件配置發(fā)生變化時(shí),根據(jù)所述變化調(diào)整所述節(jié)點(diǎn)的哈希桶。
集群中的硬件資源進(jìn)行調(diào)整時(shí),可以調(diào)整該hashmap中該節(jié)點(diǎn)所對(duì)應(yīng)的hash桶,并對(duì)調(diào)整所涉及到的hash桶所對(duì)應(yīng)的節(jié)點(diǎn)的數(shù)據(jù)重新進(jìn)行分布
本實(shí)施例通過(guò)增加如下步驟:在所述節(jié)點(diǎn)的硬件配置發(fā)生變化時(shí),根據(jù)所述變化調(diào)整所述節(jié)點(diǎn)的哈希桶??梢栽诩褐械挠布Y源進(jìn)行調(diào)整時(shí),可以調(diào)整該hashmap中該節(jié)點(diǎn)所對(duì)應(yīng)的hash桶,并對(duì)調(diào)整所涉及到的hash桶所對(duì)應(yīng)的節(jié)點(diǎn)的數(shù)據(jù)重新進(jìn)行分布
實(shí)施例三
圖3是本發(fā)明實(shí)施例二提供的分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布的方法的流程示意圖,本發(fā)明實(shí)施例以上述實(shí)施例為基礎(chǔ),進(jìn)一步的,所述方法還包括:在所述集群增加節(jié)點(diǎn)時(shí),建立新的Hash Map,并根據(jù)所述增加的節(jié)點(diǎn)的硬件信息分配哈希桶。
參見圖3,所述分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布的方法,包括:
S310,在集群節(jié)點(diǎn)安裝時(shí),獲取所述節(jié)點(diǎn)的硬件信息。
S320,配置所述集群的哈希地圖Hash Map,并根據(jù)所述節(jié)點(diǎn)的硬件信息為每個(gè)節(jié)點(diǎn)分配哈希桶。
S330,在所述集群增加節(jié)點(diǎn)時(shí),建立新的Hash Map,并根據(jù)所述增加的節(jié)點(diǎn)的硬件信息分配哈希桶。
在所述集群進(jìn)行擴(kuò)容時(shí),常規(guī)情況下新擴(kuò)容的節(jié)點(diǎn)的硬件資源一般高于原集群中的節(jié)點(diǎn),因此對(duì)擴(kuò)容后的集群可以建立新的hashmap,新hashmap中,新擴(kuò)容的節(jié)點(diǎn)可以分配更多的hash桶,來(lái)達(dá)到新節(jié)點(diǎn)可以分布更多數(shù)據(jù)的目的。
本實(shí)施例通過(guò)增加如下步驟:在所述集群增加節(jié)點(diǎn)時(shí),建立新的Hash Map,并根據(jù)所述增加的節(jié)點(diǎn)的硬件信息分配哈希桶??梢允沟眯聰U(kuò)容的節(jié)點(diǎn)可以分配更多的hash桶,來(lái)達(dá)到新節(jié)點(diǎn)可以分布更多數(shù)據(jù)的目的。
在本實(shí)施例的一個(gè)優(yōu)選實(shí)施方式中,將根據(jù)所述增加的節(jié)點(diǎn)的硬件信息分配哈希桶,具體優(yōu)化為:移動(dòng)變更哈希桶的節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)至所述增加的節(jié)點(diǎn)。重新調(diào)整hashmap后,對(duì)涉及到hash桶變更后的集群中原有節(jié)點(diǎn)進(jìn)行數(shù)據(jù)重分布,移動(dòng)hash桶變更的節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)到新擴(kuò)容的節(jié)點(diǎn)上??梢员WC新擴(kuò)容的節(jié)點(diǎn)分布更多的數(shù)據(jù)。
實(shí)施例四
圖4是本發(fā)明實(shí)施例四提供的分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布裝置的結(jié)構(gòu)示意圖,如圖4所示,所述裝置包括:
獲取單元410,用于在集群節(jié)點(diǎn)安裝時(shí),獲取所述節(jié)點(diǎn)的硬件信息;
分配單元420,用于配置所述集群的哈希地圖Hash Map,并根據(jù)所述節(jié)點(diǎn)的硬件信息為每個(gè)節(jié)點(diǎn)分配哈希桶。
進(jìn)一步的,所述裝置還包括:
調(diào)整單元,用于在所述節(jié)點(diǎn)的硬件配置發(fā)生變化時(shí),根據(jù)所述變化調(diào)整所述節(jié)點(diǎn)的哈希桶。
進(jìn)一步的,所述裝置還包括:
再分配單元,用于在所述集群增加節(jié)點(diǎn)時(shí),建立新的Hash Map,并根據(jù)所述增加的節(jié)點(diǎn)的硬件信息分配哈希桶。
更進(jìn)一步的,所述再分配單元用于:
移動(dòng)變更哈希桶的節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)至所述增加的節(jié)點(diǎn)。
本實(shí)施例提供的分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)的分布裝置,通過(guò)根據(jù)分布式數(shù)據(jù)庫(kù)集群節(jié)點(diǎn)的硬件配置哈希地圖,并可靈活的調(diào)整節(jié)點(diǎn)哈希桶的數(shù)量,能夠保證高硬件資源的節(jié)點(diǎn)分配更多的數(shù)據(jù),避免了節(jié)點(diǎn)運(yùn)算的木桶效應(yīng)。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說(shuō)明的是:以上各實(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ù)方案的范圍。