專利名稱:用于分布式數(shù)據(jù)存儲系統(tǒng)的設(shè)備、系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,具體涉及一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備及方法,以及一種用于分布式數(shù)據(jù)存儲的數(shù)據(jù)管理系統(tǒng)。
背景技術(shù):
目前數(shù)據(jù)庫的種類很多,比較流行的一種是基于分布式文件存儲的數(shù)據(jù)庫,所謂基于分布式文件存儲的數(shù)據(jù)庫,主要是指為了保證數(shù)據(jù)的可靠性和可擴(kuò)展性,在多個(gè)數(shù)據(jù)服務(wù)器上分別存儲數(shù)據(jù),將多個(gè)數(shù)據(jù)服務(wù)器共同看成一個(gè)完整的數(shù)據(jù)庫,共同完成數(shù)據(jù)的寫入和讀取。因?yàn)閿?shù)據(jù)庫的具體形式有很多,因此基于分布式文件存儲的數(shù)據(jù)庫也有很多。下面僅以常用的一種基于分布式文件存儲的數(shù)據(jù)庫MongoDB為例進(jìn)行說明。MongoDB (Data Base,數(shù)據(jù)庫)是介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。因此,在很多涉及到數(shù)據(jù)庫的業(yè)務(wù)都使用了 MongoDB0在MongoDB中本身有一個(gè)角色稱作Mongos,負(fù)責(zé)接收所有客戶端的數(shù)據(jù)訪問請求,還有一個(gè)角色稱作Mongod,負(fù)責(zé)保存實(shí)際的數(shù)據(jù)。為了數(shù)據(jù)可靠性,同一份數(shù)據(jù)會保存到多個(gè)Mongod服務(wù)器(即數(shù)據(jù)服務(wù)器的一種)上,多個(gè)Mongod稱作一個(gè)副本集replicaset,彼此之間保證數(shù)據(jù)一致。當(dāng)web服務(wù)器獲取數(shù)據(jù)時(shí),向mongos發(fā)起請求,mongos會在replicaset的多個(gè)mongod服務(wù)器中,隨機(jī)選取一臺mongod服務(wù)器讀取數(shù)據(jù),然后將數(shù)據(jù)返回給web服務(wù)器。在現(xiàn)有的技術(shù)方案中,采用的是隨機(jī)選擇的方式,即所有web服務(wù)器獲取數(shù)據(jù)的請求被均勻的分散到所有mongod服務(wù)器上。在其他基于分布式文件存儲的數(shù)據(jù)庫中,也與MongoDB類似,多是采用隨機(jī)方式選取一臺數(shù)據(jù)服務(wù)器讀取數(shù)據(jù)。上述這種隨機(jī)選擇一臺數(shù)據(jù)服務(wù)器讀取數(shù)據(jù)的方式,缺少靈活實(shí)用性,尤其是當(dāng)數(shù)據(jù)服務(wù)器數(shù)量較多、部署環(huán)境較復(fù)雜時(shí),隨機(jī)選擇的方式更是容易導(dǎo)致從數(shù)據(jù)服務(wù)器讀取數(shù)據(jù)的效率較低。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的用于分布式數(shù)據(jù)存儲的數(shù)據(jù)管理設(shè)備和相應(yīng)的用于分布式數(shù)據(jù)存儲的數(shù)據(jù)讀取方法。依據(jù)本發(fā)明的一個(gè)方面,提供了一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)數(shù)據(jù)服務(wù)器,該數(shù)據(jù)管理設(shè)備包括監(jiān)控器,被配置為至少獲知多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息;數(shù)據(jù)接口,被配置為接收來自數(shù)據(jù)請求方的數(shù)據(jù)請求,并將與數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)返回至數(shù)據(jù)請求方;選擇器,被配置為至少基于監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇多個(gè)數(shù)據(jù)服務(wù)器之一來處理數(shù)據(jù)請求,其中多個(gè)數(shù)據(jù)服務(wù)器均存儲數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù);以及數(shù)據(jù)讀取器,被配置為從選擇器所選擇的數(shù)據(jù)服務(wù)器讀取被請求數(shù)據(jù),并將被請求數(shù)據(jù)發(fā)送給所述數(shù)據(jù)接口。可選的,監(jiān)控器包括檢測模塊,被配置為向多個(gè)數(shù)據(jù)服務(wù)器分別發(fā)送查詢請求,以及接收多個(gè)數(shù)據(jù)服務(wù)器各自返回的響應(yīng)數(shù)據(jù),響應(yīng)數(shù)據(jù)中至少包括對應(yīng)的數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息;延遲模塊,被配置為根據(jù)所述多個(gè)數(shù)據(jù)服務(wù)器各自對應(yīng)的查詢請求的發(fā)送時(shí)間和響應(yīng)數(shù)據(jù)的接收時(shí)間,獲得多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息??蛇x的,如果數(shù)據(jù)讀取器從選擇器選擇的數(shù)據(jù)服務(wù)器讀取被請求數(shù)據(jù)失敗,則選擇器還根據(jù)多個(gè)數(shù)據(jù)服務(wù)器中的其他數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇其他數(shù)據(jù)服務(wù)器當(dāng)中的另一個(gè)數(shù)據(jù)服務(wù)器來處理數(shù)據(jù)請求;以及數(shù)據(jù)讀取器還從另一個(gè)數(shù)據(jù)服務(wù)器讀取與數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)。可選的,選擇器包括第一選擇模塊,被配置為至少基于監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足負(fù)載狀態(tài)允許條件的第一數(shù)據(jù)服務(wù)器集合;在第一數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息,選 擇網(wǎng)絡(luò)延遲最低的數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求??蛇x的,選擇器包括第二選擇模塊,被配置為至少基于監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息和預(yù)設(shè)的網(wǎng)絡(luò)延遲允許條件,選擇滿足網(wǎng)絡(luò)延遲允許條件的第二數(shù)據(jù)服務(wù)器集合;在第二數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息,選擇負(fù)載最低的數(shù)據(jù)服務(wù)器處理所述數(shù)據(jù)請求??蛇x的,數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息包括下述信息中的一種或多種數(shù)據(jù)服務(wù)器現(xiàn)有的并發(fā)連接數(shù);數(shù)據(jù)服務(wù)器的CPU負(fù)載指標(biāo);數(shù)據(jù)服務(wù)器的磁盤負(fù)載指標(biāo)。依據(jù)本發(fā)明的另一個(gè)方面,提供了一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理方法,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)數(shù)據(jù)服務(wù)器,該數(shù)據(jù)管理方法包括至少獲知多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息;接收來自數(shù)據(jù)請求方的數(shù)據(jù)請求;至少基于所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇多個(gè)數(shù)據(jù)服務(wù)器之一來處理數(shù)據(jù)請求,其中,多個(gè)數(shù)據(jù)服務(wù)器均存儲所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù);從所選擇的數(shù)據(jù)服務(wù)器讀取被請求數(shù)據(jù);以及將被請求數(shù)據(jù)返回至數(shù)據(jù)請求方。依據(jù)本發(fā)明的又一方面,提供了一種用于分布式數(shù)據(jù)存儲的數(shù)據(jù)管理系統(tǒng),包括根據(jù)本發(fā)明的數(shù)據(jù)管理設(shè)備,以及多個(gè)數(shù)據(jù)服務(wù)器,所述多個(gè)數(shù)據(jù)服務(wù)器均存儲有數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)。依據(jù)本發(fā)明的再一方面,提供了一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)Mongod服務(wù)器,該數(shù)據(jù)管理設(shè)備包括Mongos裝置,所述Mongos裝置具體包括監(jiān)控器,被配置為至少獲知分布在至少兩個(gè)機(jī)房的多個(gè)Mongod服務(wù)器各自的網(wǎng)絡(luò)延遲信息和負(fù)載狀態(tài)信息;數(shù)據(jù)接口,被配置為接收來自應(yīng)用服務(wù)器的數(shù)據(jù)請求,并將與數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)返回至應(yīng)用數(shù)據(jù)服務(wù)器;選擇器,被配置為至少基于監(jiān)控器所獲知的分布在至少兩個(gè)機(jī)房的多個(gè)Mongod服務(wù)器各自的網(wǎng)絡(luò)延遲信息和負(fù)載狀態(tài)信息,選擇多個(gè)Mongod服務(wù)器之一來處理數(shù)據(jù)請求,多個(gè)Mongod服務(wù)器均存儲所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù);以及數(shù)據(jù)讀取器,被配置為從選擇器選擇的Mongod服務(wù)器讀取被請求數(shù)據(jù),并將所述被請求數(shù)據(jù)發(fā)送給所述數(shù)據(jù)接口。依據(jù)本發(fā)明的又一方面,提供了一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)數(shù)據(jù)服務(wù)器,該數(shù)據(jù)管理設(shè)備包括監(jiān)控器,被配置為至少獲知所述多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和物理位置標(biāo)簽;數(shù)據(jù)接口,被配置為接收來自數(shù)據(jù)請求方的數(shù)據(jù)請求,并將與所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)返回至所述數(shù)據(jù)請求方;選擇器,被配置為至少基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和物理位置標(biāo)簽,選擇所述多個(gè)數(shù)據(jù)服務(wù)器之一來處理所述數(shù)據(jù)請求,其中所述多個(gè)數(shù)據(jù)服務(wù)器均存儲所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù);數(shù)據(jù)讀取器,被配置為從所述選擇器所選擇的數(shù)據(jù)服務(wù)器讀取所述被請求數(shù)據(jù),并將所述被請求數(shù)據(jù)發(fā)送給所述數(shù)據(jù)接口??蛇x的,所述選擇器包括第三選擇模塊,被配置為至少基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足所述負(fù)載狀態(tài)允許條件的第三數(shù)據(jù)服務(wù)器集合;在所述第三數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽,選擇特定機(jī)房內(nèi)部的數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求??蛇x的,所述選擇器包括第四選擇模塊,被配置為至少基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的物理位置標(biāo)簽,選擇處于特定機(jī)房內(nèi)部的第四數(shù)據(jù)服務(wù)器集合;在所述第四數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息,選擇負(fù)載最低的數(shù) 據(jù)服務(wù)器來處理所述數(shù)據(jù)請求??蛇x的,所述監(jiān)控器,被配置為還獲知所述多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息;所述選擇器,具體被配置為基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息、網(wǎng)絡(luò)延遲信息和物理位置標(biāo)簽,選擇所述多個(gè)數(shù)據(jù)服務(wù)器之一來處理所述數(shù)據(jù)請求,其中所述多個(gè)數(shù)據(jù)服務(wù)器均存儲所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)。可選的,所述選擇器包括第五選擇模塊,被配置為至少基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的物理位置標(biāo)簽,選擇處于特定機(jī)房內(nèi)部的第五數(shù)據(jù)服務(wù)器集合;在所述第五數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息以及預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足所述負(fù)載狀態(tài)允許條件的第五數(shù)據(jù)服務(wù)器子集合;在所述第五數(shù)據(jù)服務(wù)器子集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息,選擇網(wǎng)絡(luò)延遲最低的數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求??蛇x的,所述選擇器包括第六選擇模塊,被配置為至少基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的物理位置標(biāo)簽,選擇處于特定機(jī)房內(nèi)部的第六數(shù)據(jù)服務(wù)器集合;在所述第六數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息以及預(yù)設(shè)的網(wǎng)絡(luò)延遲允許條件,選擇滿足所述網(wǎng)絡(luò)延遲允許條件的第六數(shù)據(jù)服務(wù)器子集合;在所述第六數(shù)據(jù)服務(wù)器子集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息,選擇負(fù)載最低的數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求??蛇x的,所述選擇器包括第七選擇模塊,被配置為至少基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足所述負(fù)載狀態(tài)允許條件的第七數(shù)據(jù)服務(wù)器集合;在所述第七數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息和預(yù)設(shè)的網(wǎng)絡(luò)延遲允許條件,選擇滿足所述網(wǎng)絡(luò)延遲允許條件的第七數(shù)據(jù)服務(wù)器子集合;在所述第七數(shù)據(jù)服務(wù)器子集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽,選擇處于特定機(jī)房內(nèi)部的數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求??蛇x的,所述選擇器包括第八選擇模塊,被配置為至少基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息和預(yù)設(shè)的網(wǎng)絡(luò)延遲允許條件,選擇滿足所述網(wǎng)絡(luò)延遲允許條件的第八數(shù)據(jù)服務(wù)器集合;在所述第八數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息和預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足所述負(fù)載狀態(tài)允許條件的第八數(shù)據(jù)服務(wù)器子集合;在所述第八數(shù)據(jù)服務(wù)器子集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽,選擇處于特定機(jī)房內(nèi)部的數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求??蛇x的,所述特定機(jī)房具體是下述機(jī)房中的一種本地機(jī)房,或,基于業(yè)務(wù)需要指定某一物理位置的機(jī)房??蛇x的,所述監(jiān)控器包括檢測模塊,被配置為向所述多個(gè)數(shù)據(jù)服務(wù)器分別發(fā)送查詢請求,以及接收所述多個(gè)數(shù)據(jù)服務(wù)器各自返回的響應(yīng)數(shù)據(jù),所述響應(yīng)數(shù)據(jù)中至少包括對應(yīng)的數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息和對應(yīng)的數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽。依據(jù)本發(fā)明的又一方面,提供了一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理方法,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)數(shù)據(jù)服務(wù)器,所述數(shù)據(jù)管理方法包括至少獲知所述多個(gè)`數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和物理位置標(biāo)簽;接收來自數(shù)據(jù)請求方的數(shù)據(jù)請求;至少基于所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和物理位置標(biāo)簽,選擇所述多個(gè)數(shù)據(jù)服務(wù)器之一來處理所述數(shù)據(jù)請求,其中所述多個(gè)數(shù)據(jù)服務(wù)器均存儲所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù);從所述選擇的數(shù)據(jù)服務(wù)器讀取所述被請求數(shù)據(jù);以及將所述被請求數(shù)據(jù)返回至所述數(shù)據(jù)請求方??蛇x的,所述至少基于所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和物理位置標(biāo)簽,選擇所述多個(gè)數(shù)據(jù)服務(wù)器之一來處理所述數(shù)據(jù)請求包括基于所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息、網(wǎng)絡(luò)延遲信息和物理位置標(biāo)簽,選擇所述多個(gè)數(shù)據(jù)服務(wù)器之一來處理所述數(shù)據(jù)請求。依據(jù)本發(fā)明的又一方面,提供了一種用于分布式數(shù)據(jù)存儲的數(shù)據(jù)管理系統(tǒng),包括根據(jù)本發(fā)明的數(shù)據(jù)管理設(shè)備,以及多個(gè)數(shù)據(jù)服務(wù)器,多個(gè)數(shù)據(jù)服務(wù)器均存儲有數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)。依據(jù)本發(fā)明的又一方面,提供了一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備,該分布式數(shù)據(jù)存儲系統(tǒng)包括多Mongod服務(wù)器,該數(shù)據(jù)管理設(shè)備包括Mongos裝置,所述Mongos裝置具體包括監(jiān)控器,被配置為至少獲知分布在至少兩個(gè)機(jī)房的多個(gè)Mongod服務(wù)器各自的負(fù)載狀態(tài)信息和物理位置標(biāo)簽;數(shù)據(jù)接口,被配置為接收來自應(yīng)用服務(wù)器的數(shù)據(jù)請求,并將與所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)返回至所述應(yīng)用數(shù)據(jù)服務(wù)器;選擇器,被配置為至少基于所獲知的分布在至少兩個(gè)機(jī)房的多個(gè)Mongod服務(wù)器各自的負(fù)載狀態(tài)信息和物理位置標(biāo)簽,選擇所述多個(gè)Mongod服務(wù)器之一來處理所述數(shù)據(jù)請求,所述多個(gè)Mongod服務(wù)器均存儲所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù);數(shù)據(jù)讀取器,被配置為從所述選擇器選擇的Mongod服務(wù)器讀取所述被請求數(shù)據(jù),并將所述被請求數(shù)據(jù)發(fā)送給所述數(shù)據(jù)接口。根據(jù)本發(fā)明的用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備、方法及系統(tǒng)可以至少根據(jù)負(fù)載情況和網(wǎng)絡(luò)延遲情況,或者負(fù)載情況和物理位置標(biāo)簽,或者負(fù)載情況、網(wǎng)絡(luò)延遲情況以及物理位置標(biāo)簽,有針對性的選擇合適的數(shù)據(jù)服務(wù)器,由此解決了現(xiàn)有隨機(jī)選擇方式的盲目性,取得了提高數(shù)據(jù)庫數(shù)據(jù)讀取效率的有益效果。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式
。
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號表示相同的部件。在附圖中圖I示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于分布式數(shù)據(jù)存儲的數(shù)據(jù)管理系統(tǒng)示意圖;圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備;圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理方法的不意圖;以及圖4示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理方法的示意圖?!?br>
具體實(shí)施例方式下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。請參閱圖1,其為根據(jù)本發(fā)明一個(gè)實(shí)施例的用于分布式數(shù)據(jù)存儲的數(shù)據(jù)管理系統(tǒng)示意圖。從圖中可以看出,該系統(tǒng)包括用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備100和多個(gè)數(shù)據(jù)服務(wù)器,即該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)數(shù)據(jù)服務(wù)器,比如第一數(shù)據(jù)服務(wù)器302、第二數(shù)據(jù)服務(wù)器304、第三數(shù)據(jù)服務(wù)器306以及第四數(shù)據(jù)服務(wù)器308,需要說明的是,上述多個(gè)數(shù)據(jù)服務(wù)器屬于一個(gè)數(shù)據(jù)服務(wù)器集群,該集群中的具體數(shù)據(jù)服務(wù)器數(shù)量并沒有限制,本發(fā)明只是示例性的給出四個(gè)數(shù)據(jù)服務(wù)器。數(shù)據(jù)請求方400通過數(shù)據(jù)管理設(shè)備100從某個(gè)數(shù)據(jù)服務(wù)器獲取被請求數(shù)據(jù)。數(shù)據(jù)管理設(shè)備100具體包括監(jiān)控器102、數(shù)據(jù)接口 104、選擇器106以及數(shù)據(jù)讀取器108。下面將分別詳細(xì)介紹每一個(gè)組成部分。監(jiān)控器102有多種可以單獨(dú)應(yīng)用、也可以任意組合應(yīng)用的具體實(shí)現(xiàn)方案在一個(gè)實(shí)施例中,監(jiān)控器102獲取多個(gè)數(shù)據(jù)服務(wù)器(302-304)各自的負(fù)載狀態(tài)信
肩、O例如,監(jiān)控器102可以包括檢測模塊,檢測模塊向多個(gè)數(shù)據(jù)服務(wù)器分別發(fā)送查詢請求,并且接收數(shù)據(jù)服務(wù)器(302-304)各自返回的響應(yīng)數(shù)據(jù)。響應(yīng)數(shù)據(jù)中至少包括對應(yīng)的數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息。通過該檢測模塊,使得監(jiān)控器102可以獲知數(shù)據(jù)服務(wù)器(302-304)各自的負(fù)載狀態(tài)信息。每個(gè)數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息包括但不限于下述信息中的一種或多種數(shù)據(jù)服務(wù)器現(xiàn)有的并發(fā)連接數(shù);數(shù)據(jù)服務(wù)器的CPU (Central ProcessingUnit,中央處理單元)負(fù)載指標(biāo),比如CPU空閑狀況的百分比率;數(shù)據(jù)服務(wù)器的磁盤負(fù)載指標(biāo),比如 io (input output,輸入輸出)、磁盤操作的 tps (Transactions Per Second,每秒寫入讀取的數(shù)據(jù)量)。例如,檢測模塊可以每隔一定時(shí)間間隔,比如10秒向各數(shù)據(jù)服務(wù)器發(fā)送一次心跳請求,獲取每個(gè)數(shù)據(jù)服務(wù)器的狀態(tài)。心跳請求可以理解為是查詢請求的一種,具體而言,是發(fā)送一個(gè)數(shù)據(jù)包給每個(gè)數(shù)據(jù)服務(wù)器,每個(gè)服務(wù)器收到心跳請求后,都會給檢測模塊回復(fù)一個(gè)響應(yīng)的數(shù)據(jù)包,在該響應(yīng)的數(shù)據(jù)包中記錄了該數(shù)據(jù)服務(wù)器上現(xiàn)有的負(fù)載狀態(tài)信息。可選的,監(jiān)控器102也可以不向各數(shù)據(jù)服務(wù)器發(fā)查詢請求,而是每隔一定時(shí)間間隔,各數(shù)據(jù)服務(wù)器主動上報(bào)各自的負(fù)載狀態(tài)信息。在另一實(shí)施例中,監(jiān)控器102還可以獲知多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息。例如,監(jiān)控器102包括檢測模塊和延遲模塊。檢測模塊為向多個(gè)數(shù)據(jù)服務(wù)器(302-304)發(fā)送查詢請求,以及接收各數(shù)據(jù)服務(wù)器(302-304)返回的響應(yīng)數(shù)據(jù)。延遲模塊根據(jù)檢測模塊發(fā)送查詢請求的發(fā)送時(shí)間和檢測模塊接收到響應(yīng)數(shù)據(jù)的接收時(shí)間,計(jì)算數(shù)據(jù)服務(wù)器(302-304 )各自的網(wǎng)絡(luò)延遲信息。具體而言,檢測模塊會記錄向每個(gè)數(shù)據(jù)服務(wù)器發(fā)送查詢請求的發(fā)送時(shí)間,也會記錄響應(yīng)數(shù)據(jù)的接收時(shí)間,因此,延遲模塊就可以根據(jù)檢測模 塊提供的針對某個(gè)數(shù)據(jù)服務(wù)器的查詢請求發(fā)送時(shí)間和響應(yīng)數(shù)據(jù)接收時(shí)間獲得數(shù)據(jù)包的網(wǎng)絡(luò)延遲時(shí)間,進(jìn)而獲得每個(gè)數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息??蛇x的,也可以由各數(shù)據(jù)服務(wù)器主動向監(jiān)控器102發(fā)送測試的數(shù)據(jù)包,然后監(jiān)控器102向各數(shù)據(jù)服務(wù)器返回響應(yīng)的數(shù)據(jù)包,進(jìn)而,各數(shù)據(jù)服務(wù)器根據(jù)測試數(shù)據(jù)包的發(fā)送時(shí)間和監(jiān)控器102響應(yīng)的數(shù)據(jù)包的接收時(shí)間計(jì)算自己的網(wǎng)絡(luò)延遲時(shí)間,并將各自的網(wǎng)絡(luò)延遲時(shí)間上報(bào)至監(jiān)控器102。在又一個(gè)實(shí)施例中,監(jiān)控器102還可以獲知多個(gè)數(shù)據(jù)服務(wù)器(302-304)各自的物理位置標(biāo)簽。例如,各數(shù)據(jù)服務(wù)器返回至監(jiān)控器102的響應(yīng)數(shù)據(jù)中,還包括對應(yīng)的數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽。物理位置標(biāo)簽,簡稱為標(biāo)簽,用以標(biāo)記每個(gè)數(shù)據(jù)服務(wù)器所在的物理位置信息,比如數(shù)據(jù)服務(wù)器處于哪個(gè)機(jī)房。因?yàn)槎鄠€(gè)數(shù)據(jù)服務(wù)器可能處于不同的機(jī)房中,因此通過物理位置標(biāo)簽即可獲知每個(gè)數(shù)據(jù)服務(wù)器所處的機(jī)房信息。在具體實(shí)現(xiàn)時(shí),可以在各數(shù)據(jù)服務(wù)器的配置信息中添加各自的物理位置標(biāo)簽,進(jìn)而,當(dāng)數(shù)據(jù)服務(wù)器在啟動時(shí)就相應(yīng)的加載配置信息,當(dāng)向監(jiān)控器102返回響應(yīng)數(shù)據(jù)時(shí)就可以攜帶上自己的物理位置標(biāo)簽。同理可選的,監(jiān)控器102可以不向各數(shù)據(jù)服務(wù)器發(fā)送查詢請求,而是由各數(shù)據(jù)服務(wù)器主動上報(bào)自己的物理位置標(biāo)簽,在這種方案中,監(jiān)控器102就可以不包括檢測模塊。通過上述監(jiān)控器102的多個(gè)具體實(shí)現(xiàn)方式可以看出,監(jiān)控器102可以獲知多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息、網(wǎng)絡(luò)延遲信息以及物理位置標(biāo)簽中的任意一種,也可以獲知上述三種信息中的任意兩種或三種,甚至被配置獲知更多所需要的信息。比如,至少獲知多個(gè)數(shù)據(jù)服務(wù)器(302-304)各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,或者至少獲知多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和物理位置標(biāo)簽,再或者獲知多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息、網(wǎng)絡(luò)延遲信息以及物理位置標(biāo)簽。此外,監(jiān)控器102可以定期或不定期的更新所獲知的各數(shù)據(jù)服務(wù)器的各種狀態(tài)信息,比如可以每間隔一定時(shí)間就向各數(shù)據(jù)服務(wù)器發(fā)送一次查詢請求,或者要求各數(shù)據(jù)服務(wù)器每隔一定間隔時(shí)間就上報(bào)一次自己的狀態(tài)信息,從而可以保證所獲知的各數(shù)據(jù)服務(wù)器的相關(guān)狀態(tài)信息是相對及時(shí)、準(zhǔn)確、最新的。數(shù)據(jù)接口 104接收來自數(shù)據(jù)請求方400的數(shù)據(jù)請求。數(shù)據(jù)請求方400包括但不限于應(yīng)用服務(wù)器(如web服務(wù)器)、郵件服務(wù)器、文件服務(wù)器以及各種需要查詢數(shù)據(jù)的計(jì)算機(jī)程序等。
數(shù)據(jù)接口 104將所接收的數(shù)據(jù)請求發(fā)送到數(shù)據(jù)讀取器108。數(shù)據(jù)讀取器108會從多個(gè)數(shù)據(jù)服務(wù)器(302-308)當(dāng)中選擇一個(gè)數(shù)據(jù)服務(wù)器來讀取滿足數(shù)據(jù)請求的數(shù)據(jù),并且將所讀取的數(shù)據(jù)返回給數(shù)據(jù)接口 104,以便數(shù)據(jù)接口 104將該數(shù)據(jù)返回給數(shù)據(jù)請求方400。數(shù)據(jù)讀取器108根據(jù)選擇器106來選擇多個(gè)數(shù)據(jù)服務(wù)器之一進(jìn)行數(shù)據(jù)讀取。選擇器106根據(jù)監(jiān)控器102所獲知的有關(guān)各個(gè)數(shù)據(jù)服務(wù)器的信息,來選擇由數(shù)據(jù)讀取器108進(jìn)行數(shù)據(jù)讀取的服務(wù)器。選擇器106具有多種可以單獨(dú)應(yīng)用、也可以任意組合應(yīng)用的具體實(shí)現(xiàn)方案在一個(gè)實(shí)施例中,選擇器106至少基于監(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇多個(gè)數(shù)據(jù)服務(wù)器之一來處理數(shù)據(jù)請求。因?yàn)楸O(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器的各種狀態(tài)信息都是及時(shí)更新的,因此選擇器106可以做出及時(shí)和準(zhǔn)確的選擇??蛇x的,選擇器106可以包括第一選擇模塊,第一選擇模塊首先基于監(jiān)控器102所 獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足負(fù)載狀態(tài)允許條件的第一數(shù)據(jù)服務(wù)器集合;隨后根據(jù)各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息,在第一數(shù)據(jù)服務(wù)器集合中選擇網(wǎng)絡(luò)延遲最低的數(shù)據(jù)服務(wù)器來處理該數(shù)據(jù)請求。該預(yù)設(shè)的負(fù)載狀態(tài)允許條件,可以基于負(fù)載狀態(tài)的具體內(nèi)容以及實(shí)際需求而定。例如,負(fù)載狀態(tài)允許條件可以是針對某項(xiàng)具體負(fù)載狀態(tài)的要求,也可以是針對多項(xiàng)負(fù)載狀態(tài)都有要求。比如,負(fù)載狀態(tài)允許條件可以是,數(shù)據(jù)服務(wù)器現(xiàn)有的并發(fā)連接數(shù)小于第一閾值,或者是數(shù)據(jù)服務(wù)器的CPU負(fù)載指標(biāo)小于第二閾值,再或者是數(shù)據(jù)服務(wù)器的磁盤負(fù)載指標(biāo)小于第三閾值,其中,第一閾值、第二閾值以及第三閾值可以相等,也可以不等。再比如,滿足負(fù)載狀態(tài)允許條件可以是上述多個(gè)負(fù)載狀態(tài)指標(biāo)均小于各自的預(yù)置閾值,即多個(gè)負(fù)載狀態(tài)指標(biāo)都同時(shí)滿足要求才算滿足負(fù)載狀態(tài)允許條件。至于各閾值的具體數(shù)值設(shè)置,則可以根據(jù)具體應(yīng)用環(huán)境對技術(shù)指標(biāo)的要求而定,本發(fā)明實(shí)施例對此并沒有限制。通過這個(gè)實(shí)現(xiàn)方案,可以使選擇器106在負(fù)載狀態(tài)都比較小的若干數(shù)據(jù)服務(wù)器(302-308)中,選擇一個(gè)網(wǎng)絡(luò)延遲也比較低的數(shù)據(jù)服務(wù)器為數(shù)據(jù)請求方400提供被請求的數(shù)據(jù)??蛇x的,選擇器106可以包括第二選擇模塊。該第二選擇模塊首先基于監(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息和預(yù)設(shè)的網(wǎng)絡(luò)延遲允許條件,選擇滿足網(wǎng)絡(luò)延遲允許條件的第二數(shù)據(jù)服務(wù)器集合。隨后第二選擇模塊在第二數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息,選擇負(fù)載最低的數(shù)據(jù)服務(wù)器處理數(shù)據(jù)請求。同理,網(wǎng)絡(luò)延遲允許條件的具體內(nèi)容可以根據(jù)實(shí)際需要而定。比如,可以將網(wǎng)絡(luò)延遲允許條件預(yù)設(shè)為網(wǎng)絡(luò)延遲時(shí)間小于某個(gè)閾值。前面已經(jīng)介紹過網(wǎng)絡(luò)延遲時(shí)間和負(fù)載狀態(tài)的相關(guān)信息,此處不再贅述。通過這種方式,可以使選擇器106在網(wǎng)絡(luò)延遲相對比較小的若干數(shù)據(jù)服務(wù)器(302-308)中,優(yōu)先選擇負(fù)載最低的數(shù)據(jù)服務(wù)器為數(shù)據(jù)請求方400提供被請求的數(shù)據(jù)。在另一個(gè)實(shí)施例中,選擇器106為至少基于監(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器(302-308)各自的負(fù)載狀態(tài)信息和物理位置標(biāo)簽,選擇多個(gè)數(shù)據(jù)服務(wù)器之一來處理數(shù)據(jù)請求。物理位置標(biāo)簽,如上所述,用以標(biāo)記每個(gè)數(shù)據(jù)服務(wù)器所在的物理位置信息,比如處于哪個(gè)機(jī)房。因?yàn)槎鄠€(gè)數(shù)據(jù)服務(wù)器可能處于不同的機(jī)房中,因此通過物理位置標(biāo)簽即可獲知每個(gè)數(shù)據(jù)服務(wù)器的具體物理位置。通常而言,處于本地機(jī)房的數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲較小、處理速度較快,處于遠(yuǎn)程機(jī)房的數(shù)據(jù)服務(wù)器網(wǎng)絡(luò)延遲較大、處理速度較慢。另外,往往基于業(yè)務(wù)的某些特定需求,某個(gè)業(yè)務(wù)需要指定某個(gè)物理位置的機(jī)房內(nèi)部的數(shù)據(jù)服務(wù)器處理數(shù)據(jù)請求。特定機(jī)房具體是本地機(jī)房,或者基于業(yè)務(wù)需要指定某一物理位置的機(jī)房??蛇x的,選擇器106可以包括第三選擇模塊。第三選擇模塊基于監(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足負(fù)載狀態(tài)允許條件的第三數(shù)據(jù)服務(wù)器集合。然后第三選擇模塊在第三數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽,選擇特定機(jī)房內(nèi)部的數(shù)據(jù)服務(wù)器來處理數(shù)據(jù)請求。通過這種技術(shù)方案,可以使選擇器106在若干負(fù)載較低的數(shù)據(jù)服務(wù)器中,優(yōu)選選擇特定機(jī)房內(nèi)部的一個(gè)數(shù)據(jù)服務(wù)器來處理數(shù)據(jù)請求??蛇x的,選擇器106可以包括第四選擇模塊。第四選擇模塊基于監(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的物理位置標(biāo)簽,選擇處于特定機(jī)房內(nèi)部的第四數(shù)據(jù)服務(wù)器集合。 隨后,第四選擇模塊在第四數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息,選擇負(fù)載最低的數(shù)據(jù)服務(wù)器來處理該數(shù)據(jù)請求。通過該技術(shù)方案,可以使選擇器106在符合要求的特定機(jī)房內(nèi)部的若干數(shù)據(jù)服務(wù)器中,優(yōu)先選擇一個(gè)負(fù)載最低數(shù)據(jù)服務(wù)器處理數(shù)據(jù)請求。在又一個(gè)實(shí)施例中,選擇器106可以根據(jù)監(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息、網(wǎng)絡(luò)延遲信息和物理位置標(biāo)簽,在多個(gè)數(shù)據(jù)服務(wù)器(302-308)中選擇其一來處理數(shù)據(jù)請求??蛇x的,選擇器106可以包括第五選擇模塊。第五選擇模塊首先基于監(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的物理位置標(biāo)簽,選擇處于特定機(jī)房內(nèi)部的第五數(shù)據(jù)服務(wù)器集合。隨后,第五選擇模塊在第五數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息以及預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足負(fù)載狀態(tài)允許條件的第五數(shù)據(jù)服務(wù)器子集合,并在第五數(shù)據(jù)服務(wù)器子集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息,選擇網(wǎng)絡(luò)延遲最低的數(shù)據(jù)服務(wù)器處理來該數(shù)據(jù)請求。通過這種技術(shù)方案,可以使選擇器106在合適的特定機(jī)房內(nèi)部的多個(gè)數(shù)據(jù)服務(wù)器中,選擇一個(gè)負(fù)載較低,并且網(wǎng)絡(luò)延遲也比較小的數(shù)據(jù)服務(wù)器處理該數(shù)據(jù)請求??蛇x的,選擇器106可以包括第六選擇模塊。第六選擇模塊可以首先基于監(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的物理位置標(biāo)簽,選擇處于特定機(jī)房內(nèi)部的第六數(shù)據(jù)服務(wù)器集合。隨后,在第六數(shù)據(jù)服務(wù)器集合中,第六選擇模塊根據(jù)其中各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息以及預(yù)設(shè)的網(wǎng)絡(luò)延遲允許條件,選擇滿足網(wǎng)絡(luò)延遲允許條件的第六數(shù)據(jù)服務(wù)器子集合;并在第六數(shù)據(jù)服務(wù)器子集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息,選擇負(fù)載最低的數(shù)據(jù)服務(wù)器來處理該數(shù)據(jù)請求。通過這種技術(shù)方案,可以使選擇器106在合適的特定機(jī)房內(nèi)部的多個(gè)數(shù)據(jù)服務(wù)器中,選擇一個(gè)網(wǎng)絡(luò)延遲較小,并且負(fù)載也比較低的數(shù)據(jù)服務(wù)器處理該數(shù)據(jù)請求??蛇x的,選擇器106可以包括第七選擇模塊。第七選擇模塊可以首先基于監(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足該負(fù)載狀態(tài)允許條件的第七數(shù)據(jù)服務(wù)器集合。隨后,在第七數(shù)據(jù)服務(wù)器集合中,第七選擇模塊根據(jù)其中各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息和預(yù)設(shè)的網(wǎng)絡(luò)延遲允許條件,選擇滿足該網(wǎng)絡(luò)延遲允許條件的第七數(shù)據(jù)服務(wù)器子集合;并且在第七數(shù)據(jù)服務(wù)器子集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽,選擇處于特定機(jī)房內(nèi)部的數(shù)據(jù)服務(wù)器來處理該數(shù)據(jù)請求。通過這種技術(shù)方案,可以使選擇器106在負(fù)載較低且網(wǎng)絡(luò)延遲較小的多個(gè)數(shù)據(jù)服務(wù)器中,優(yōu)選選擇處于特定機(jī)房內(nèi)部的數(shù)據(jù)服務(wù)器處理該數(shù)據(jù)請求。可選的,選擇器106可以包括第八選擇模塊。第八選擇模塊首先可以基于監(jiān)控器102所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息和預(yù)設(shè)的網(wǎng)絡(luò)延遲允許條件,選擇滿足網(wǎng)絡(luò)延遲允許條件的第八數(shù)據(jù)服務(wù)器集合。隨后,在第八數(shù)據(jù)服務(wù)器集合中,第八選擇模塊根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息和預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足負(fù)載狀態(tài)允許條件的第八數(shù)據(jù)服務(wù)器子集合;并在第八數(shù)據(jù)服務(wù)器子集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽,選擇處于特定機(jī)房內(nèi)部的數(shù)據(jù)服務(wù)器來處理該數(shù)據(jù)請求。通過這種技術(shù)方案,可以使選擇器106在網(wǎng)絡(luò)延遲較小且負(fù)載較低的多個(gè)數(shù)據(jù)服務(wù)器中,優(yōu)選選擇處于特定機(jī)房內(nèi)部的數(shù)據(jù)服務(wù)器處理該數(shù)據(jù)請求。在一個(gè)實(shí)施例中,如果數(shù)據(jù)讀取器108從選擇器106所選擇的數(shù)據(jù)服務(wù)器讀取被請求數(shù)據(jù)失敗的話,則數(shù)據(jù)讀取器108會通知選擇器106,選擇器106隨后根據(jù)多個(gè)數(shù)據(jù)服務(wù)器(302-308)中的其他數(shù)據(jù)服務(wù)器各自的狀態(tài),繼續(xù)選擇其他數(shù)據(jù)服務(wù)器當(dāng)中的另一個(gè)數(shù)據(jù)服務(wù)器,并且將選擇結(jié)果返回給數(shù)據(jù)讀取器108。數(shù)據(jù)讀取器108從選擇器106重新選 擇的數(shù)據(jù)服務(wù)器讀取與數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)。選擇器106具體從其他數(shù)據(jù)服務(wù)器中選擇哪個(gè)數(shù)據(jù)服務(wù)器處理,與在讀取數(shù)據(jù)失敗前的選擇方案雷同,具體可以參考前面選擇器106的相關(guān)實(shí)現(xiàn)方案,此處不再贅述??蛇x的,監(jiān)控器102中的檢測模塊向各數(shù)據(jù)服務(wù)器發(fā)送查詢請求時(shí),仍然繼續(xù)向發(fā)生故障的數(shù)據(jù)服務(wù)器(即數(shù)據(jù)讀取器108讀取被請求數(shù)據(jù)失敗的數(shù)據(jù)服務(wù)器)發(fā)送查詢請求,并且根據(jù)該發(fā)生故障的數(shù)據(jù)服務(wù)器是否返回響應(yīng)數(shù)據(jù)或者返回響應(yīng)數(shù)據(jù)的內(nèi)容或狀況,確定該發(fā)生故障的數(shù)據(jù)服務(wù)器的故障是否已消除,如果故障已消除,則更新該數(shù)據(jù)服務(wù)器為可用,以便后續(xù)選擇器106選擇哪個(gè)數(shù)據(jù)服務(wù)器處理數(shù)據(jù)請求時(shí),考慮該故障已消除的數(shù)據(jù)服務(wù)器。例如,當(dāng)某個(gè)數(shù)據(jù)服務(wù)器出現(xiàn)故障,數(shù)據(jù)讀取器108獲取數(shù)據(jù)失敗后,選擇器106會自動選取另一臺數(shù)據(jù)服務(wù)器提供給數(shù)據(jù)讀取器108,以便數(shù)據(jù)讀取器重新讀取數(shù)據(jù)。并且,選擇器106會在檢測過程所記錄的數(shù)據(jù)中指示該數(shù)據(jù)服務(wù)器處于故障狀態(tài),在該數(shù)據(jù)服務(wù)器故障消除之前,選取數(shù)據(jù)服務(wù)器時(shí)會跳過該發(fā)生故障的數(shù)據(jù)服務(wù)器。當(dāng)監(jiān)控器102每發(fā)一次心跳請求(即查詢請求)時(shí),都會檢測發(fā)生故障的數(shù)據(jù)服務(wù)器,當(dāng)該數(shù)據(jù)服務(wù)器恢復(fù)時(shí),修改該數(shù)據(jù)服務(wù)器為正常狀態(tài),以便選擇器106后續(xù)可以選擇該數(shù)據(jù)服務(wù)器??蛇x的,當(dāng)新增提供服務(wù)的數(shù)據(jù)服務(wù)器時(shí),將該數(shù)據(jù)服務(wù)器添加至監(jiān)控器102維護(hù)的檢測列表中,以便監(jiān)控器102可以監(jiān)控該新增服務(wù)器的相關(guān)狀態(tài)信息。在一個(gè)實(shí)施例中,多個(gè)數(shù)據(jù)服務(wù)器具體是多個(gè)Mongod服務(wù)器,具體請參閱圖2所,其為根據(jù)本發(fā)明一個(gè)實(shí)施例的用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備。多個(gè)Mongod服務(wù)器至少分布在兩個(gè)機(jī)房,比如MongoDl和MongoD2分布于機(jī)房I內(nèi),MongoD3和MongoD4分布于機(jī)房2內(nèi)。數(shù)據(jù)管理設(shè)備100包括Mongos 210,即前述數(shù)據(jù)管理設(shè)備100中的各部件在MongoS210中予以實(shí)現(xiàn),Mongos 210通過監(jiān)控器202維護(hù)著各數(shù)據(jù)服務(wù)器的信息。Mongos 210監(jiān)控器202、數(shù)據(jù)接口 204、選擇器206、以及數(shù)據(jù)讀取器208。監(jiān)視器202的具體實(shí)現(xiàn)與前述各實(shí)施例中的監(jiān)控器102雷同,類似的,數(shù)據(jù)接口 204與前述各實(shí)施例中的數(shù)據(jù)接口 104雷同,選擇器206與前述各實(shí)施例中的選擇器106雷同,以及數(shù)據(jù)讀取器208與前述各實(shí)施例中的數(shù)據(jù)讀取器108雷同,僅僅是將圖I中所示的各部件具體應(yīng)用于MongoDB的分布式數(shù)據(jù)存儲系統(tǒng)中,因此對相關(guān)組成部分的具體實(shí)現(xiàn)不再贅述,請參考前述相關(guān)組成部分的具體實(shí)現(xiàn)方案。通過各個(gè)實(shí)施例中的選擇器206對數(shù)據(jù)服務(wù)器的選擇,可以使得在兼顧選擇負(fù)載較低的數(shù)據(jù)服務(wù)器的同時(shí),能夠優(yōu)先選擇網(wǎng)絡(luò)延遲較小的數(shù)據(jù)服務(wù)器,或者優(yōu)先選擇與Mongos 210在同一機(jī)房、即本地機(jī)房的數(shù)據(jù)服務(wù)器處理數(shù)據(jù)請求。通常,一般本地機(jī)房內(nèi)的數(shù)據(jù)服務(wù)器網(wǎng)頁延遲也較小。當(dāng)然,前述各實(shí)施例的數(shù)據(jù)管理設(shè)備,除了可以應(yīng)用于MongoDB的分布式數(shù)據(jù)存儲系統(tǒng)中,還可以應(yīng)用于其他類似的分布式數(shù)據(jù)存儲系統(tǒng),比如mysql等。請參閱圖3,其為根據(jù)本發(fā)明一個(gè)實(shí)施例的用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理方法的示意圖,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)數(shù)據(jù)服務(wù)器,其例如為上面參考圖I或者圖2描述的數(shù)據(jù)存儲系統(tǒng)。該數(shù)據(jù)管理方法始于步驟S310,在步驟S310中,獲知多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息。具體而言,在步驟S310中,可以向多個(gè)數(shù)據(jù)服務(wù)器分別發(fā)送查詢請求,并接收多 個(gè)數(shù)據(jù)服務(wù)器各自返回的響應(yīng)數(shù)據(jù)。響應(yīng)數(shù)據(jù)中通常包括對應(yīng)的數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息,這樣就獲得了各個(gè)數(shù)據(jù)服務(wù)器的負(fù)載狀況信息。另外,在步驟S310中,還可以基于向各個(gè)數(shù)據(jù)服務(wù)器發(fā)送查詢請求的發(fā)送時(shí)間和響應(yīng)數(shù)據(jù)的接收時(shí)間,獲得各個(gè)數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息。例如可以把每個(gè)數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲時(shí)間計(jì)算為相應(yīng)發(fā)送時(shí)間和接收時(shí)間之差。除了可以獲得前面的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息之外,還可以獲得數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽,比如各個(gè)數(shù)據(jù)服務(wù)器在返回的響應(yīng)數(shù)據(jù)中也添加各自的物理位置標(biāo)簽。本步驟可以通過前述數(shù)據(jù)管理設(shè)備100中的監(jiān)控器102執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述監(jiān)控器102在各實(shí)施例中的相關(guān)描述,此處不再贅述。隨后,在S320中,接收來自數(shù)據(jù)請求方的數(shù)據(jù)請求。數(shù)據(jù)請求方具體可以是常見的應(yīng)用服務(wù)器,也可以其他服務(wù)器,比如郵件服務(wù)器、文件服務(wù)器等,只要有數(shù)據(jù)查詢需求、并且數(shù)據(jù)服務(wù)器能夠提供被查詢的數(shù)據(jù)的服務(wù)器都可以作為本發(fā)明實(shí)施例中的數(shù)據(jù)請求方。而且,除了各種具有數(shù)據(jù)查詢請求的服務(wù)器之外,有數(shù)據(jù)查詢請求的各種計(jì)算機(jī)程序也可以作為本發(fā)明實(shí)施例的數(shù)據(jù)請求方??偠灾?,只要有數(shù)據(jù)查詢需求、并且數(shù)據(jù)服務(wù)器能夠提供被查詢的數(shù)據(jù)的設(shè)備或程序,都可以是本發(fā)明實(shí)施例中的數(shù)據(jù)請求方,本發(fā)明實(shí)施例對此并沒有限制。本步驟可以通過前述數(shù)據(jù)管理設(shè)備100中的數(shù)據(jù)接口 104執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述監(jiān)控器102在各實(shí)施例中的相關(guān)描述,此處不再贅述。在步驟S320中接收到數(shù)據(jù)請求之后,在步驟S330中,根據(jù)在步驟S310所獲知的各個(gè)數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息和/或網(wǎng)絡(luò)延遲信息,選擇一個(gè)要處理該數(shù)據(jù)請求的數(shù)據(jù)服務(wù)器。應(yīng)當(dāng)注意的是,除了根據(jù)各個(gè)數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息和/或網(wǎng)絡(luò)延遲信息之夕卜,還可以根據(jù)各個(gè)數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽來選擇處理該數(shù)據(jù)請求的數(shù)據(jù)服務(wù)器。本發(fā)明所描述的選擇方式可以包括負(fù)載狀態(tài)、網(wǎng)絡(luò)延遲和物理位置標(biāo)簽的一個(gè)或者多個(gè)的組合。所有這些選擇方式都在本發(fā)明的保護(hù)范圍之內(nèi)。對于如何結(jié)合物理位置標(biāo)簽來選擇處理該數(shù)據(jù)請求的數(shù)據(jù)服務(wù)器,在后續(xù)圖4所示的實(shí)施例中還會進(jìn)行更詳細(xì)的介紹。本步驟可以通過前述數(shù)據(jù)管理設(shè)備100中的選擇器106執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述選擇器106在各實(shí)施例中的相關(guān)描述,此處不再贅述。隨后,在S340中,從步驟S330所選擇的數(shù)據(jù)服務(wù)器讀取被請求的數(shù)據(jù)。本步驟可以通過前述數(shù)據(jù)管理設(shè)備100中的數(shù)據(jù)讀取器108執(zhí)行,相關(guān)的技術(shù)特征可以參考前述數(shù)據(jù)讀取器108在各實(shí)施例中的相關(guān)描述,此處不再贅述。并在S350中,將被請求的數(shù)據(jù)返回至數(shù)據(jù)請求方。本步驟可以通過前述數(shù)據(jù)管理設(shè)備100中的數(shù)據(jù)接口 104執(zhí)行,相關(guān)的技術(shù)特征可以參考前述數(shù)據(jù)接口 104在各實(shí)施例中的相關(guān)描述,此處不再贅述。應(yīng)當(dāng)注意的是,上述方法中的各步驟的順序是可以調(diào)整的,例如步驟S310可以獨(dú)立于其他步驟來執(zhí)行或者與其他步驟并行執(zhí)行。步驟S310還可以定期重復(fù)執(zhí)行,以便及時(shí)獲知各個(gè)數(shù)據(jù)服務(wù)器的最新信息。還應(yīng)當(dāng)注意的是,步驟S330還可能因?yàn)椴襟ES340從數(shù)據(jù)服務(wù)器讀取數(shù)據(jù)失敗而重新執(zhí)行,即重新選擇數(shù)據(jù)服務(wù)器,在步驟S330重新選擇后,步驟S340也會根據(jù)步驟S330重新選擇的結(jié)果再次執(zhí)行讀取數(shù)據(jù)的操作。具體而言,如果在步驟S340中從之前步驟S330選擇的數(shù)據(jù)服務(wù)器讀取被請求的數(shù)據(jù)失敗,比如該數(shù)據(jù)服務(wù)器發(fā)生故障了,那么隨后步驟 S330會重新進(jìn)行選擇,即根據(jù)多個(gè)數(shù)據(jù)服務(wù)器中的其他數(shù)據(jù)服務(wù)器各自的狀態(tài),繼續(xù)選擇其他數(shù)據(jù)服務(wù)器當(dāng)中的另一個(gè)數(shù)據(jù)服務(wù)器,然后,步驟S340也從步驟S330重新選擇的另一個(gè)數(shù)據(jù)服務(wù)器讀取被請求的數(shù)據(jù)。步驟S340重新讀取數(shù)據(jù)成功后,在S350中將成功讀取到的被請求數(shù)據(jù)返回至數(shù)據(jù)請求方。請參閱圖4,其為根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理方法的示意圖,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)數(shù)據(jù)服務(wù)器,其例如為上面參考圖I或者圖2描述的數(shù)據(jù)存儲系統(tǒng)。該數(shù)據(jù)管理方法始于步驟S410,在步驟S410中,可以獲知多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和物理位置標(biāo)簽。具體而言,在步驟S410中,可以向多個(gè)數(shù)據(jù)服務(wù)器分別發(fā)送查詢請求,比如每間隔一定時(shí)間發(fā)一次心跳請求,然后接收多個(gè)數(shù)據(jù)服務(wù)器各自返回的響應(yīng)數(shù)據(jù)。在響應(yīng)數(shù)據(jù)中通常包括對應(yīng)的數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息和物理位置標(biāo)簽,這樣就獲得了各個(gè)數(shù)據(jù)服務(wù)器的負(fù)載狀況信息和物理位置標(biāo)簽。物理位置標(biāo)簽,主要是用來標(biāo)記每個(gè)數(shù)據(jù)服務(wù)器所在的物理位置信息,比如哪個(gè)數(shù)據(jù)服務(wù)器處于哪個(gè)機(jī)房。因?yàn)槎鄠€(gè)數(shù)據(jù)服務(wù)器可能處于不同的機(jī)房中,所以通過物理位置標(biāo)簽就可以獲知每個(gè)數(shù)據(jù)服務(wù)器所處的具體機(jī)房信息。除了可以通過各數(shù)據(jù)服務(wù)器返回的響應(yīng)數(shù)據(jù)中獲得各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息和物理位置標(biāo)簽之外,還可以基于向各個(gè)數(shù)據(jù)服務(wù)器發(fā)送查詢請求的發(fā)送時(shí)間和響應(yīng)數(shù)據(jù)的接收時(shí)間,獲得各個(gè)數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息。例如可以把每個(gè)數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲時(shí)間計(jì)算為相應(yīng)發(fā)送時(shí)間和接收時(shí)間之差。本步驟可以通過前述數(shù)據(jù)管理設(shè)備100中的監(jiān)控器102執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述監(jiān)控器102在各實(shí)施例中的相關(guān)描述,此處不再贅述。隨后,在S420中,接收來自數(shù)據(jù)請求方的數(shù)據(jù)請求。數(shù)據(jù)請求方具體可以是常見的應(yīng)用服務(wù)器,也可以其他服務(wù)器,比如郵件服務(wù)器、文件服務(wù)器等,只要有數(shù)據(jù)查詢需求、并且數(shù)據(jù)服務(wù)器能夠提供被查詢的數(shù)據(jù)的服務(wù)器都可以作為本發(fā)明實(shí)施例中的數(shù)據(jù)請求方。而且,除了各種具有數(shù)據(jù)查詢請求的服務(wù)器之外,有數(shù)據(jù)查詢請求的各種計(jì)算機(jī)程序也可以作為本發(fā)明實(shí)施例的數(shù)據(jù)請求方??偠灾?,只要有數(shù)據(jù)查詢需求、并且數(shù)據(jù)服務(wù)器能夠提供被查詢的數(shù)據(jù)的設(shè)備或程序,都可以是本發(fā)明實(shí)施例中的數(shù)據(jù)請求方,本發(fā)明實(shí)施例對此并沒有限制。本步驟可以通過前述數(shù)據(jù)管理設(shè)備100中的數(shù)據(jù)接口 104執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述監(jiān)控器102在各實(shí)施例中的相關(guān)描述,此處不再贅述。在步驟S420接收到來自數(shù)據(jù)請求方的數(shù)據(jù)請求之后,在步驟S430中,根據(jù)S410所獲知的各個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和/或物理位置標(biāo)簽,在多個(gè)數(shù)據(jù)服務(wù)器中選擇一個(gè)來處理該數(shù)據(jù)請求。應(yīng)該注意的是,在步驟S430中,除了可以根據(jù)步驟S410獲得的各個(gè)數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息和/或物理位置標(biāo)簽進(jìn)行選擇之外,還可以根據(jù)各個(gè)數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息來選擇處理該數(shù)據(jù)請求的數(shù)據(jù)服務(wù)器。比如,綜合參考步驟S410所獲知的各個(gè)數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息、網(wǎng)絡(luò)延遲信息和物理位置標(biāo)簽這三種信息,共同決定選擇哪個(gè)數(shù)據(jù)服務(wù)器來處理該數(shù)據(jù)請求更合適??偠灾?,本發(fā)明實(shí)施例所描述的選擇方式可以包括負(fù)載狀態(tài)、網(wǎng)絡(luò)延遲和物理位置標(biāo)簽中的一個(gè)或多個(gè)的組合。所有這些選擇方式都在本發(fā)明 的保護(hù)范圍之內(nèi)。本步驟可以通過前述數(shù)據(jù)管理設(shè)備100中的選擇器106執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述選擇器106在各實(shí)施例中的相關(guān)描述,此處不再贅述。隨后,在S440中,從步驟S430所選擇的數(shù)據(jù)服務(wù)器讀取被請求的數(shù)據(jù)。本步驟可以通過前述數(shù)據(jù)管理設(shè)備100中的數(shù)據(jù)讀取器108執(zhí)行,相關(guān)的技術(shù)特征可以參考前述數(shù)據(jù)讀取器108在各實(shí)施例中的相關(guān)描述,此處不再贅述。并在S450中,將被請求數(shù)據(jù)返回至數(shù)據(jù)請求方。本步驟可以通過前述數(shù)據(jù)管理設(shè)備100中的數(shù)據(jù)接口 104執(zhí)行,相關(guān)的技術(shù)特征可以參考前述數(shù)據(jù)接口 104在各實(shí)施例中的相關(guān)描述,此處不再贅述。還應(yīng)當(dāng)注意的是,上述方法中各步驟的順序是可以調(diào)整的,例如步驟S410可以獨(dú)立于其他步驟來執(zhí)行或者與其他步驟并行執(zhí)行。步驟S410還可以定期重復(fù)執(zhí)行,以便及時(shí)獲知各個(gè)數(shù)據(jù)服務(wù)器的最新信息。還應(yīng)當(dāng)注意的是,步驟S430還可能因?yàn)椴襟ES440從數(shù)據(jù)服務(wù)器讀取數(shù)據(jù)失敗而重新執(zhí)行,即重新選擇數(shù)據(jù)服務(wù)器,在步驟S430重新選擇后,步驟S440也會根據(jù)步驟S430重新選擇的結(jié)果再次執(zhí)行讀取數(shù)據(jù)的操作。具體而言,如果在步驟S440中從之前步驟S430選擇的數(shù)據(jù)服務(wù)器讀取被請求的數(shù)據(jù)失敗,比如該數(shù)據(jù)服務(wù)器發(fā)生故障了,那么隨后步驟S430會重新進(jìn)行選擇,即根據(jù)多個(gè)數(shù)據(jù)服務(wù)器中的其他數(shù)據(jù)服務(wù)器各自的狀態(tài),繼續(xù)選擇其他數(shù)據(jù)服務(wù)器中當(dāng)中的另一個(gè)數(shù)據(jù)服務(wù)器,進(jìn)而,步驟S440就會從步驟S430重新選擇的另一個(gè)數(shù)據(jù)服務(wù)器讀取被請求的數(shù)據(jù)。步驟S440重新讀取數(shù)據(jù)成功后,在S450中將成功讀取的被請求數(shù)據(jù)返回至數(shù)據(jù)請求方。通過以上各實(shí)施例的描述可知,采用本發(fā)明實(shí)施例提供的技術(shù)方案,可以監(jiān)控到各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài),使得在選擇哪個(gè)數(shù)據(jù)服務(wù)器為請求方服務(wù)時(shí)可以參考各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)進(jìn)行選擇,相對現(xiàn)有的隨機(jī)選擇,避免了選擇的盲目性,從而提高了數(shù)據(jù)讀取的效率。還可以監(jiān)控到各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲狀況,使得在選擇哪個(gè)數(shù)據(jù)服務(wù)器為請求方服務(wù)時(shí)可以參考各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息進(jìn)行選擇,相對現(xiàn)有的隨機(jī)選擇方式,同樣提高了數(shù)據(jù)讀取的效率。還可以監(jiān)控到各數(shù)據(jù)服務(wù)器的物理位置標(biāo)簽,使得在選擇哪個(gè)數(shù)據(jù)服務(wù)器為請求方服務(wù)時(shí)可以參考各數(shù)據(jù)服務(wù)器的物理位置信息進(jìn)行選擇,比如可以優(yōu)選選擇本地機(jī)房內(nèi)部的數(shù)據(jù)服務(wù)器提供服務(wù),因?yàn)橥ǔ1镜貦C(jī)房的數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲較小,再比如,可以根據(jù)業(yè)務(wù)需要選擇指定機(jī)房的數(shù)據(jù)服務(wù)器提供服務(wù),這種方案相對現(xiàn)有的隨機(jī)選擇方式,同樣也提高了數(shù)據(jù)讀取的效率。進(jìn)一步,可以同時(shí)參考各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)和網(wǎng)絡(luò)延遲狀況選擇提供服務(wù)的數(shù)據(jù)服務(wù)器,采取這種方式,可以同時(shí)兼顧負(fù)載狀態(tài)和網(wǎng)絡(luò)延遲情況,從而更進(jìn)一步提高了數(shù)據(jù)庫的讀取性能?;蛘?,同時(shí)參考各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)和物理位置標(biāo)簽選擇提供服務(wù)的數(shù)據(jù)服務(wù)器,采取這種方式,可以同時(shí)兼顧負(fù)載狀態(tài)和物理位置,從而更進(jìn)一步提高了數(shù)據(jù)庫的讀取性能。。再或者,同時(shí)參考各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)、網(wǎng)絡(luò)延遲狀況以及物理位置標(biāo)簽選擇提供服務(wù)的數(shù)據(jù)服務(wù)器,采取這種方案,使得數(shù)據(jù)服務(wù)器的選擇更全面、準(zhǔn)確,更進(jìn)一步提高了數(shù)據(jù)庫的讀取性能。在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。 在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式
的權(quán)利要求書由此明確地并入該具體實(shí)施方式
,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或模塊或組件組合成一個(gè)模塊或模塊或組件,以及此外可以把它們分成多個(gè)子模塊或子模塊或子組件。除了這樣的特征和/或過程或者模塊中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或模塊進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。 本發(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ù)字信號處理器(DSP )來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。 應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的模塊權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為 名稱。
權(quán)利要求
1.一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)數(shù)據(jù)服務(wù)器,該數(shù)據(jù)管理設(shè)備包括 監(jiān)控器,被配置為至少獲知所述多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息; 數(shù)據(jù)接口,被配置為接收來自數(shù)據(jù)請求方的數(shù)據(jù)請求,并將與所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)返回至所述數(shù)據(jù)請求方; 選擇器,被配置為至少基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇所述多個(gè)數(shù)據(jù)服務(wù)器之一來處理所述數(shù)據(jù)請求,其中所述多個(gè)數(shù)據(jù)服務(wù)器均存儲所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù);以及 數(shù)據(jù)讀取器,被配置為從所述選擇器所選擇的數(shù)據(jù)服務(wù)器讀取所述被請求數(shù)據(jù),并將所述被請求數(shù)據(jù)發(fā)送給所述數(shù)據(jù)接口。
2.根據(jù)權(quán)利要求I所述的數(shù)據(jù)管理設(shè)備,所述監(jiān)控器包括 檢測模塊,被配置為向所述多個(gè)數(shù)據(jù)服務(wù)器分別發(fā)送查詢請求,以及接收所述多個(gè)數(shù)據(jù)服務(wù)器各自返回的響應(yīng)數(shù)據(jù),所述響應(yīng)數(shù)據(jù)中至少包括對應(yīng)的數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息; 延遲模塊,被配置為根據(jù)所述多個(gè)數(shù)據(jù)服務(wù)器各自對應(yīng)的所述查詢請求的發(fā)送時(shí)間和所述響應(yīng)數(shù)據(jù)的接收時(shí)間,獲得所述多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息。
3.根據(jù)權(quán)利要求I或者2所述的數(shù)據(jù)管理設(shè)備,如果所述數(shù)據(jù)讀取器從所述選擇器選擇的數(shù)據(jù)服務(wù)器讀取被請求數(shù)據(jù)失敗,則所述選擇器還根據(jù)所述多個(gè)數(shù)據(jù)服務(wù)器中的其他數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇其他數(shù)據(jù)服務(wù)器當(dāng)中的另一個(gè)數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求;以及 所述數(shù)據(jù)讀取器還從所述另一個(gè)數(shù)據(jù)服務(wù)器讀取與所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)。
4.根據(jù)權(quán)利要求1-3中任一個(gè)所述的數(shù)據(jù)管理設(shè)備,所述選擇器包括 第一選擇模塊,被配置為至少基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足所述負(fù)載狀態(tài)允許條件的第一數(shù)據(jù)服務(wù)器集合;在所述第一數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息,選擇網(wǎng)絡(luò)延遲最低的數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求。
5.根據(jù)權(quán)利要求1-3中任一個(gè)所述的數(shù)據(jù)管理設(shè)備,所述選擇器包括 第二選擇模塊,被配置為至少基于所述監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息和預(yù)設(shè)的網(wǎng)絡(luò)延遲允許條件,選擇滿足所述網(wǎng)絡(luò)延遲允許條件的第二數(shù)據(jù)服務(wù)器集合;在所述第二數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息,選擇負(fù)載最低的數(shù)據(jù)服務(wù)器處理所述數(shù)據(jù)請求。
6.根據(jù)權(quán)利要求I至5中任一項(xiàng)所述的數(shù)據(jù)管理設(shè)備,所述數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息包括下述信息中的一種或多種 所述數(shù)據(jù)服務(wù)器現(xiàn)有的并發(fā)連接數(shù); 所述數(shù)據(jù)服務(wù)器的CPU負(fù)載指標(biāo); 所述數(shù)據(jù)服務(wù)器的磁盤負(fù)載指標(biāo)。
7.一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理方法,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)數(shù)據(jù)服務(wù)器,該數(shù)據(jù)管理方法包括至少獲知所述多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息;接收來自數(shù)據(jù)請求方的數(shù)據(jù)請求;至少基于所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇所述多個(gè)數(shù)據(jù)服務(wù)器之一來處理所述數(shù)據(jù)請求,其中,所述多個(gè)數(shù)據(jù)服務(wù)器均存儲所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù);從所述選擇的數(shù)據(jù)服務(wù)器讀取所述被請求數(shù)據(jù);以及將所述被請求數(shù)據(jù)返回至所述數(shù)據(jù)請求方。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)管理方法,所述獲知所述多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息包括向所述多個(gè)數(shù)據(jù)服務(wù)器分別發(fā)送查詢請求,以及接收所述多個(gè)數(shù)據(jù)服務(wù)器各自返回的響應(yīng)數(shù)據(jù),所述響應(yīng)數(shù)據(jù)中至少包括對應(yīng)的數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息;根據(jù)所述多個(gè)數(shù)據(jù)服務(wù)器各自對應(yīng)的所述查詢請求的發(fā)送時(shí)間和所述響應(yīng)數(shù)據(jù)的接收時(shí)間,獲得所述多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息。
9.根據(jù)權(quán)利要求7或8所述的數(shù)據(jù)管理方法,如果從選擇的所述數(shù)據(jù)服務(wù)器讀取被請求數(shù)據(jù)失敗,則還包括根據(jù)所述多個(gè)數(shù)據(jù)服務(wù)器中的其他數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇其他數(shù)據(jù)服務(wù)器當(dāng)中的另一個(gè)數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求;以及從所述另一個(gè)數(shù)據(jù)服務(wù)器讀取與所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)。
10.根據(jù)權(quán)利要求7至9中任一個(gè)所述的數(shù)據(jù)管理方法,所述至少根據(jù)所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇所述多個(gè)數(shù)據(jù)服務(wù)器之一來處理所述數(shù)據(jù)請求包括至少根據(jù)所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和預(yù)設(shè)的負(fù)載狀態(tài)允許條件,選擇滿足所述負(fù)載狀態(tài)允許條件的第一數(shù)據(jù)服務(wù)器集合;在所述第一數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)延遲信息,選擇網(wǎng)絡(luò)延遲最低的數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求。
11.根據(jù)權(quán)利要求7至10中任一個(gè)所述的數(shù)據(jù)管理方法,所述至少根據(jù)所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇所述多個(gè)數(shù)據(jù)服務(wù)器之一來處理所述數(shù)據(jù)請求包括至少根據(jù)所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的網(wǎng)絡(luò)延遲信息和預(yù)設(shè)的網(wǎng)絡(luò)延遲允許條件,選擇滿足所述網(wǎng)絡(luò)延遲允許條件的第二數(shù)據(jù)服務(wù)器集合;在所述第二數(shù)據(jù)服務(wù)器集合中,根據(jù)其中各數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息,選擇負(fù)載最低的數(shù)據(jù)服務(wù)器來處理所述數(shù)據(jù)請求。
12.根據(jù)權(quán)利要求7至11中任一項(xiàng)所述的數(shù)據(jù)管理方法,所述數(shù)據(jù)服務(wù)器的負(fù)載狀態(tài)信息包括下述信息中的一種或多種所述數(shù)據(jù)服務(wù)器現(xiàn)有的并發(fā)連接數(shù);所述數(shù)據(jù)服務(wù)器的CPU負(fù)載指標(biāo);所述數(shù)據(jù)服務(wù)器的磁盤負(fù)載指標(biāo)。
13.一種用于分布式數(shù)據(jù)存儲的數(shù)據(jù)管理系統(tǒng),包括如權(quán)利要求I至6中任一項(xiàng)所述的數(shù)據(jù)管理設(shè)備,以及多個(gè)數(shù)據(jù)服務(wù)器,所述多個(gè)數(shù)據(jù)服務(wù)器均存儲有數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)。
14.一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)Mongod服務(wù)器,該數(shù)據(jù)管理設(shè)備包括Mongos裝置,所述Mongos裝置具體包括 監(jiān)控器,被配置為至少獲知分布在至少兩個(gè)機(jī)房的多個(gè)Mongod服務(wù)器各自的網(wǎng)絡(luò)延遲信息和負(fù)載狀態(tài)信息; 數(shù)據(jù)接口,被配置為接收來自應(yīng)用服務(wù)器的數(shù)據(jù)請求,并將與所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)返回至所述應(yīng)用數(shù)據(jù)服務(wù)器; 選擇器,被配置為至少基于所述監(jiān)控器所獲知的分布在至少兩個(gè)機(jī)房的多個(gè)Mongod服務(wù)器各自的網(wǎng)絡(luò)延遲信息和負(fù)載狀態(tài)信息,選擇所述多個(gè)Mongod服務(wù)器之一來處理所述數(shù)據(jù)請求,所述多個(gè)Mongod服務(wù)器均存儲所述數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù);以及 數(shù)據(jù)讀取器,被配置為從所述選擇器選擇的Mongod服務(wù)器讀取所述被請求數(shù)據(jù),并將所述被請求數(shù)據(jù)發(fā)送給所述數(shù)據(jù)接口。
全文摘要
本發(fā)明公開了一種用于分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)管理設(shè)備,該分布式數(shù)據(jù)存儲系統(tǒng)包括多個(gè)數(shù)據(jù)服務(wù)器,該數(shù)據(jù)管理設(shè)備包括監(jiān)控器,被配置為至少獲知多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息;數(shù)據(jù)接口,被配置為接收來自數(shù)據(jù)請求方的數(shù)據(jù)請求,并將與數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù)返回至數(shù)據(jù)請求方;選擇器,被配置為至少基于監(jiān)控器所獲知的多個(gè)數(shù)據(jù)服務(wù)器各自的負(fù)載狀態(tài)信息和網(wǎng)絡(luò)延遲信息,選擇多個(gè)數(shù)據(jù)服務(wù)器之一來處理數(shù)據(jù)請求,其中多個(gè)數(shù)據(jù)服務(wù)器均存儲數(shù)據(jù)請求對應(yīng)的被請求數(shù)據(jù);以及數(shù)據(jù)讀取器,被配置為從選擇器所選擇的數(shù)據(jù)服務(wù)器讀取被請求數(shù)據(jù),并將被請求數(shù)據(jù)發(fā)送給數(shù)據(jù)接口。
文檔編號H04L29/08GK102932442SQ201210417818
公開日2013年2月13日 申請日期2012年10月26日 優(yōu)先權(quán)日2012年10月26日
發(fā)明者桂勇哲, 陳超, 代兵, 朱超, 王超 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司