欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種存儲數(shù)據(jù)副本的方法和終端裝置以及服務器裝置制造方法

文檔序號:7778838閱讀:194來源:國知局
一種存儲數(shù)據(jù)副本的方法和終端裝置以及服務器裝置制造方法
【專利摘要】本發(fā)明提供一種存儲數(shù)據(jù)副本的方法和終端裝置以及服務器裝置,有助于提高無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)的可靠性,并降低其在節(jié)點數(shù)目發(fā)生改變時的數(shù)據(jù)遷移量。該方法包括:根據(jù)無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)的樹形結構,對于待存數(shù)據(jù)的每個數(shù)據(jù)副本,分別從預選中間節(jié)點起逐級選擇子節(jié)點直至葉節(jié)點,將該葉節(jié)點確定為數(shù)據(jù)副本的目標存儲位置;子節(jié)點選擇方式為:以待存數(shù)據(jù)的標識和子節(jié)點的標識的組合為原像,按預設的映射方式得出關聯(lián)于該子節(jié)點的映射值,再根據(jù)映射值選擇該中間節(jié)點的一個子節(jié)點;并且每次選擇子節(jié)點之前重新設定所述映射關系;將待存數(shù)據(jù)的所有數(shù)據(jù)副本保存到各數(shù)據(jù)副本的目標存儲位置。
【專利說明】一種存儲數(shù)據(jù)副本的方法和終端裝置以及服務器裝置
【技術領域】
[0001]本發(fā)明涉及計算機【技術領域】,特別地涉及一種存儲數(shù)據(jù)副本的方法和終端裝置以及服務器裝置。
【背景技術】
[0002]分布式數(shù)據(jù)存儲系統(tǒng)通常采用多副本的方式存儲數(shù)據(jù),以提高數(shù)據(jù)存儲的可靠性。存儲設備的物理拓撲結構一般是層級式的,參考圖1,圖1是與本發(fā)明有關的分布式數(shù)據(jù)存儲系統(tǒng)中的存儲設備的物理拓撲結構的示意圖。如圖1所示,分布式數(shù)據(jù)存儲系統(tǒng)設置在數(shù)據(jù)中心10中,數(shù)據(jù)中心10由3個機房組成,每個機房中有多個機架,例如機房2中有機架1、機架2、……、機架NI ;每個機架上又有多個主機(計算機),例如機架I上有主機
1、主機2、......、主機N2 ;每個主機中又有多個存儲介質(zhì)設備(通常是硬盤),例如主機2中
有硬盤1、硬盤2、......、硬盤N3。為示意清晰起見,圖1中僅示出了部分設備。可以看出分
布式數(shù)據(jù)存儲系統(tǒng)是樹形結構,存儲介質(zhì)設備位于葉節(jié)點上,而主機、機架、機房則是中間節(jié)點。
[0003]分布式數(shù)據(jù)存儲系統(tǒng)可以分為帶有中心節(jié)點和無中心節(jié)點兩種形式。在帶有中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)中, 一般含有客戶端、中心節(jié)點及存儲節(jié)點,同時將數(shù)據(jù)分塊處理,多副本存儲,而數(shù)據(jù)的分布位置由中心節(jié)點根據(jù)存儲節(jié)點的負載情況、副本的存儲策略來決定數(shù)據(jù)副本的存儲位置。中心節(jié)點可以是兩臺服務器主備配置,也可以是服務器集群。在無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)中,各個節(jié)點彼此互相連接,數(shù)據(jù)隨機的分布在各個節(jié)點的存儲設備上,存儲位置可以由節(jié)點使用哈希函數(shù)計算得到。
[0004]對于帶有中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)來說,從其中讀取數(shù)據(jù)時,需先訪問中心節(jié)點以獲取數(shù)據(jù)的存儲位置,這使得中心節(jié)點負荷過重,處理效率降低,從而形成整個系統(tǒng)的瓶頸,降低了系統(tǒng)性能。并且在中心節(jié)點出現(xiàn)故障的情況下,該瓶頸會進一步加劇甚至使整個分布式數(shù)據(jù)存儲系統(tǒng)不可用,可靠性較低。
[0005]無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)能夠避免上述瓶頸,但其可靠性仍顯不足。例如某個機架斷電或出現(xiàn)網(wǎng)絡故障,并且某項數(shù)據(jù)的所有副本都在該機架的主機的硬盤上,則該項數(shù)據(jù)不可獲取。另外,在設備數(shù)量發(fā)生改變,例如增加一塊硬盤,或者增加一臺主機等情況,無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)必然出現(xiàn)廣泛的數(shù)據(jù)遷移,以下舉一個簡單的例子對此加以說明。
[0006]例如無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)中有5個節(jié)點(實際上遠不止5個),由哈希函數(shù)計算得到一項待存數(shù)據(jù)的哈希值為13,按節(jié)點數(shù)取模,則為3,于是該待存數(shù)據(jù)被保存在節(jié)點3上;當增加設備,使節(jié)點數(shù)為6,則在讀取數(shù)據(jù)時,將哈希值13對節(jié)點數(shù)6取模得2,即從節(jié)點2上讀取數(shù)據(jù),此時數(shù)據(jù)首先會從節(jié)點3遷移到節(jié)點2。因為節(jié)點數(shù)改變時取模結果必然不同,所以在節(jié)點數(shù)變化之后讀取節(jié)點數(shù)變化之前保存的數(shù)據(jù)時必然發(fā)生數(shù)據(jù)遷移,因此一旦節(jié)點數(shù)發(fā)生變化,數(shù)據(jù)遷移就成為普遍現(xiàn)象,這將導致系統(tǒng)效率降低以及縮短存儲介質(zhì)壽命。
【發(fā)明內(nèi)容】

[0007]有鑒于此,本發(fā)明提供一種存儲數(shù)據(jù)副本的方法和終端裝置以及服務器裝置,有助于提高無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)的可靠性,并降低其在節(jié)點數(shù)目發(fā)生改變時的數(shù)據(jù)遷移量。
[0008]為實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種存儲數(shù)據(jù)副本的方法。
[0009]本發(fā)明的存儲數(shù)據(jù)副本的方法,應用于具有樹形結構的無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)中,所述樹形結構包括葉節(jié)點和中間節(jié)點,存儲介質(zhì)設備位于所述葉節(jié)點上,該方法包括:步驟A:根據(jù)所述樹形結構,對于待存數(shù)據(jù)的每個數(shù)據(jù)副本,分別從所述樹形結構中的預選中間節(jié)點起,按預設的子節(jié)點選擇方式逐級選擇子節(jié)點直至被選子節(jié)點為葉節(jié)點,然后將該葉節(jié)點確定為該數(shù)據(jù)副本的目標存儲位置;其中所述子節(jié)點選擇方式為:以所述待存數(shù)據(jù)的標識和子節(jié)點的標識的組合為原像,按預設的映射方式得出關聯(lián)于該子節(jié)點的映射值,再根據(jù)關聯(lián)于同一所述中間節(jié)點的各個子節(jié)點的多個映射值之間的大小關系選擇該中間節(jié)點的一個子節(jié)點;并且對于每個中間節(jié)點,在每次選擇其子節(jié)點之前重新設定所述映射關系;步驟B:在確定了所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置之后,將所述待存數(shù)據(jù)的所有數(shù)據(jù)副本保存到各數(shù)據(jù)副本的目標存儲位置。
[0010]可選地,對于指定的一個或多個所述中間節(jié)點,在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若該中間節(jié)點被再次選擇,則此時從該中間節(jié)點的所有兄弟節(jié)點中重新進行選擇。
[0011]可選地,在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若對當前數(shù)據(jù)副本確定出的目標存儲位置與另一數(shù)據(jù)副本的已確定出的目標存儲位置相同,則對當前數(shù)據(jù)副本按所述步驟A重新確定目標存儲位置,使所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置各不相同。
[0012]可選地,所述映射方式包括:將所述原像調(diào)整之后使用哈希算法計算出唯一的映射值。
[0013]可選地,所述映射方式包括:將所述原像調(diào)整之后使用哈希算法計算出哈希值;將所述哈希值與預設權重值相乘得到所述映射值;其中所述預設權重值是與所述原像中的子節(jié)點連通的所有葉節(jié)點的權重值之和,所述葉節(jié)點的權重值與該葉節(jié)點上的存儲介質(zhì)設備的存儲容量正相關。
[0014]可選地,所述重新設定所述映射關系的步驟包括:改變將所述原像調(diào)整時采用的參數(shù)。
[0015]根據(jù)本發(fā)明的另一方面,提供了一種終端裝置。
[0016]本發(fā)明的終端裝置用于將待存數(shù)據(jù)的多個數(shù)據(jù)副本保存到具有樹形結構的無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)中,所述樹形結構包括葉節(jié)點和中間節(jié)點,存儲介質(zhì)設備位于所述葉節(jié)點上,該終端裝置包括:選擇模塊,用于根據(jù)所述樹形結構,對于待存數(shù)據(jù)的每個數(shù)據(jù)副本,分別從所述樹形結構中的預選中間節(jié)點起,按預設的子節(jié)點選擇方式逐級選擇子節(jié)點直至被選子節(jié)點為葉節(jié)點,然后將該葉節(jié)點確定為該數(shù)據(jù)副本的目標存儲位置;其中所述子節(jié)點選擇方式為:以所述待存數(shù)據(jù)的標識和子節(jié)點的標識的組合為原像,按預設的映射方式得出關聯(lián)于該子節(jié)點的映射值,再根據(jù)關聯(lián)于同一所述中間節(jié)點的各個子節(jié)點的多個映射值之間的大小關系選擇該中間節(jié)點的一個子節(jié)點;并且對于每個中間節(jié)點,在每次選擇其子節(jié)點之前重新設定所述映射關系;上傳模塊,用于在所述選擇模塊確定了所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置之后,將所述待存數(shù)據(jù)的所有數(shù)據(jù)副本和所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的信息發(fā)送給所述分布式數(shù)據(jù)存儲系統(tǒng)中的計算機,以供所述計算機將所述待存數(shù)據(jù)的所有數(shù)據(jù)副本保存到各數(shù)據(jù)副本的目標存儲位置。
[0017]可選地,所述選擇模塊還用于:對于指定的一個或多個所述中間節(jié)點,在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若該中間節(jié)點被再次選擇,則此時從該中間節(jié)點的所有兄弟節(jié)點中重新進行選擇。
[0018]可選地,所述選擇模塊還用于:在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若對當前數(shù)據(jù)副本確定出的目標存儲位置與另一數(shù)據(jù)副本的已確定出的目標存儲位置相同,則對當前數(shù)據(jù)副本重新確定目標存儲位置,使所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置各不相同。
[0019]可選地,所述映射方式包括:將所述原像調(diào)整之后使用哈希算法計算出唯一的映射值。
[0020]可選地,所述映射方式包括:將所述原像調(diào)整之后使用哈希算法計算出哈希值;將所述哈希值與預設權重值相乘得到所述映射值;其中所述預設權重值是與所述原像中的子節(jié)點連通的所有葉節(jié)點的權重值之和,所述葉節(jié)點的權重值與該葉節(jié)點上的存儲介質(zhì)設備的存儲容量正相關。
[0021 ] 根據(jù)本發(fā)明的又一方面,提供了 一種服務器裝置。
[0022]本發(fā)明的服務器裝置,設置在具有樹形結構的無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)中的服務器內(nèi),用于將待存數(shù)據(jù)的多個數(shù)據(jù)副本保存到所述分布式數(shù)據(jù)存儲系統(tǒng)中,所述樹形結構包括葉節(jié)點和中間節(jié)點,存儲介質(zhì)設備位于所述葉節(jié)點上,該服務器裝置包括:選擇模塊,用于根據(jù)所述樹形結構,對于待存數(shù)據(jù)的每個數(shù)據(jù)副本,分別從所述樹形結構中的預選中間節(jié)點起,按預設的子節(jié)點選擇方式逐級選擇子節(jié)點直至被選子節(jié)點為葉節(jié)點,然后將該葉節(jié)點確定為該數(shù)據(jù)副本的目標存儲位置;其中所述子節(jié)點選擇方式為:以所述待存數(shù)據(jù)的標識和子節(jié)點的標識的組合為原像,按預設的映射方式得出關聯(lián)于該子節(jié)點的映射值,再根據(jù)關聯(lián)于同一所述中間節(jié)點的各個子節(jié)點的多個映射值之間的大小關系選擇該中間節(jié)點的一個子節(jié)點;并且對于每個中間節(jié)點,在每次選擇其子節(jié)點之前重新設定所述映射關系;保存模塊,用于在所述選擇模塊確定了所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置之后,將所述待存數(shù)據(jù)的所有數(shù)據(jù)副本保存到各數(shù)據(jù)副本的目標存儲位置。
[0023]可選地,所述選擇模塊還用于:對于指定的一個或多個所述中間節(jié)點,在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若該中間節(jié)點被再次選擇,則此時從該中間節(jié)點的所有兄弟節(jié)點中重新進行選擇。
[0024]可選地,所述選擇模塊還用于:在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若對當前數(shù)據(jù)副本確定出的目標存儲位置與另一數(shù)據(jù)副本的已確定出的目標存儲位置相同,則對當前數(shù)據(jù)副本重新確定目標存儲位置,使所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置各不相同。
[0025]可選地,所述映射方式包括:將所述原像調(diào)整之后使用哈希算法計算出唯一的映射值。
[0026]可選地,所述映射方式包括:將所述原像調(diào)整之后使用哈希算法計算出哈希值;將所述哈希值與預設權重值相乘得到所述映射值;其中所述預設權重值是與所述原像中的子節(jié)點連通的所有葉節(jié)點的權重值之和,所述葉節(jié)點的權重值與該葉節(jié)點上的存儲介質(zhì)設備的存儲容量正相關。
[0027]可選地,還包括確認模塊,用于在所述分布式數(shù)據(jù)存儲系統(tǒng)中的節(jié)點發(fā)生改變的情況下觸發(fā)當前所述分布式數(shù)據(jù)存儲系統(tǒng)中保存的多項數(shù)據(jù)的各自的一個預選副本所在的服務器中的所述選擇模塊;所述選擇模塊還用于在被所述確認模塊觸發(fā)的情況下將所述預選副本以及與該副本相同的其他副本作為所述待存數(shù)據(jù),確定該待存數(shù)據(jù)中的各個數(shù)據(jù)副本的新的目標存儲位置,然后將該各個數(shù)據(jù)副本中原存儲位置不為該新的目標存儲位置的數(shù)據(jù)副本遷移到該新的目標存儲位置。
[0028]根據(jù)本發(fā)明的技術方案,在確定副本的目標存儲位置時,對于待存數(shù)據(jù)的每個數(shù)據(jù)副本,分別從分布式數(shù)據(jù)存儲系統(tǒng)的樹形結構中的預選中間節(jié)點起,按預設的子節(jié)點選擇方式逐級選擇子節(jié)點直至被選子節(jié)點為葉節(jié)點,然后將該葉節(jié)點確定為該數(shù)據(jù)副本的目標存儲位置,也就是說,從選定的中間節(jié)點起層層選擇子節(jié)點直至存儲介質(zhì)設備所在的葉節(jié)點,并且對于每個中間節(jié)點來說,每次選擇其子節(jié)點時的選擇方式有變化從而使選擇結果盡可能地改變,在層層選擇子節(jié)點的情況下,這種改變能夠使多個副本的目標存儲位置盡可能地分散,有助于提高分布式數(shù)據(jù)存儲系統(tǒng)在設備出現(xiàn)故障時的魯棒性,從而提高了分布式數(shù)據(jù)存儲系統(tǒng)的可靠性。并且可以指定一個或多個中間節(jié)點,使一項待存數(shù)據(jù)只有一個副本在該中間節(jié)點的存儲設備上,也就是說將數(shù)據(jù)副本分布在不同的中間節(jié)點例如機架或主機上,這樣當一個中間節(jié)點失效例如機架或者一臺主機不能服務時,仍有其他副本能夠服務,從而減少數(shù)據(jù)丟失以及不可獲取性的風險及概率,提高分布式數(shù)據(jù)存儲系統(tǒng)的可靠性。在分布式數(shù)據(jù)存儲系統(tǒng)新增存儲設備的情況下,有相當多的數(shù)據(jù)副本并不需要遷移,數(shù)據(jù)遷移量相當小,對系統(tǒng)效率的影響也較低,使得分布式數(shù)據(jù)存儲系統(tǒng)比較易于擴容。
【專利附圖】

【附圖說明】
[0029]附圖用于更好地理解本發(fā)明,不構成對本發(fā)明的不當限定。其中:
[0030]圖1是與本發(fā)明有關的分布式數(shù)據(jù)存儲系統(tǒng)中的存儲設備的物理拓撲結構的示意圖;
[0031]圖2是根據(jù)本發(fā)明實施例的終端設備與分布式數(shù)據(jù)存儲系統(tǒng)連接狀態(tài)的示意圖;
[0032]圖3是根據(jù)本發(fā)明實施例的存儲數(shù)據(jù)副本的方法的示意圖;
[0033]圖4是根據(jù)本發(fā)明實施例的終端裝置的基本結構的示意圖;
[0034]圖5是根據(jù)本發(fā)明實施例的服務器裝置的基本結構的示意圖。
【具體實施方式】
[0035]以下結合附圖對本發(fā)明的示范性實施例做出說明,其中包括本發(fā)明實施例的各種細節(jié)以助于理解,應當將它們認為僅僅是示范性的。因此,本領域普通技術人員應當認識至IJ,可以對這里描述的實施例做出各種改變和修改,而不會背離本發(fā)明的范圍和精神。同樣,為了清楚和簡明,以下的描述中省略了對公知功能和結構的描述。
[0036]圖2是根據(jù)本發(fā)明實施例的終端設備與分布式數(shù)據(jù)存儲系統(tǒng)連接狀態(tài)的示意圖。如圖2所示,多個終端設備21、22、……、2M與分布式數(shù)據(jù)存儲系統(tǒng)20連接,本實施例中該分布式數(shù)據(jù)存儲系統(tǒng)20的物理拓撲同樣采用圖1所示的樹狀結構。各個終端設備保存有該物理拓撲的信息,從而終端設備能夠計算要存儲到系統(tǒng)20中的各數(shù)據(jù)副本的目標存儲位置。
[0037]終端設備對于待存到系統(tǒng)20中的數(shù)據(jù)的多個數(shù)據(jù)副本,依次計算每個數(shù)據(jù)副本在系統(tǒng)20中的目標存儲位置,也就是說為每個數(shù)據(jù)副本確定出系統(tǒng)20中的一個葉節(jié)點,數(shù)據(jù)副本保存在位于該葉節(jié)點的存儲介質(zhì)設備中。在確定葉節(jié)點時,從用戶在系統(tǒng)20中指定的一個中間節(jié)點起,逐級選擇子節(jié)點直至被選子節(jié)點為葉節(jié)點。確定一個數(shù)據(jù)副本的目標存儲位置的流程如圖3所示。圖3是根據(jù)本發(fā)明實施例的存儲數(shù)據(jù)副本的方法的示意圖。
[0038]步驟S31:獲取用戶設定的起始中間節(jié)點的標識。從本步驟起,通過循環(huán)的流程,對一項待存數(shù)據(jù)的各個副本的目標存儲位置加以確定,得到一個結果集,該結果集是一項待存數(shù)據(jù)的所有副本的目標存儲位置的集合。在以下的步驟中,參考圖1,以起始中間節(jié)點為機房2為例進行說明。
[0039]步驟S32:從當前節(jié)點的多個子節(jié)點中選擇一個子節(jié)點。在第一次執(zhí)行本步驟時,該當前節(jié)點為用戶設定的起始中間節(jié)點。在選擇子節(jié)點時,先得出每個子節(jié)點的得分,優(yōu)選的方式是根據(jù)待存數(shù)據(jù)的標識(例如數(shù)據(jù)的文件名)和子節(jié)點的標識按照策略中的映射方式得出一個映射值,該映射值即為該子節(jié)點對于本次待存數(shù)據(jù)的得分。在上述的映射方式中,具體可以采用哈希算法進行計算。因為在后面的步驟S36中需要改變映射方式,所以在本步驟中,對于待存數(shù)據(jù)的標識和子節(jié)點的標識以及一個可調(diào)整的參數(shù)這三者的組合,采用哈希函數(shù)進行計算得到一個哈希值,將該哈希值作為上述得分。在得出起始中間節(jié)點的每個子節(jié)點的得分之后,根據(jù)各個得分的大小選擇一個子節(jié)點,例如選擇得分最高的子節(jié)點。
[0040]另一種映射方式即計算上述的`得分的方式是考慮到盡量把數(shù)據(jù)保存到容量較大的存儲介質(zhì)設備中,因此對每個葉節(jié)點賦予權重,該權重與該葉節(jié)點上的存儲介質(zhì)設備的存儲容量正相關,例如ITB的硬盤的權重為1,3TB的硬盤的權重為3。中間節(jié)點的權重是其所有子節(jié)點權重之和。節(jié)點的得分即在上述的哈希值的基礎上再乘以節(jié)點的權重。這樣,在按照得分最高來選擇一個中間節(jié)點的子節(jié)點時,存儲容量更大的節(jié)點就有更大的可能性被選取。
[0041]步驟S33:判斷步驟S32中選擇的節(jié)點是否為葉節(jié)點。若是,則進入步驟S34,否則進入步驟S38。在步驟S38之后返回步驟S32,此時步驟S32中的當前節(jié)點為步驟S33中被判斷的節(jié)點。
[0042]步驟S34:判斷步驟S32中選擇的葉節(jié)點是否已存在于結果集中。為了提高可靠性,要使一項待存數(shù)據(jù)的多個副本分布在不同的存儲介質(zhì)設備中。所以本步驟的判斷結果若為是,則舍棄本次對葉節(jié)點的選擇,并且進入步驟S37,并在再次執(zhí)行的步驟S32中對當前副本的目標存儲位置重新加以確定;否則保留本次對葉節(jié)點的選擇,進入步驟S35。
[0043]步驟S35:將步驟S32中選擇的葉節(jié)點放入結果集中。本步驟之后進入步驟S36。
[0044]步驟S36:判斷當前待存數(shù)據(jù)的所有副本是否都已確定目標存儲位置,若是,結束流程,否則進入步驟S37。
[0045]步驟S37:將用戶設定的起始中間節(jié)點設定為當前節(jié)點。然后進入步驟S38。
[0046]步驟S38:修改步驟S32中的映射方式。即改變步驟S32中的可調(diào)整的參數(shù)。這樣做的目的是改變節(jié)點的得分從而改變步驟S32中對節(jié)點的選擇結果。對該可調(diào)整的參數(shù)進行調(diào)整的方式可以有很多,只要達到了改變最終的得分即可,可以是將生成的隨機數(shù)作為該參數(shù),也可以是每次調(diào)整時對該參數(shù)累加一個大于零的固定或隨機值。當然,也可以采用改變哈希函數(shù)的方法來修改步驟S32中的映射方式。本步驟之后返回步驟S32。
[0047]從以上的流程可以看出,在確定副本的目標存儲位置時,是從選定的中間節(jié)點起層層選擇子節(jié)點直至存儲介質(zhì)設備所在的葉節(jié)點,并且對于每個中間節(jié)點來說,每次選擇其子節(jié)點時的選擇方式有變化從而使選擇結果盡可能地改變,在層層選擇子節(jié)點的情況下,這種改變能夠使多個副本的目標存儲位置盡可能地分散,有助于提高分布式數(shù)據(jù)存儲系統(tǒng)在設備出現(xiàn)故障時的魯棒性,從而提高了分布式數(shù)據(jù)存儲系統(tǒng)的可靠性。
[0048]當然,如上所述,在以上的流程中每次選擇其子節(jié)點時的選擇方式有變化從而使選擇結果盡可能地改變,但這種改變并不是絕對的,在實際中仍以一個較小的概率會出現(xiàn)兩次選擇結果相同的情況。例如副本I被確定在機架I下的某個主機的硬盤上,副本2也被確定在機架I下的某個主機的硬盤上,這樣這兩個副本就會因為機架I的整體故障(例如斷電、網(wǎng)絡故障等)變得不可用。另外在實際的分布式數(shù)據(jù)存儲系統(tǒng)中,更為理想的方式是將每個副本都分布在某一層級的不同存儲位置上,例如有8個副本,系統(tǒng)中有10個機架,則最好是這8個副本分布在不同的機架上?;蛘咭蚰承嶋H情況,有些機架的可靠性較低,則最好不要使多個副本都處于這樣的機架上的存儲設備中。所以在本實施例中,一個優(yōu)選的方式是指定一個或多個中間節(jié)點,當執(zhí)行圖3所示的流程時,向步驟S32和步驟S33之間增加一個步驟,在該步驟中判斷步驟S32中選擇的子節(jié)點是否曾經(jīng)被選擇過。這里分兩種情況,一種情況是對于一個數(shù)據(jù)副本,在第一次確定其目標存儲位置之后發(fā)現(xiàn)該目標存儲位置上已有其他數(shù)據(jù)副本(即步驟S34中判斷結果為是的情形),在該重新確定該數(shù)據(jù)副本的目標存儲位置的過程中,選擇的子節(jié)點與第一次確定該數(shù)據(jù)副本的目標存儲位置時選擇的子節(jié)點相同。這種情況的概率較低,因為中間要經(jīng)過步驟S38。另一種情況是對于不同的數(shù)據(jù)副本,在確定它們的目標存儲位置的過程中選擇了同一子節(jié)點,例如確定數(shù)據(jù)副本I的目標存儲位置是主機2中的硬盤2,確定數(shù)據(jù)副本2的目標存儲位置的過程中,在一次執(zhí)行步驟S32時也選中了主機2。此時在步驟S32和步驟S33之間增加的步驟中判斷當前選擇的中間節(jié)點是否曾經(jīng)被選擇過,并且判斷結果為“是”,則直接進入步驟S38,并且在接下來重新執(zhí)行的步驟S32中,將被重復選擇的中間節(jié)點的父節(jié)點作為當前節(jié)點,也就是說在該被重復選擇的中間節(jié)點的兄弟節(jié)點中重新選擇。如上例,確認主機2曾經(jīng)被選擇過,則在主機2所在機架中重新選擇另一臺主機。通過以上的處理,能夠使一項待存數(shù)據(jù)在指定的中間節(jié)點例如機架、主機等上只有一個副本,也就是說將數(shù)據(jù)副本分布在不同的機架或主機上,這樣當一個機架或者一臺主機不能服務時,仍有其他副本能夠服務,從而減少數(shù)據(jù)丟失以及不可獲取性的風險及概率,提高分布式數(shù)據(jù)存儲系統(tǒng)的可靠性。
[0049]由終端設備執(zhí)行圖3所示的流程,能夠對一項待存數(shù)據(jù)的各個數(shù)據(jù)副本在分布式數(shù)據(jù)存儲系統(tǒng)中的目標存儲位置得以確定。對于該分布式數(shù)據(jù)存儲系統(tǒng)來說,由于數(shù)據(jù)量的不斷增加,系統(tǒng)中常常需要新增存儲設備,例如增加一個硬盤、增加一臺主機、或者增加一個機架等,也就是說節(jié)點會發(fā)生改變;并且需要將已有設備中的一些數(shù)據(jù)遷移到該新增存儲設備中。對于這種情況,在本實施例中,分布式數(shù)據(jù)存儲系統(tǒng)中的主機也具備上述的終端設備所具有的確定數(shù)據(jù)副本的目標存儲位置的功能,從而能夠在分布式數(shù)據(jù)存儲系統(tǒng)新增存儲設備的情況下,對該系統(tǒng)中的已存數(shù)據(jù)的新的存儲位置加以確定,需要說明的是,只要系統(tǒng)中出現(xiàn)新增存儲設備的情況,各個主機都會進行計算以做出該確定。當然這種計算僅是在系統(tǒng)中出現(xiàn)新增存儲設備時進行,而且從圖3的流程可以看出這種計算比較簡單,占用的CPU資源較少,所以主機重新確定已存數(shù)據(jù)的新的存儲位置的工作并不會對系統(tǒng)性能帶來太大的影響。
[0050]另外,對于一項已存數(shù)據(jù),只需由一臺主機的一個線程來執(zhí)行上述計算,該是保存有該項已存數(shù)據(jù)的一個副本的主機,可以在終端設備確定該項已存數(shù)據(jù)的各個數(shù)據(jù)副本的目標存儲位置時就設定該主機。例如,終端設備依次確定了待存數(shù)據(jù)A的第I個至第8個副本的目標存儲位置,其中第I個副本將保存在第2機架的第4主機的一個硬盤上,然后將數(shù)據(jù)發(fā)送給各個目標存儲位置所在的主機,當分布式數(shù)據(jù)存儲系統(tǒng)新增存儲設備時,由保存數(shù)據(jù)A的第I個副本(即最先被終端設備確定目標存儲位置的副本)的主機即第2機架的第4主機計算數(shù)據(jù)A的8個副本的新的目標存儲位置,此時該第4主機可以按圖3的流程來執(zhí)行。從圖3的流程可以看出,對于這8個副本來說,新的目標存儲位置有可能與原有存儲位置相同,特別是在物理拓撲上存儲位置與新增存儲設備距離較遠的數(shù)據(jù)副本,存儲位置發(fā)生改變的可能性相當?shù)?。也就是說分布式數(shù)據(jù)存儲系統(tǒng)新增存儲設備時,有相當多的數(shù)據(jù)副本并不需要遷移,數(shù)據(jù)遷移量相當小,對系統(tǒng)效率的影響也較低,使得分布式數(shù)據(jù)存儲系統(tǒng)比較易于擴容。
[0051]以下對于本發(fā)明實施例中的終端裝置的基本結構做出說明。該終端裝置設置在終端設備例如個人計算機中,通過互聯(lián)網(wǎng)與具有樹形結構的分布式數(shù)據(jù)存儲系統(tǒng)連接。圖4是根據(jù)本發(fā)明實施例的終端裝置的基本結構的示意圖。如圖4所示,終端裝置40主要包括選擇模塊41和上傳模塊42。
[0052]選擇模塊41用于根據(jù)分布式數(shù)據(jù)存儲系統(tǒng)的樹形結構,對于待存數(shù)據(jù)的每個數(shù)據(jù)副本,分別從該樹形結構中的預選中間節(jié)點起,按預設的子節(jié)點選擇方式逐級選擇子節(jié)點直至被選子節(jié)點為葉節(jié)點,然后將該葉節(jié)點確定為該數(shù)據(jù)副本的目標存儲位置;其中子節(jié)點選擇方式為:以待存數(shù)據(jù)的標識和子節(jié)點的標識的組合為原像,按預設的映射方式得出關聯(lián)于該子節(jié)點的映射值,再根據(jù)關聯(lián)于同一中間節(jié)點的各個子節(jié)點的多個映射值之間的大小關系選擇該中間節(jié)點的一個子節(jié)點;并且對于每個中間節(jié)點,在每次選擇其子節(jié)點之前重新設定映射關系。
[0053]上傳模塊42用于在選擇模塊41確定了待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置之后,將待存數(shù)據(jù)的所有數(shù)據(jù)副本和待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的信息發(fā)送給分布式數(shù)據(jù)存儲系統(tǒng)中的計算機,以供該計算機將待存數(shù)據(jù)的所有數(shù)據(jù)副本保存到各數(shù)據(jù)副本的目標存儲位置。
[0054]選擇模塊41還可用于:對于指定的一個或多個中間節(jié)點,在確定待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若該中間節(jié)點被再次選擇,則此時從該中間節(jié)點的所有兄弟節(jié)點中重新進行選擇。
[0055]選擇模塊41還可用于:在確定待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若對當前數(shù)據(jù)副本確定出的目標存儲位置與另一數(shù)據(jù)副本的已確定出的目標存儲位置相同,則對當前數(shù)據(jù)副本重新確定目標存儲位置,使待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置各不相同。
[0056]圖5是根據(jù)本發(fā)明實施例的服務器裝置的基本結構的示意圖。該服務器裝置設置在具有樹形結構的分布式數(shù)據(jù)存儲系統(tǒng)中的服務器內(nèi),用于將待存數(shù)據(jù)的多個數(shù)據(jù)副本保存到該分布式數(shù)據(jù)存儲系統(tǒng)中。如圖5所示,服務器裝置50主要包括選擇模塊51和保存模塊52。其中選擇模塊51可以米用與選擇模塊51類似的結構,而保存模塊52用于在選擇模塊51確定了待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置之后,將待存數(shù)據(jù)的所有數(shù)據(jù)副本保存到各數(shù)據(jù)副本的目標存儲位置。
[0057]服務器裝置50還可以包括確認模塊(圖中未示出),該確認模塊用于在分布式數(shù)據(jù)存儲系統(tǒng)中的節(jié)點發(fā)生改變的情況下觸發(fā)當前分布式數(shù)據(jù)存儲系統(tǒng)中保存的多項數(shù)據(jù)的各自的一個預選副本所在的服務器中的選擇模塊51 ;這樣,選擇模塊51還用于在被確認模塊觸發(fā)的情況下將該預選副本以及與該副本相同的其他副本作為待存數(shù)據(jù),確定該待存數(shù)據(jù)中的各個數(shù)據(jù)副本的新的目標存儲位置,然后將該各個數(shù)據(jù)副本中原存儲位置不為該新的目標存儲位置的數(shù)據(jù)副本遷移到該新的目標存儲位置。
[0058]以上結合具體實施例描述了本發(fā)明的基本原理,但是,需要指出的是,對本領域的普通技術人員而言,能夠理解本發(fā)明的方法和設備的全部或者任何步驟或者部件,可以在任何計算裝置(包括處理器、存儲介質(zhì)等)或者計算裝置的網(wǎng)絡中,以硬件、固件、軟件或者它們的組合加以實現(xiàn),這是本領域普通技術人員在閱讀了本發(fā)明的說明的情況下運用他們的基本編程技能就能實現(xiàn)的。
[0059]因此,本發(fā)明的目的還可以通過在任何計算裝置上運行一個程序或者一組程序來實現(xiàn)。所述計算裝置可以是公知的通用裝置。因此,本發(fā)明的目的也可以僅僅通過提供包含實現(xiàn)所述方法或者裝置的程序代碼的程序產(chǎn)品來實現(xiàn)。也就是說,這樣的程序產(chǎn)品也構成本發(fā)明,并且存儲有這樣的程序產(chǎn)品的存儲介質(zhì)也構成本發(fā)明。顯然,所述存儲介質(zhì)可以是任何公知的存儲介質(zhì)或者將來開發(fā)出的任何存儲介質(zhì)。
[0060]還需要指出的是,在本發(fā)明的裝置和方法中,顯然,各部件或各步驟是可以分解和/或重新組合的。這些分解和/或重新組合應視為本發(fā)明的等效方案。并且,執(zhí)行上述系列處理的步驟可以自然地按照說明的順序按時間順序執(zhí)行,但是并不需要一定按照時間順序執(zhí)行。某些步驟可以并行或彼此獨立地執(zhí)行。
[0061]上述【具體實施方式】,并不構成對本發(fā)明保護范圍的限制。本領域技術人員應該明白的是,取決于設計要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進等,均應包含在本發(fā)明保護范圍之內(nèi)。
【權利要求】
1.一種存儲數(shù)據(jù)副本的方法,應用于具有樹形結構的無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)中,所述樹形結構包括葉節(jié)點和中間節(jié)點,存儲介質(zhì)設備位于所述葉節(jié)點上,其特征在于,該方法包括: 步驟A:根據(jù)所述樹形結構,對于待存數(shù)據(jù)的每個數(shù)據(jù)副本,分別從所述樹形結構中的預選中間節(jié)點起,按預設的子節(jié)點選擇方式逐級選擇子節(jié)點直至被選子節(jié)點為葉節(jié)點,然后將該葉節(jié)點確定為該數(shù)據(jù)副本的目標存儲位置; 其中所述子節(jié)點選擇方式為:以所述待存數(shù)據(jù)的標識和子節(jié)點的標識的組合為原像,按預設的映射方式得出關聯(lián)于該子節(jié)點的映射值,再根據(jù)關聯(lián)于同一所述中間節(jié)點的各個子節(jié)點的多個映射值之間的大小關系選擇該中間節(jié)點的一個子節(jié)點;并且對于每個中間節(jié)點,在每次選擇其子節(jié)點之前重新設定所述映射關系; 步驟B:在確定了所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置之后,將所述待存數(shù)據(jù)的所有數(shù)據(jù)副本保存到各數(shù)據(jù)副本的目標存儲位置。
2.根據(jù)權利要求1所述的方法,其特征在于,對于指定的一個或多個所述中間節(jié)點,在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若該中間節(jié)點被再次選擇,則此時從該中間節(jié)點的所有兄弟節(jié)點中重新進行選擇。
3.根據(jù)權利要求1所述的方法,其特征在于,在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若對當前數(shù)據(jù)副本確定出的目標存儲位置與另一數(shù)據(jù)副本的已確定出的目標存儲位置相同,則對當前數(shù)據(jù)副本按所述步驟A重新確定目標存儲位置,使所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置各不相同。
4.根據(jù)權利要求1所述的方法,其特征在于,所述映射方式包括:將所述原像調(diào)整之后使用哈希算法計算出唯一的映射值。
5.根據(jù)權利要求1所述的方法,其特征在于,所述映射方式包括: 將所述原像調(diào)整之后使用哈希算法計算出哈希值; 將所述哈希值與預設權重值相乘得到所述映射值; 其中所述預設權重值是與所述原像中的子節(jié)點連通的所有葉節(jié)點的權重值之和,所述葉節(jié)點的權重值與該葉節(jié)點上的存儲介質(zhì)設備的存儲容量正相關。
6.根據(jù)權利要求4或5所述的方法,其特征在于,所述重新設定所述映射關系的步驟包括:改變將所述原像調(diào)整時采用的參數(shù)。
7.—種終端裝置,用于將待存數(shù)據(jù)的多個數(shù)據(jù)副本保存到具有樹形結構的無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)中,所述樹形結構包括葉節(jié)點和中間節(jié)點,存儲介質(zhì)設備位于所述葉節(jié)點上,其特征在于,該終端裝置包括: 選擇模塊,用于根據(jù)所述樹形結構,對于待存數(shù)據(jù)的每個數(shù)據(jù)副本,分別從所述樹形結構中的預選中間節(jié)點起,按預設的子節(jié)點選擇方式逐級選擇子節(jié)點直至被選子節(jié)點為葉節(jié)點,然后將該葉節(jié)點確定為該數(shù)據(jù)副本的目標存儲位置;其中所述子節(jié)點選擇方式為:以所述待存數(shù)據(jù)的標識和子節(jié)點的標識的組合為原像,按預設的映射方式得出關聯(lián)于該子節(jié)點的映射值,再根據(jù)關聯(lián)于同一所述中間節(jié)點的各個子節(jié)點的多個映射值之間的大小關系選擇該中間節(jié)點的一個子節(jié)點;并且對于每個中間節(jié)點,在每次選擇其子節(jié)點之前重新設定所述映射關系; 上傳模塊,用于在所述選擇模塊確定了所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置之后,將所述待存數(shù)據(jù)的所有數(shù)據(jù)副本和所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的信息發(fā)送給所述分布式數(shù)據(jù)存儲系統(tǒng)中的計算機,以供所述計算機將所述待存數(shù)據(jù)的所有數(shù)據(jù)副本保存到各數(shù)據(jù)副本的目標存儲位置。
8.根據(jù)權利要求7所述的終端裝置,其特征在于,所述選擇模塊還用于:對于指定的一個或多個所述中間節(jié)點,在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若該中間節(jié)點被再次選擇,則此時從該中間節(jié)點的所有兄弟節(jié)點中重新進行選擇。
9.根據(jù)權利要求7所述的終端裝置,其特征在于,所述選擇模塊還用于:在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若對當前數(shù)據(jù)副本確定出的目標存儲位置與另一數(shù)據(jù)副本的已確定出的目標存儲位置相同,則對當前數(shù)據(jù)副本重新確定目標存儲位置,使所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置各不相同。
10.根據(jù)權利要求7所述的終端裝置,其特征在于,所述映射方式包括:將所述原像調(diào)整之后使用哈希算法計算出唯一的映射值。
11.根據(jù)權利要求7所述的終端裝置,其特征在于,所述映射方式包括: 將所述原像調(diào)整之后使用哈希算法計算出哈希值; 將所述哈希值與預設權重值相乘得到所述映射值; 其中所述預設權重值是與所述原像中的子節(jié)點連通的所有葉節(jié)點的權重值之和,所述葉節(jié)點的權重值與該葉節(jié)點上的存儲介質(zhì)設備的存儲容量正相關。
12.一種服務器裝置,設置在具有樹形結構的無中心節(jié)點的分布式數(shù)據(jù)存儲系統(tǒng)中的服務器內(nèi),用于將待存數(shù)據(jù)的多個數(shù)據(jù)副本保存到所述分布式數(shù)據(jù)存儲系統(tǒng)中,所述樹形結構包括葉節(jié)點和中間節(jié)點,存儲介質(zhì)設備位于所述葉節(jié)點上,其特征在于,該服務器裝置包括:` 選擇模塊,用于根據(jù)所述樹形結構,對于待存數(shù)據(jù)的每個數(shù)據(jù)副本,分別從所述樹形結構中的預選中間節(jié)點起,按預設的子節(jié)點選擇方式逐級選擇子節(jié)點直至被選子節(jié)點為葉節(jié)點,然后將該葉節(jié)點確定為該數(shù)據(jù)副本的目標存儲位置;其中所述子節(jié)點選擇方式為:以所述待存數(shù)據(jù)的標識和子節(jié)點的標識的組合為原像,按預設的映射方式得出關聯(lián)于該子節(jié)點的映射值,再根據(jù)關聯(lián)于同一所述中間節(jié)點的各個子節(jié)點的多個映射值之間的大小關系選擇該中間節(jié)點的一個子節(jié)點;并且對于每個中間節(jié)點,在每次選擇其子節(jié)點之前重新設定所述映射關系; 保存模塊,用于在所述選擇模塊確定了所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置之后,將所述待存數(shù)據(jù)的所有數(shù)據(jù)副本保存到各數(shù)據(jù)副本的目標存儲位置。
13.根據(jù)權利要求12所述的服務器裝置,其特征在于,所述選擇模塊還用于:對于指定的一個或多個所述中間節(jié)點,在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若該中間節(jié)點被再次選擇,則此時從該中間節(jié)點的所有兄弟節(jié)點中重新進行選擇。
14.根據(jù)權利要求12所述的服務器裝置,其特征在于,所述選擇模塊還用于:在確定所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置的過程中,若對當前數(shù)據(jù)副本確定出的目標存儲位置與另一數(shù)據(jù)副本的已確定出的目標存儲位置相同,則對當前數(shù)據(jù)副本重新確定目標存儲位置,使所述待存數(shù)據(jù)的所有數(shù)據(jù)副本的目標存儲位置各不相同。
15.根據(jù)權利要求12所述的服務器裝置,其特征在于,所述映射方式包括:將所述原像調(diào)整之后使用哈希算法計算出唯一的映射值。
16.根據(jù)權利要求12所述的服務器裝置,其特征在于,所述映射方式包括: 將所述原像調(diào)整之后使用哈希算法計算出哈希值; 將所述哈希值與預設權重值相乘得到所述映射值; 其中所述預設權重值是與所述原像中的子節(jié)點連通的所有葉節(jié)點的權重值之和,所述葉節(jié)點的權重值與該葉節(jié)點上的存儲介質(zhì)設備的存儲容量正相關。
17.根據(jù)權利要求12至16中任一項所述的服務器裝置,其特征在于, 還包括確認模塊,用于在所述分布式數(shù)據(jù)存儲系統(tǒng)中的節(jié)點發(fā)生改變的情況下觸發(fā)當前所述分布式數(shù)據(jù)存儲系統(tǒng)中保存的多項數(shù)據(jù)的各自的一個預選副本所在的服務器中的所述選擇模塊; 所述選擇模塊還用于在被所述確認模塊觸發(fā)的情況下將所述預選副本以及與該副本相同的其他副本作為所述待存數(shù)據(jù),確定該待存數(shù)據(jù)中的各個數(shù)據(jù)副本的新的目標存儲位置,然后將該各個數(shù)據(jù)副本中原存儲位置不為該新的目標存儲位置的數(shù)據(jù)副本遷移到該新的目標存儲位置。`
【文檔編號】H04L29/08GK103634401SQ201310641751
【公開日】2014年3月12日 申請日期:2013年12月3日 優(yōu)先權日:2013年12月3日
【發(fā)明者】羅文彬, 張波, 楊萬元, 楊小龍 申請人:北京京東尚科信息技術有限公司, 北京京東世紀貿(mào)易有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
寿宁县| 天气| 南充市| 钦州市| 蓝山县| 文登市| 姜堰市| 边坝县| 鄂州市| 临高县| 游戏| 宜章县| 辰溪县| 庆元县| 贵德县| 广河县| 平昌县| 敖汉旗| 温泉县| 雷波县| 金湖县| 澄城县| 汾西县| 嘉鱼县| 建水县| 保亭| 中方县| 平昌县| 巴东县| 湖北省| 孙吴县| 安乡县| 高雄县| 峨眉山市| 昔阳县| 禹城市| 芦溪县| 汝州市| 监利县| 涿鹿县| 榕江县|