節(jié)點(diǎn)訪問(wèn)方法和裝置制造方法
【專利摘要】本發(fā)明提供了一種節(jié)點(diǎn)訪問(wèn)方法和裝置,該方法包括:接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從所述分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn);獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息;根據(jù)獲取的所述資源信息,從所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使所述客戶端接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。本發(fā)明提供的技術(shù)方案可以簡(jiǎn)化客戶端對(duì)分布式存儲(chǔ)系統(tǒng)集群中節(jié)點(diǎn)的配置管理,同時(shí)能夠靈活地調(diào)整分布式存儲(chǔ)系統(tǒng)集群中各節(jié)點(diǎn)的訪問(wèn)請(qǐng)求量,保證了各節(jié)點(diǎn)負(fù)載均衡。
【專利說(shuō)明】節(jié)點(diǎn)訪問(wèn)方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別是一種節(jié)點(diǎn)訪問(wèn)方法和裝置。
【背景技術(shù)】
[0002]Cassandra是依賴DHT (Distributed Hash Table,分布式哈希表)技術(shù)實(shí)現(xiàn)的一種典型的無(wú)中心節(jié)點(diǎn)的環(huán)形結(jié)構(gòu)的分布式存儲(chǔ)系統(tǒng)。Cassandra數(shù)據(jù)存儲(chǔ)空間可以抽象為一個(gè)環(huán)形結(jié)構(gòu),數(shù)據(jù)就是通過(guò)hash (哈希)分散在這個(gè)環(huán)形存儲(chǔ)空間上。每個(gè)節(jié)點(diǎn)負(fù)責(zé)管理這個(gè)環(huán)形存儲(chǔ)空間上的某一塊連續(xù)的Range (范圍),落在此Range空間上的數(shù)據(jù)就存儲(chǔ)在這個(gè)節(jié)點(diǎn)上。
[0003]Cassandra的節(jié)點(diǎn)角色分為兩種,即接入節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)。首先,接入節(jié)點(diǎn)負(fù)責(zé)接收來(lái)自外界的訪問(wèn)數(shù)據(jù)的請(qǐng)求,如增、刪、改、查請(qǐng)求,進(jìn)而根據(jù)請(qǐng)求內(nèi)容計(jì)算數(shù)據(jù)及其副本在Cassandra集群中所分布的數(shù)據(jù)節(jié)點(diǎn),并負(fù)責(zé)請(qǐng)求的分發(fā)與應(yīng)答的匯總。其次,數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)副本的真實(shí)存儲(chǔ)。在Cassandra系統(tǒng)中每個(gè)節(jié)點(diǎn)都既可以作為接入節(jié)點(diǎn),又可以作為數(shù)據(jù)節(jié)點(diǎn)而存在。由于Cassandra的每個(gè)節(jié)點(diǎn)都同時(shí)具有數(shù)據(jù)節(jié)點(diǎn)和接入節(jié)點(diǎn)二者功能,因而,來(lái)自外界(如客戶端)的訪問(wèn)請(qǐng)求可以通過(guò)任何一個(gè)接入節(jié)點(diǎn)來(lái)訪問(wèn)集群中的數(shù)據(jù)。即,由接入節(jié)點(diǎn)根據(jù)集群的副本放置策略,定位到數(shù)據(jù)及其副本所在的數(shù)據(jù)節(jié)點(diǎn),從而完成客戶端訪問(wèn)請(qǐng)求的分發(fā)與應(yīng)答的匯總。Cassandra集群對(duì)外提供thrift (軟件框架)接口訪問(wèn)方式,客戶端通過(guò)thrift協(xié)議連接指定接入節(jié)點(diǎn)發(fā)送訪問(wèn)請(qǐng)求。
[0004]如上所述,相關(guān)技術(shù)中,客戶端請(qǐng)求訪問(wèn)Cassandra提供的thrift協(xié)議連接的指定接入節(jié)點(diǎn)即可訪問(wèn)Cassandra集群數(shù)據(jù)。然而,客戶端具體可以訪問(wèn)哪些接入節(jié)點(diǎn)完全由客戶端來(lái)控制??蛻舳送ǔ>S護(hù)一個(gè)接入節(jié)點(diǎn)的IP(Internet Protocol,互聯(lián)網(wǎng)協(xié)議)列表,隨機(jī)從其中選擇一個(gè)IP連接訪問(wèn)。這種方式通常存在以下缺點(diǎn)。
[0005]1、客戶端只知道Cassandra集群中存在若干接入節(jié)點(diǎn)的IP列表可以連接訪問(wèn)。這個(gè)IP列表通過(guò)客戶端的配置文件中進(jìn)行管理。但是,Cassandra集群規(guī)模動(dòng)輒上千臺(tái)節(jié)點(diǎn),客戶端管理上千個(gè)節(jié)點(diǎn)的IP的開(kāi)銷很大,若只配置其中少量幾個(gè)接入節(jié)點(diǎn),而往往會(huì)導(dǎo)致Cassandra節(jié)點(diǎn)間的資源占用不均衡,比如網(wǎng)卡帶寬、CPU資源占用等。
[0006]2、當(dāng)接入節(jié)點(diǎn)出現(xiàn)變更,或者接入節(jié)點(diǎn)故障、停機(jī)時(shí),客戶端無(wú)法迅速、及時(shí)地屏蔽故障的接入節(jié)點(diǎn),從而導(dǎo)致大量的訪問(wèn)失敗。
[0007]3、由于客戶端無(wú)法獲知Cassandra集群的接入節(jié)點(diǎn)的負(fù)載的高低,因而只能采用將請(qǐng)求平均發(fā)送到其配置的所有接入節(jié)點(diǎn)的策略。這樣,負(fù)載高的接入節(jié)點(diǎn)也要處理同樣多的請(qǐng)求,直接導(dǎo)致接入節(jié)點(diǎn)的負(fù)載更加嚴(yán)重,使得請(qǐng)求的訪問(wèn)延遲大幅變長(zhǎng)。
[0008]綜上,如何有效地解決上述問(wèn)題成為目前亟待解決的技術(shù)問(wèn)題。
【發(fā)明內(nèi)容】
[0009]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的節(jié)點(diǎn)訪問(wèn)方法和相應(yīng)的裝置。
[0010]依據(jù)本發(fā)明的一個(gè)方面,提供了一種節(jié)點(diǎn)訪問(wèn)方法,包括:接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從所述分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn);獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息;根據(jù)獲取的所述資源信息,從所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使所述客戶端接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。
[0011]可選地,所述方法還包括:所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)啟動(dòng)時(shí),將該節(jié)點(diǎn)的互聯(lián)網(wǎng)協(xié)議IP地址存儲(chǔ)至協(xié)同工作系統(tǒng)Zookeeper,并在所述Zookeeper的目錄樹(shù)中建立該節(jié)點(diǎn)與該節(jié)點(diǎn)的IP地址間的映射關(guān)系。
[0012]可選地,從所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn)之后,還包括:根據(jù)所述映射關(guān)系查詢所述目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址;以使所述客戶端接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn),包括:以使所述客戶端利用所述目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn)。
[0013]可選地,所述資源信息包括:節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或節(jié)點(diǎn)的性能參數(shù)值。
[0014]可選地,所述方法還包括:根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息和/或硬件參數(shù)信息存儲(chǔ)至所述Zookeeper。
[0015]可選地,所述負(fù)載評(píng)價(jià)指標(biāo)信息包括下列至少之一:
[0016]中央處理器CPU使用率;
[0017]內(nèi)存使用率;
[0018]磁盤(pán)輸入/輸出使用率;
[0019]網(wǎng)卡帶寬占用;
[0020]請(qǐng)求平均訪問(wèn)時(shí)延。
[0021]可選地,根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息存儲(chǔ)至所述Zookeeper之后,還包括:根據(jù)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息,計(jì)算各個(gè)節(jié)點(diǎn)的負(fù)載因子;對(duì)所述各個(gè)節(jié)點(diǎn)的負(fù)載因子進(jìn)行歸一化處理,得到各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息;將所述各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息存儲(chǔ)于所述Zookeeper管理的高速緩沖存儲(chǔ)器Cache。
[0022]可選地,根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的硬件參數(shù)信息存儲(chǔ)至所述Zookeeper之后,還包括:根據(jù)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的硬件參數(shù)信息,計(jì)算各個(gè)節(jié)點(diǎn)的性能參數(shù)值;將所述各個(gè)節(jié)點(diǎn)的性能參數(shù)值存儲(chǔ)于所述Zookeeper管理的Cache。
[0023]可選地,獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的資源信息,包括:從所述Zookeeper管理的Cache中獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0024]可選地,所述方法還包括:當(dāng)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)發(fā)生故障時(shí),在所述Zookeeper中刪除該故障節(jié)點(diǎn)。
[0025]可選地,在所述Zookeeper中刪除該故障節(jié)點(diǎn),包括:在所述Zookeeper中刪除該故障節(jié)點(diǎn)的IP地址,并在所述Zookeeper管理的Cache中刪除該故障節(jié)點(diǎn)所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0026]可選地,所述分布式存儲(chǔ)系統(tǒng)為Cassandra系統(tǒng)。
[0027]依據(jù)本發(fā)明的另一個(gè)方面,還提供了一種節(jié)點(diǎn)訪問(wèn)裝置,包括:
[0028]選擇模塊,適于接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從所述分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn);
[0029]獲取模塊,適于獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的資源信息;
[0030]訪問(wèn)模塊,適于根據(jù)獲取的所述資源信息,從所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使所述客戶端接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。
[0031]可選地,所述裝置還包括映射建立模塊,適于:所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)啟動(dòng)時(shí),將該節(jié)點(diǎn)的互聯(lián)網(wǎng)協(xié)議IP地址存儲(chǔ)至協(xié)同工作系統(tǒng)Zookeeper,并在所述Zookeeper的目錄樹(shù)中建立該節(jié)點(diǎn)與該節(jié)點(diǎn)的IP地址間的映射關(guān)系。
[0032]可選地,所述訪問(wèn)模塊還適于:根據(jù)所述映射關(guān)系查詢所述目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址,以使所述客戶端利用所述目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn)。
[0033]可選地,所述資源信息包括:節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或節(jié)點(diǎn)的性能參數(shù)值。
[0034]可選地,所述裝置還包括存儲(chǔ)模塊,適于:根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息和/或硬件參數(shù)信息存儲(chǔ)至所述Zookeeper。
[0035]可選地,所述負(fù)載評(píng)價(jià)指標(biāo)信息包括下列至少之一:
[0036]中央處理器CPU使用率;
[0037]內(nèi)存使用率;
[0038]磁盤(pán)輸入/輸出使用率;
[0039]網(wǎng)卡帶寬占用;
[0040]請(qǐng)求平均訪問(wèn)時(shí)延。
[0041]可選地,所述存儲(chǔ)模塊還適于:根據(jù)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息,計(jì)算各個(gè)節(jié)點(diǎn)的負(fù)載因子;對(duì)所述各個(gè)節(jié)點(diǎn)的負(fù)載因子進(jìn)行歸一化處理,得到各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息;將所述各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息存儲(chǔ)于所述Zookeeper管理的高速緩沖存儲(chǔ)器Cache。
[0042]可選地,所述存儲(chǔ)模塊還適于:根據(jù)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的硬件參數(shù)信息,計(jì)算各個(gè)節(jié)點(diǎn)的性能參數(shù)值;將所述各個(gè)節(jié)點(diǎn)的性能參數(shù)值存儲(chǔ)于所述Zookeeper管理的Cache。
[0043]可選地,所述獲取模塊還適于:從所述Zookeeper管理的Cache中獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0044]可選地,所述裝置還包括刪除模塊,適于:當(dāng)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)發(fā)生故障時(shí),在所述Zookeeper中刪除該故障節(jié)點(diǎn)。
[0045]可選地,所述刪除模塊還適于:在所述Zook^per中刪除該故障節(jié)點(diǎn)的IP地址,并在所述Zookeeper管理的Cache中刪除該故障節(jié)點(diǎn)所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0046]可選地,所述分布式存儲(chǔ)系統(tǒng)為Cassandra系統(tǒng)。
[0047]依據(jù)本發(fā)明的技術(shù)方案,通過(guò)接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn),進(jìn)而獲取至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息,之后根據(jù)獲取的資源信息,從至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使客戶端接入目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。由此可見(jiàn),本發(fā)明可以從分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn),從而簡(jiǎn)化了客戶端對(duì)分布式存儲(chǔ)系統(tǒng)集群中節(jié)點(diǎn)的配置管理,解決了相關(guān)技術(shù)中通過(guò)客戶端的配置文件來(lái)管理分布式存儲(chǔ)系統(tǒng)集群中的節(jié)點(diǎn),增加客戶端管理節(jié)點(diǎn)的開(kāi)銷的問(wèn)題。并且,本發(fā)明進(jìn)一步根據(jù)至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息,從至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使客戶端接入目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作,實(shí)現(xiàn)了根據(jù)待訪問(wèn)節(jié)點(diǎn)的當(dāng)前負(fù)載情況靈活地選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作,保證了各節(jié)點(diǎn)負(fù)載均衡。綜上,本發(fā)明提供的技術(shù)方案可以簡(jiǎn)化客戶端對(duì)分布式存儲(chǔ)系統(tǒng)集群中節(jié)點(diǎn)的配置管理,同時(shí)能夠靈活地調(diào)整分布式存儲(chǔ)系統(tǒng)集群中各節(jié)點(diǎn)的訪問(wèn)請(qǐng)求量,保證了各節(jié)點(diǎn)負(fù)載均衡。
[0048]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
[0049]根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。
【專利附圖】
【附圖說(shuō)明】
[0050]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0051]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的節(jié)點(diǎn)訪問(wèn)方法的流程圖;
[0052]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的節(jié)點(diǎn)訪問(wèn)的架構(gòu)示意圖;
[0053]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的節(jié)點(diǎn)訪問(wèn)裝置的一種結(jié)構(gòu)示意圖;以及
[0054]圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的節(jié)點(diǎn)訪問(wèn)裝置的另一種結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0055]下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0056]為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種節(jié)點(diǎn)訪問(wèn)方法,圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的節(jié)點(diǎn)訪問(wèn)方法的流程圖。如圖1所示,該方法至少包括以下步驟S102至步驟S106。
[0057]步驟S102、接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)。
[0058]步驟S104、獲取至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息。
[0059]步驟S106、根據(jù)獲取的資源信息,從至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使客戶端接入目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。
[0060]依據(jù)本發(fā)明的技術(shù)方案,通過(guò)接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn),進(jìn)而獲取至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息,之后根據(jù)獲取的資源信息,從至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使客戶端接入目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。由此可見(jiàn),本發(fā)明可以從分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn),從而簡(jiǎn)化了客戶端對(duì)分布式存儲(chǔ)系統(tǒng)集群中節(jié)點(diǎn)的配置管理,解決了相關(guān)技術(shù)中通過(guò)客戶端的配置文件來(lái)管理分布式存儲(chǔ)系統(tǒng)集群中的節(jié)點(diǎn),增加客戶端管理節(jié)點(diǎn)的開(kāi)銷的問(wèn)題。并且,本發(fā)明進(jìn)一步根據(jù)至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息,從至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使客戶端接入目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作,實(shí)現(xiàn)了根據(jù)待訪問(wèn)節(jié)點(diǎn)的當(dāng)前負(fù)載情況靈活地選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作,保證了各節(jié)點(diǎn)負(fù)載均衡。綜上,本發(fā)明提供的技術(shù)方案可以簡(jiǎn)化客戶端對(duì)分布式存儲(chǔ)系統(tǒng)集群中節(jié)點(diǎn)的配置管理,同時(shí)能夠靈活地調(diào)整分布式存儲(chǔ)系統(tǒng)集群中各節(jié)點(diǎn)的訪問(wèn)請(qǐng)求量,保證了各節(jié)點(diǎn)負(fù)載均衡。
[0061]本發(fā)明實(shí)施例中的分布式存儲(chǔ)系統(tǒng)是一種分布式非關(guān)系型數(shù)據(jù)系統(tǒng),可以是Cassandra系統(tǒng),還可以是其他分布式非關(guān)系型數(shù)據(jù)系統(tǒng)。
[0062]本發(fā)明實(shí)施例提供的技術(shù)方案中,首先引入了 Zookeeper(協(xié)同工作系統(tǒng))進(jìn)行分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)列表的管理。Zookeeper是一個(gè)高效可靠的協(xié)同工作系統(tǒng),常常用來(lái)支撐leader (領(lǐng)導(dǎo)者)選舉、配置信息維護(hù)等分布式協(xié)同操作。例如在分布式的環(huán)境中,Zooke印er可以用來(lái)存儲(chǔ)一些配置信息,確保配置寫(xiě)入的一致性。分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)啟動(dòng)時(shí),將該節(jié)點(diǎn)的IP地址存儲(chǔ)至Zookeeper,并在Zookeeper的目錄樹(shù)中建立該節(jié)點(diǎn)與該節(jié)點(diǎn)的IP地址間的映射關(guān)系,即各節(jié)點(diǎn)實(shí)現(xiàn)向Zookeeper注冊(cè)各自的IP地址。同時(shí),各個(gè)節(jié)點(diǎn)會(huì)根據(jù)預(yù)設(shè)的時(shí)間周期,將其自身的負(fù)載評(píng)價(jià)指標(biāo)信息和/或硬件參數(shù)信息存儲(chǔ)至Zookeeper,即各個(gè)節(jié)點(diǎn)會(huì)定期向Zookeeper匯報(bào)其自身的負(fù)載評(píng)價(jià)指標(biāo)信息和/或硬件參數(shù)信息,當(dāng)然,硬件參數(shù)信息一般情況下不會(huì)發(fā)生變化。這里的負(fù)載評(píng)價(jià)指標(biāo)信息可以包括:CPU(Central Processing Unit,中央處理器)使用率、內(nèi)存使用率、磁盤(pán)輸入/輸出使用率、網(wǎng)卡帶寬占用、請(qǐng)求平均訪問(wèn)時(shí)延等信息。圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的節(jié)點(diǎn)訪問(wèn)的架構(gòu)示意圖,如圖2所示,以分布式存儲(chǔ)系統(tǒng)為Cassandra系統(tǒng)為例,Cassandra集群的各節(jié)點(diǎn)啟動(dòng)時(shí),向Zookeeper注冊(cè)各自的IP地址以及定期向Zookeeper匯報(bào)其自身的負(fù)載評(píng)價(jià)指標(biāo)信息和/或硬件參數(shù)信息。
[0063]其次,本發(fā)明還對(duì)Zookeeper進(jìn)行了外部封裝,如ΖΚ-Wrapper(包裝),并引入決策模塊,如圖2所示。該決策模塊用于周期性地根據(jù)Cassandra集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息,計(jì)算各個(gè)節(jié)點(diǎn)的負(fù)載因子,并對(duì)各個(gè)節(jié)點(diǎn)的負(fù)載因子進(jìn)行歸一化處理,得到各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息,從而當(dāng)接收到來(lái)自客戶端的、訪問(wèn)Cassandra存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求時(shí),決策模塊可以決策客戶端能夠訪問(wèn)的節(jié)點(diǎn)。以及,該該決策模塊還用于周期性地根據(jù)Cassandra集群的節(jié)點(diǎn)的硬件參數(shù)信息,計(jì)算各個(gè)節(jié)點(diǎn)的性能參數(shù)值,從而當(dāng)接收到來(lái)自客戶端的、訪問(wèn)Cassandra存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求時(shí),決策模塊可以決策客戶端能夠訪問(wèn)的節(jié)點(diǎn)。此外,決策模塊還可以綜合各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息以及各個(gè)節(jié)點(diǎn)的性能參數(shù)值來(lái)決策客戶端能夠訪問(wèn)的節(jié)點(diǎn)。進(jìn)一步地,將各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息以及各個(gè)節(jié)點(diǎn)的性能參數(shù)值存儲(chǔ)于Zookeeper管理的Cache (高速緩沖存儲(chǔ)器),數(shù)據(jù)讀取速度快。
[0064]基于上述的介紹,上文步驟S102至步驟S106中,當(dāng)接收到來(lái)自客戶端的、訪問(wèn)Cassandra存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求時(shí),從Zookeeper管理的節(jié)點(diǎn)列表中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn),并從Zookeeper管理的Cache中獲取至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息(即至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或性能參數(shù)值),進(jìn)而由決策模塊根據(jù)至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或性能參數(shù)值,從至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),并根據(jù)Zookeeper的目錄樹(shù)中節(jié)點(diǎn)與節(jié)點(diǎn)的IP地址間的映射關(guān)系查詢目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址,以使客戶端利用目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址接入目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。
[0065]如圖2所示,當(dāng)接收到來(lái)自客戶端的、訪問(wèn)Cassandra存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求(Access Requests)時(shí),Stepl (第一步)獲取目標(biāo)訪問(wèn)節(jié)點(diǎn),即從Zookeeper管理的節(jié)點(diǎn)列表中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn),并從Zookeeper管理的Cache中獲取至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或性能參數(shù)值,進(jìn)而由決策模塊根據(jù)至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或性能參數(shù)值,從至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn)。Step2(第二步)連接訪問(wèn)目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作,即根據(jù)Zookeeper的目錄樹(shù)中節(jié)點(diǎn)與節(jié)點(diǎn)的IP地址間的映射關(guān)系查詢目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址,以使客戶端利用目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址接入目標(biāo)訪問(wèn)節(jié)點(diǎn),通過(guò)thrift協(xié)議完成正常的讀與訪問(wèn)。
[0066]進(jìn)一步地,當(dāng)節(jié)點(diǎn)發(fā)生故障等事件而無(wú)法提供數(shù)據(jù)服務(wù)時(shí),Zookeeper會(huì)迅速自動(dòng)發(fā)現(xiàn)該節(jié)點(diǎn)已經(jīng)不可以訪問(wèn),進(jìn)而從其管理的節(jié)點(diǎn)列表中刪除該故障節(jié)點(diǎn)。例如,在Zookeeper中刪除該故障節(jié)點(diǎn)的IP地址,并在Zookeeper管理的Cache中刪除該故障節(jié)點(diǎn)所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0067]需要說(shuō)明的是,實(shí)際應(yīng)用中,上述所有可選實(shí)施方式可以采用結(jié)合的方式任意組合,形成本發(fā)明的可選實(shí)施例,在此不再一一贅述。
[0068]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種節(jié)點(diǎn)訪問(wèn)裝置,以實(shí)現(xiàn)上述節(jié)點(diǎn)訪問(wèn)方法。
[0069]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的節(jié)點(diǎn)訪問(wèn)裝置的一種結(jié)構(gòu)示意圖。參見(jiàn)圖3,該裝置至少包括:選擇模塊310、獲取模塊320以及訪問(wèn)模塊330。
[0070]現(xiàn)介紹本發(fā)明實(shí)施例的節(jié)點(diǎn)訪問(wèn)裝置的各組成或器件的功能以及各部分間的連接關(guān)系:
[0071]選擇模塊310,適于接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn);
[0072]獲取模塊320,與選擇模塊310相耦合,適于獲取至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的資源信息;
[0073]訪問(wèn)模塊330,與獲取模塊320相耦合,適于根據(jù)獲取的資源信息,從至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使客戶端接入目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。
[0074]圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的節(jié)點(diǎn)訪問(wèn)裝置的另一種結(jié)構(gòu)示意圖。如圖4所示,上述圖3展示裝置還可以包括映射建立模塊340,與訪問(wèn)模塊330相耦合,適于:分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)啟動(dòng)時(shí),將該節(jié)點(diǎn)的互聯(lián)網(wǎng)協(xié)議IP地址存儲(chǔ)至協(xié)同工作系統(tǒng)Zookeeper,并在Zookeeper的目錄樹(shù)中建立該節(jié)點(diǎn)與該節(jié)點(diǎn)的IP地址間的映射關(guān)系。
[0075]在一個(gè)實(shí)施例中,上述訪問(wèn)模塊330還適于:根據(jù)映射關(guān)系查詢目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址,以使客戶端利用目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址接入目標(biāo)訪問(wèn)節(jié)點(diǎn)。
[0076]在一個(gè)實(shí)施例中,資源信息可以包括:節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或節(jié)點(diǎn)的性能參數(shù)值。
[0077]在一個(gè)實(shí)施例中,上述裝置還可以包括存儲(chǔ)模塊350,與獲取模塊320相耦合,適于:根據(jù)預(yù)設(shè)的時(shí)間周期,將分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息和/或硬件參數(shù)信息存儲(chǔ)至Zookeeper。
[0078]在一個(gè)實(shí)施例中,負(fù)載評(píng)價(jià)指標(biāo)信息包括下列至少之一:
[0079]中央處理器CPU使用率;
[0080]內(nèi)存使用率;
[0081]磁盤(pán)輸入/輸出使用率;
[0082]網(wǎng)卡帶寬占用;
[0083]請(qǐng)求平均訪問(wèn)時(shí)延。
[0084]在一個(gè)實(shí)施例中,上述存儲(chǔ)模塊350還適于:根據(jù)分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息,計(jì)算各個(gè)節(jié)點(diǎn)的負(fù)載因子;對(duì)各個(gè)節(jié)點(diǎn)的負(fù)載因子進(jìn)行歸一化處理,得到各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息;將各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息存儲(chǔ)于Zookeeper管理的高速緩沖存儲(chǔ)器Cache。
[0085]在一個(gè)實(shí)施例中,上述存儲(chǔ)模塊350還適于:根據(jù)分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的硬件參數(shù)信息,計(jì)算各個(gè)節(jié)點(diǎn)的性能參數(shù)值;將各個(gè)節(jié)點(diǎn)的性能參數(shù)值存儲(chǔ)于Zookeeper管理的Cache。
[0086]在一個(gè)實(shí)施例中,上述獲取模塊320還適于:從Zookeeper管理的Cache中獲取至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0087]在一個(gè)實(shí)施例中,上述裝置還可以包括刪除模塊360,與映射建立模塊340相耦合,適于:當(dāng)分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)發(fā)生故障時(shí),在Zookeeper中刪除該故障節(jié)點(diǎn)。
[0088]在一個(gè)實(shí)施例中,上述刪除模塊360還適于:在Zookeeper中刪除該故障節(jié)點(diǎn)的IP地址,并在Zookeeper管理的Cache中刪除該故障節(jié)點(diǎn)所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0089]在一個(gè)實(shí)施例中,分布式存儲(chǔ)系統(tǒng)為Cassandra系統(tǒng)。
[0090]根據(jù)上述任意一個(gè)優(yōu)選實(shí)施例或多個(gè)優(yōu)選實(shí)施例的組合,本發(fā)明實(shí)施例能夠達(dá)到如下有益效果:
[0091]依據(jù)本發(fā)明的技術(shù)方案,通過(guò)接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn),進(jìn)而獲取至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息,之后根據(jù)獲取的資源信息,從至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使客戶端接入目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。由此可見(jiàn),本發(fā)明可以從分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn),從而簡(jiǎn)化了客戶端對(duì)分布式存儲(chǔ)系統(tǒng)集群中節(jié)點(diǎn)的配置管理,解決了相關(guān)技術(shù)中通過(guò)客戶端的配置文件來(lái)管理分布式存儲(chǔ)系統(tǒng)集群中的節(jié)點(diǎn),增加客戶端管理節(jié)點(diǎn)的開(kāi)銷的問(wèn)題。并且,本發(fā)明進(jìn)一步根據(jù)至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息,從至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使客戶端接入目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作,實(shí)現(xiàn)了根據(jù)待訪問(wèn)節(jié)點(diǎn)的當(dāng)前負(fù)載情況靈活地選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作,保證了各節(jié)點(diǎn)負(fù)載均衡。綜上,本發(fā)明提供的技術(shù)方案可以簡(jiǎn)化客戶端對(duì)分布式存儲(chǔ)系統(tǒng)集群中節(jié)點(diǎn)的配置管理,同時(shí)能夠靈活地調(diào)整分布式存儲(chǔ)系統(tǒng)集群中各節(jié)點(diǎn)的訪問(wèn)請(qǐng)求量,保證了各節(jié)點(diǎn)負(fù)載均衡。
[0092]在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。
[0093]類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書(shū)由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0094]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
[0095]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
[0096]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的節(jié)點(diǎn)訪問(wèn)裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0097]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0098]至此,本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識(shí)到,雖然本文已詳盡示出和描述了本發(fā)明的多個(gè)示例性實(shí)施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開(kāi)的內(nèi)容直接確定或推導(dǎo)出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應(yīng)被理解和認(rèn)定為覆蓋了所有這些其他變型或修改。
[0099]本發(fā)明還公開(kāi)了 Al、一種節(jié)點(diǎn)訪問(wèn)方法,包括:
[0100]接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從所述分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn);
[0101]獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息;
[0102]根據(jù)獲取的所述資源信息,從所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使所述客戶端接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。
[0103]A2、根據(jù)Al所述的方法,其中,還包括:
[0104]所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)啟動(dòng)時(shí),將該節(jié)點(diǎn)的互聯(lián)網(wǎng)協(xié)議IP地址存儲(chǔ)至協(xié)同工作系統(tǒng)Zookeeper,并在所述Zookeeper的目錄樹(shù)中建立該節(jié)點(diǎn)與該節(jié)點(diǎn)的IP地址間的映射關(guān)系。
[0105]A3、根據(jù)A2所述的方法,其中,
[0106]從所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn)之后,還包括:
[0107]根據(jù)所述映射關(guān)系查詢所述目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址;
[0108]以使所述客戶端接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn),包括:
[0109]以使所述客戶端利用所述目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn)。
[0110]A4、根據(jù)Al至A3任一項(xiàng)所述的方法,其中,所述資源信息包括:節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或節(jié)點(diǎn)的性能參數(shù)值。
[0111]A5、根據(jù)Al至A4任一項(xiàng)所述的方法,其中,還包括:
[0112]根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息和/或硬件參數(shù)信息存儲(chǔ)至所述Zookeeper。
[0113]A6、根據(jù)A5所述的方法,其中,所述負(fù)載評(píng)價(jià)指標(biāo)信息包括下列至少之一:
[0114]中央處理器CPU使用率;
[0115]內(nèi)存使用率;
[0116]磁盤(pán)輸入/輸出使用率;
[0117]網(wǎng)卡帶寬占用;
[0118]請(qǐng)求平均訪問(wèn)時(shí)延。
[0119]A7、根據(jù)A5或A6所述的方法,其中,根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息存儲(chǔ)至所述Zookeeper之后,還包括:
[0120]根據(jù)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息,計(jì)算各個(gè)節(jié)點(diǎn)的負(fù)載因子;
[0121]對(duì)所述各個(gè)節(jié)點(diǎn)的負(fù)載因子進(jìn)行歸一化處理,得到各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息;
[0122]將所述各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息存儲(chǔ)于所述Zookeeper管理的高速緩沖存儲(chǔ)器Cache。
[0123]AS、根據(jù)A5或A6所述的方法,其中,根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的硬件參數(shù)信息存儲(chǔ)至所述Zookeeper之后,還包括:
[0124]根據(jù)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的硬件參數(shù)信息,計(jì)算各個(gè)節(jié)點(diǎn)的性能參數(shù)值;
[0125]將所述各個(gè)節(jié)點(diǎn)的性能參數(shù)值存儲(chǔ)于所述Zookeeper管理的Cache。
[0126]A9、根據(jù)Al至AS任一項(xiàng)所述的方法,其中,獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的資源信息,包括:
[0127]從所述Zookeeper管理的Cache中獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0128]A10、根據(jù)Al至A9任一項(xiàng)所述的方法,其中,還包括:
[0129]當(dāng)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)發(fā)生故障時(shí),在所述Zookeeper中刪除該故障節(jié)點(diǎn)。
[0130]All、根據(jù)AlO所述的方法,其中,在所述Zooke印er中刪除該故障節(jié)點(diǎn),包括:
[0131]在所述Zookeeper中刪除該故障節(jié)點(diǎn)的IP地址,并在所述Zookeeper管理的Cache中刪除該故障節(jié)點(diǎn)所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0132]A12、根據(jù)Al至All任一項(xiàng)所述的方法,其中,所述分布式存儲(chǔ)系統(tǒng)為Cassandra系統(tǒng)。
[0133]B13、一種節(jié)點(diǎn)訪問(wèn)裝置,包括:
[0134]選擇模塊,適于接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從所述分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn);
[0135]獲取模塊,適于獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的資源信息;
[0136]訪問(wèn)模塊,適于根據(jù)獲取的所述資源信息,從所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使所述客戶端接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。
[0137]B14、根據(jù)B13所述的裝置,其中,還包括映射建立模塊,適于:
[0138]所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)啟動(dòng)時(shí),將該節(jié)點(diǎn)的互聯(lián)網(wǎng)協(xié)議IP地址存儲(chǔ)至協(xié)同工作系統(tǒng)Zookeeper,并在所述Zookeeper的目錄樹(shù)中建立該節(jié)點(diǎn)與該節(jié)點(diǎn)的IP地址間的映射關(guān)系。
[0139]B15、根據(jù)B14所述的裝置,其中,所述訪問(wèn)模塊還適于:
[0140]根據(jù)所述映射關(guān)系查詢所述目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址,以使所述客戶端利用所述目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn)。
[0141]B16、根據(jù)B13至B15任一項(xiàng)所述的裝置,其中,所述資源信息包括:節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或節(jié)點(diǎn)的性能參數(shù)值。
[0142]B17、根據(jù)B13至B16任一項(xiàng)所述的裝置,其中,還包括存儲(chǔ)模塊,適于:
[0143]根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息和/或硬件參數(shù)信息存儲(chǔ)至所述Zookeeper。
[0144]B18、根據(jù)B17所述的裝置,其中,所述負(fù)載評(píng)價(jià)指標(biāo)信息包括下列至少之一:
[0145]中央處理器CPU使用率;
[0146]內(nèi)存使用率;
[0147]磁盤(pán)輸入/輸出使用率;
[0148]網(wǎng)卡帶寬占用;
[0149]請(qǐng)求平均訪問(wèn)時(shí)延。
[0150]B19、根據(jù)B17或B18所述的裝置,其中,所述存儲(chǔ)模塊還適于:
[0151]根據(jù)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息,計(jì)算各個(gè)節(jié)點(diǎn)的負(fù)載因子;
[0152]對(duì)所述各個(gè)節(jié)點(diǎn)的負(fù)載因子進(jìn)行歸一化處理,得到各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息;
[0153]將所述各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息存儲(chǔ)于所述Zookeeper管理的高速緩沖存儲(chǔ)器Cache。
[0154]B20、根據(jù)B17或B18所述的裝置,其中,所述存儲(chǔ)模塊還適于:
[0155]根據(jù)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的硬件參數(shù)信息,計(jì)算各個(gè)節(jié)點(diǎn)的性能參數(shù)值;
[0156]將所述各個(gè)節(jié)點(diǎn)的性能參數(shù)值存儲(chǔ)于所述Zookeeper管理的Cache。
[0157]B21、根據(jù)B13至B20任一項(xiàng)所述的裝置,其中,所述獲取模塊還適于:
[0158]從所述Zookeeper管理的Cache中獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0159]B22、根據(jù)B13至B21任一項(xiàng)所述的裝置,其中,還包括刪除模塊,適于:
[0160]當(dāng)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)發(fā)生故障時(shí),在所述Zookeeper中刪除該故障節(jié)點(diǎn)。
[0161]B23、根據(jù)B22所述的裝置,其中,所述刪除模塊還適于:
[0162]在所述Zookeeper中刪除該故障節(jié)點(diǎn)的IP地址,并在所述Zookeeper管理的Cache中刪除該故障節(jié)點(diǎn)所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
[0163]B24、根據(jù)B13至B23任一項(xiàng)所述的裝置,其中,所述分布式存儲(chǔ)系統(tǒng)為Cassandra系統(tǒng)。
【權(quán)利要求】
1.一種節(jié)點(diǎn)訪問(wèn)方法,包括: 接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從所述分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn); 獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)的資源信息; 根據(jù)獲取的所述資源信息,從所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使所述客戶端接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。
2.根據(jù)權(quán)利要求1所述的方法,其中,還包括: 所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)啟動(dòng)時(shí),將該節(jié)點(diǎn)的互聯(lián)網(wǎng)協(xié)議IP地址存儲(chǔ)至協(xié)同工作系統(tǒng)Zookeeper,并在所述Zookeeper的目錄樹(shù)中建立該節(jié)點(diǎn)與該節(jié)點(diǎn)的IP地址間的映射關(guān)系。
3.根據(jù)權(quán)利要求2所述的方法,其中, 從所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn)之后,還包括: 根據(jù)所述映射關(guān)系查詢所述目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址; 以使所述客戶端接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn),包括: 以使所述客戶端利用所述目標(biāo)訪問(wèn)節(jié)點(diǎn)的IP地址接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn)。
4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其中,所述資源信息包括:節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或節(jié)點(diǎn)的性能參數(shù)值。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其中,還包括: 根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息和/或硬件參數(shù)信息存儲(chǔ)至所述Zookeeper。
6.根據(jù)權(quán)利要求5所述的方法,其中,所述負(fù)載評(píng)價(jià)指標(biāo)信息包括下列至少之一: 中央處理器CPU使用率; 內(nèi)存使用率; 磁盤(pán)輸入/輸出使用率; 網(wǎng)卡帶寬占用; 請(qǐng)求平均訪問(wèn)時(shí)延。
7.根據(jù)權(quán)利要求5或6所述的方法,其中,根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息存儲(chǔ)至所述Zookeeper之后,還包括: 根據(jù)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的負(fù)載評(píng)價(jià)指標(biāo)信息,計(jì)算各個(gè)節(jié)點(diǎn)的負(fù)載因子; 對(duì)所述各個(gè)節(jié)點(diǎn)的負(fù)載因子進(jìn)行歸一化處理,得到各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息; 將所述各個(gè)節(jié)點(diǎn)所允許的訪問(wèn)流量的信息存儲(chǔ)于所述Zookeeper管理的高速緩沖存儲(chǔ)器Cache。
8.根據(jù)權(quán)利要求5或6所述的方法,其中,根據(jù)預(yù)設(shè)的時(shí)間周期,將所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的硬件參數(shù)信息存儲(chǔ)至所述Zookeeper之后,還包括: 根據(jù)所述分布式存儲(chǔ)系統(tǒng)集群的節(jié)點(diǎn)的硬件參數(shù)信息,計(jì)算各個(gè)節(jié)點(diǎn)的性能參數(shù)值; 將所述各個(gè)節(jié)點(diǎn)的性能參數(shù)值存儲(chǔ)于所述Zookeeper管理的Cache。
9.根據(jù)權(quán)利要求1至8任一項(xiàng)所述的方法,其中,獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的資源信息,包括: 從所述Zookeeper管理的Cache中獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的訪問(wèn)流量的信息和/或性能參數(shù)值。
10.一種節(jié)點(diǎn)訪問(wèn)裝置,包括: 選擇模塊,適于接收來(lái)自客戶端的、訪問(wèn)分布式存儲(chǔ)系統(tǒng)存儲(chǔ)空間上的數(shù)據(jù)的訪問(wèn)請(qǐng)求,從所述分布式存儲(chǔ)系統(tǒng)集群的多個(gè)節(jié)點(diǎn)中選擇能夠提供待訪問(wèn)數(shù)據(jù)的至少兩個(gè)待訪問(wèn)節(jié)點(diǎn); 獲取模塊,適于獲取所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)各自所允許的資源信息; 訪問(wèn)模塊,適于根據(jù)獲取的所述資源信息,從所述至少兩個(gè)待訪問(wèn)節(jié)點(diǎn)中選擇目標(biāo)訪問(wèn)節(jié)點(diǎn),以使所述客戶端接入所述目標(biāo)訪問(wèn)節(jié)點(diǎn),進(jìn)行訪問(wèn)操作。
【文檔編號(hào)】H04L29/06GK104202434SQ201410509449
【公開(kāi)日】2014年12月10日 申請(qǐng)日期:2014年9月28日 優(yōu)先權(quán)日:2014年9月28日
【發(fā)明者】王 鋒 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司