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

內(nèi)存集群的存儲方法及裝置、內(nèi)存集群的讀取方法及裝置與流程

文檔序號:12786350閱讀:392來源:國知局
本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,特別涉及一種內(nèi)存集群的數(shù)據(jù)存儲方法及裝置和一種內(nèi)存集群的讀取方法及裝置。
背景技術(shù)
::一致性哈希算法提出了在動態(tài)變化的緩存環(huán)境中,判定哈希算法好壞的四個定義:平衡性:平衡性是指哈希的結(jié)果能夠盡可能分布到所有的緩沖中去,這樣可以使得所有的緩沖空間都得到利用。很多哈希算法都能夠滿足這一條件。單調(diào)性:單調(diào)性是指如果已經(jīng)有一些內(nèi)容通過哈希分派到了相應(yīng)的緩沖中,又有新的緩沖加入到系統(tǒng)中。哈希的結(jié)果應(yīng)能夠保證原有已分配的內(nèi)容可以被映射到原有的或者新的緩沖中去,而不會被映射到舊的緩沖集合中的其他緩沖區(qū)。分散性:在分布式環(huán)境中,終端有可能看不到所有的緩沖,而是只能看到其中的一部分。當(dāng)終端希望通過哈希過程將內(nèi)容映射到緩沖上時,由于不同終端所見的緩沖范圍有可能不同,從而導(dǎo)致哈希的結(jié)果不一致,最終的結(jié)果是相同的內(nèi)容被不同的終端映射到不同的緩沖區(qū)中。這種情況顯然是應(yīng)該避免的,因?yàn)樗鼘?dǎo)致相同內(nèi)容被存儲到不同緩沖中去,降低了系統(tǒng)存儲的效率。分散性的定義就是上述情況發(fā)生的嚴(yán)重程度。好的哈希算法應(yīng)能夠盡量避免不一致的情況發(fā)生,也就是盡量降低分散性。負(fù)載:負(fù)載問題實(shí)際上是從另一個角度看待分散性問題。既然不同的終端可能將相同的內(nèi)容映射到不同的緩沖區(qū)中,那么對于一個特定的緩沖區(qū)而言,也可能被不同的用戶映射為不同的內(nèi)容。與分散性 一樣,這種情況也是應(yīng)當(dāng)避免的,因此好的哈希算法應(yīng)能夠盡量降低緩沖的負(fù)荷。如果以單物理機(jī)為實(shí)例最小單元,按照傳統(tǒng)一致性哈希的環(huán)形空間構(gòu)建模式,如圖1所示,某個分區(qū)的數(shù)據(jù)將會比較均勻的分布在所有服務(wù)器上,在訪問時能夠比較好的起到均衡作用。但如果應(yīng)對單實(shí)例實(shí)效,其他節(jié)點(diǎn)托管,然后失效節(jié)點(diǎn)恢復(fù)再進(jìn)行數(shù)據(jù)挪移的情況下,相鄰的實(shí)例(即圖中的節(jié)點(diǎn))在物理上可能分布在不同的服務(wù)器上,內(nèi)存空間內(nèi)的挪移恢復(fù)可能需要在不同物理機(jī)間通過網(wǎng)絡(luò)傳輸數(shù)據(jù)進(jìn)行恢復(fù),系統(tǒng)服務(wù)可用性差。技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的技術(shù)問題是:如何使得相鄰節(jié)點(diǎn)存儲在相同的服務(wù)器中,從而使得內(nèi)存空間內(nèi)的數(shù)據(jù)挪移和恢復(fù)更加高效。根據(jù)本發(fā)明實(shí)施例的一個方面,提供了一種內(nèi)存集群的數(shù)據(jù)存儲方法,包括:基于一致性哈希運(yùn)算構(gòu)建各個節(jié)點(diǎn)的原始哈希環(huán);將原始哈希環(huán)中的各個節(jié)點(diǎn)按照相鄰關(guān)系進(jìn)行分組,使得相鄰節(jié)點(diǎn)具有相同的服務(wù)器編號,以構(gòu)建邏輯哈希環(huán);按照邏輯哈希環(huán)將各個節(jié)點(diǎn)存儲到相應(yīng)的服務(wù)器;建立各個節(jié)點(diǎn)在原始哈希環(huán)和邏輯哈希環(huán)的映射關(guān)系。根據(jù)本發(fā)明實(shí)施例的另一個方面,提供了一種內(nèi)存集群的數(shù)據(jù)讀取方法,包括:基于一致性哈希運(yùn)算確定欲讀取數(shù)據(jù)在原始哈希環(huán)上的節(jié)點(diǎn);根據(jù)各個節(jié)點(diǎn)在原始哈希環(huán)和邏輯哈希環(huán)的映射關(guān)系,確定欲讀取數(shù)據(jù)在邏輯哈希環(huán)上的節(jié)點(diǎn);根據(jù)邏輯哈希環(huán)上的節(jié)點(diǎn)對應(yīng)的服務(wù)器編號到相應(yīng)的服務(wù)器進(jìn)行數(shù)據(jù)的讀取。根據(jù)本發(fā)明實(shí)施例的又一個方面,提供了一種內(nèi)存集群的數(shù)據(jù)存儲裝置,包括:原始哈希環(huán)構(gòu)建模塊,用于基于一致性哈希運(yùn)算構(gòu)建各個節(jié)點(diǎn)的原始哈希環(huán);邏輯哈希環(huán)構(gòu)建模塊,將原始哈希環(huán)中的各個節(jié)點(diǎn)按照相鄰關(guān)系進(jìn)行分組,使得相鄰節(jié)點(diǎn)具有相同的服務(wù)器編號,以構(gòu)建邏輯哈希環(huán);存儲模塊,用于按照邏輯哈希環(huán)將各個節(jié)點(diǎn)存儲 到相應(yīng)的服務(wù)器;映射關(guān)系建立模塊,用于建立各個節(jié)點(diǎn)在原始哈希環(huán)和邏輯哈希環(huán)的映射關(guān)系。根據(jù)本發(fā)明實(shí)施例的再一個方面,提供了一種內(nèi)存集群的數(shù)據(jù)讀取裝置,包括:節(jié)點(diǎn)確定模塊,用于基于一致性哈希運(yùn)算確定欲讀取數(shù)據(jù)在原始哈希環(huán)上的節(jié)點(diǎn),并根據(jù)各個節(jié)點(diǎn)在原始哈希環(huán)和邏輯哈希環(huán)的映射關(guān)系,確定欲讀取數(shù)據(jù)在邏輯哈希環(huán)上的節(jié)點(diǎn);數(shù)據(jù)讀取模塊,用于根據(jù)邏輯哈希環(huán)上的節(jié)點(diǎn)對應(yīng)的服務(wù)器編號到相應(yīng)的服務(wù)器進(jìn)行數(shù)據(jù)的讀取。本發(fā)明至少具有以下優(yōu)點(diǎn):通過構(gòu)建邏輯哈希環(huán),并建立原始哈希環(huán)與邏輯哈希環(huán)的映射關(guān)系,并按照邏輯哈希環(huán)將各個節(jié)點(diǎn)存儲到相應(yīng)的服務(wù)器,使得相鄰節(jié)點(diǎn)存儲在相同的服務(wù)器中,從而使得內(nèi)存空間內(nèi)的數(shù)據(jù)挪移和恢復(fù)更加高效。通過以下參照附圖對本發(fā)明的示例性實(shí)施例的詳細(xì)描述,本發(fā)明的其它特征及其優(yōu)點(diǎn)將會變得清楚。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1示出傳統(tǒng)一致性哈希的環(huán)形空間構(gòu)建模式的示意圖。圖2示出本發(fā)明內(nèi)存集群的數(shù)據(jù)存儲方法的一個實(shí)施例的流程示意圖。圖3示出本發(fā)明內(nèi)存集群的數(shù)據(jù)存儲方法的另一個實(shí)施例的流程示意圖。圖4示出本發(fā)明對原始一級鍵K1的表分區(qū)段進(jìn)行切分得到分片號的一個實(shí)施例示意圖。圖5示出本發(fā)明對原始一級鍵K1的表分區(qū)段進(jìn)行切分得到分片號的另一個實(shí)施例的示意圖。圖6示出本發(fā)明內(nèi)存集群的數(shù)據(jù)讀取方法的一個實(shí)施例的示意圖。圖7示出本發(fā)明內(nèi)存集群的數(shù)據(jù)存儲裝置的一個實(shí)施例的結(jié)構(gòu)示意圖。圖8示出本發(fā)明切分模塊的一個實(shí)施例的結(jié)構(gòu)示意圖。圖9示出本發(fā)明切分模塊的另一個實(shí)施例的結(jié)構(gòu)示意圖。圖10示出本發(fā)明內(nèi)存集群的數(shù)據(jù)讀取裝置的一個實(shí)施例的示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。以下對至少一個示例性實(shí)施例的描述實(shí)際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使用的任何限制。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。下面結(jié)合圖2描述本發(fā)明一個實(shí)施例的內(nèi)存集群的數(shù)據(jù)存儲方法。圖2示出本發(fā)明內(nèi)存集群的數(shù)據(jù)存儲方法的一個實(shí)施例的流程示意圖。如圖2所示,該實(shí)施例的內(nèi)存集群的數(shù)據(jù)存儲方法包括步驟S202,基于一致性哈希運(yùn)算構(gòu)建各個節(jié)點(diǎn)的原始哈希環(huán)。原始哈希環(huán)可以參考現(xiàn)有技術(shù)構(gòu)建。步驟S204,將原始哈希環(huán)中的各個節(jié)點(diǎn)按照相鄰關(guān)系進(jìn)行分組,使得相鄰節(jié)點(diǎn)具有相同的服務(wù)器編號,以構(gòu)建邏輯哈希環(huán)。步驟S206,按照邏輯哈希環(huán)將各個節(jié)點(diǎn)存儲到相應(yīng)的服務(wù)器。步驟S208,建立各個節(jié)點(diǎn)在原始哈希環(huán)和邏輯哈希環(huán)的映射關(guān)系。上述方法中,通過構(gòu)建邏輯哈希環(huán),建立原始哈希環(huán)與邏輯哈希環(huán)的映射關(guān)系,并按照邏輯哈希環(huán)將各個節(jié)點(diǎn)存儲到相應(yīng)的服務(wù)器,使得相鄰節(jié)點(diǎn)存儲在相同的服務(wù)器中,從而使得內(nèi)存空間內(nèi)的數(shù)據(jù)挪移和恢復(fù)更加高效。對于內(nèi)存空間內(nèi)的數(shù)據(jù)來說,數(shù)據(jù)的分散性越強(qiáng),數(shù)據(jù)的挪移和恢復(fù)越復(fù)雜。因此,可以將本發(fā)明內(nèi)存集群的數(shù)據(jù)存儲方法與內(nèi)存集群的存儲均衡方法相結(jié)合運(yùn)用,使得本發(fā)明的技術(shù)效果更加明顯。下面結(jié)合圖3描述本發(fā)明一個實(shí)施例的內(nèi)存集群的數(shù)據(jù)存儲方法。圖3示出本發(fā)明內(nèi)存集群的數(shù)據(jù)存儲方法的另一個實(shí)施例的流程示意圖。如圖3所示,在圖2所示的實(shí)施例基礎(chǔ)上,本實(shí)施例還包括:步驟S3012,對原始一級鍵K1的表分區(qū)段進(jìn)行切分得到分片號。原始一級鍵K1為定制對象DO的原始邏輯鍵,原始一級鍵K1由數(shù)據(jù)庫段、數(shù)據(jù)表段、表分區(qū)段組成。步驟S3014,根據(jù)原始一級鍵K1、分片號生成均衡一級鍵K1’。其中,均衡一級鍵K1’為定制對象DO的均衡邏輯鍵。步驟S3016,采用(K1’,DO)的數(shù)據(jù)存儲形式存儲鍵值數(shù)據(jù)。通過上述方法,對原始一級鍵K1的表分區(qū)段進(jìn)行進(jìn)一步細(xì)分,然后根據(jù)原始鍵和分片號重新構(gòu)建均衡鍵,并基于均衡鍵進(jìn)行數(shù)據(jù)的存儲,實(shí)現(xiàn)了數(shù)據(jù)在內(nèi)存集群數(shù)據(jù)節(jié)點(diǎn)上的均勻分布,進(jìn)而充分利用內(nèi)存集群的存儲容量。然后,利用圖2所示的實(shí)施例方法對進(jìn)一步細(xì)分后的數(shù)據(jù)進(jìn)行存儲,使得相鄰的節(jié)點(diǎn)存儲在相同的服務(wù)器中,從而在數(shù)據(jù)挪移和恢復(fù)過程中只需在相同服務(wù)器內(nèi)對數(shù)據(jù)進(jìn)行操作,避免了服務(wù)器之間的數(shù)據(jù)操作,提高了數(shù)據(jù)操作效率。下面結(jié)合圖4描述本發(fā)明一個實(shí)施例的對原始一級鍵K1的表分區(qū)段進(jìn)行切分得到分片號方法。圖4示出本發(fā)明對原始一級鍵K1的表分區(qū)段進(jìn)行切分得到分片號的一個實(shí)施例的示意圖。如圖4所示,定制對象DO中存儲(K2,V),二級鍵K2為定制對象DO的數(shù)據(jù)鍵,V為定制對象DO的數(shù)據(jù)值。對原始一級鍵K1的表分區(qū)段進(jìn)行切分得到分片號的一種具體實(shí)現(xiàn)方法包括:步驟S402,對原始一級鍵K1和二級鍵K2進(jìn)行哈希運(yùn)算。步驟S404,將哈希運(yùn)算所得哈希值對計(jì)劃分片數(shù)M進(jìn)行取余運(yùn)算。步驟S406,將取余運(yùn)算的結(jié)果作為分片號。例如,集群節(jié)點(diǎn)數(shù)是4,分區(qū)的最大分片數(shù)設(shè)計(jì)為40。那么用戶向db1的table1中存儲一新的值:Key-Value,該值對應(yīng)的分區(qū)是:Stringslice=String.valueOf(Math.abs(Key.hashCode())/40)。假設(shè)計(jì)算的結(jié)果為23。如果完整的分區(qū)鍵名為db1_table1_p1,則新的分區(qū)名為db1_table1_p1_23。在分區(qū)的基礎(chǔ)上進(jìn)一步把數(shù)據(jù)“切”分成片。當(dāng)切片數(shù)大于節(jié)點(diǎn)數(shù)時,切片就會根據(jù)TwemProxy的特性被均勻分布到不同的節(jié)點(diǎn)上。原則上切片數(shù)越多,數(shù)據(jù)存儲粒度越小,數(shù)據(jù)分布就越均勻,從而實(shí)現(xiàn)數(shù)據(jù)在內(nèi)存集群數(shù)據(jù)節(jié)點(diǎn)上的均勻分布,進(jìn)而充分利用內(nèi)存集群的存儲容量。但切片數(shù)據(jù)也沒必要過大,一般保持在節(jié)點(diǎn)數(shù)的N(N≤10)倍即可。下面結(jié)合圖5描述本發(fā)明一個另實(shí)施例的對原始一級鍵K1的表分區(qū)段進(jìn)行切分得到分片號方法。圖5示出本發(fā)明對原始一級鍵K1的表分區(qū)段進(jìn)行切分得到分片號的另一個實(shí)施例的示意圖。如圖5所示,對原始一級鍵K1的表分區(qū)段進(jìn)行切分得到分片號的另一種具體實(shí)現(xiàn)方法包括:步驟S502,對原始一級鍵K1和二級鍵K2進(jìn)行md5運(yùn)算;步驟S504,取md5運(yùn)算所得摘要值的后n位作為分片號,n位所能表示的最大數(shù)值不大于計(jì)劃分片數(shù)M。通過對原始一級鍵K1和二級鍵K2進(jìn)行md5運(yùn)算獲取分片號,同樣可以使得數(shù)據(jù)存儲粒度越小,數(shù)據(jù)分布就越均勻,從而實(shí)現(xiàn)數(shù)據(jù)在內(nèi)存集群數(shù)據(jù)節(jié)點(diǎn)上的均勻分布,進(jìn)而充分利用內(nèi)存集群的存儲容量。與圖4所示的實(shí)施例相比,md5算法可以根據(jù)原始一級鍵K1和二級鍵K2計(jì)算出結(jié)果為唯一值的分片號,但是md5算法對CPU的占用較高,在大的并發(fā)壓力下會影響性能。此外,定制對象DO可以通過MAP的形式存儲。下面結(jié)合圖6描述本發(fā)明一個實(shí)施例的內(nèi)存集群的數(shù)據(jù)讀取方法。圖6示出本發(fā)明內(nèi)存集群的數(shù)據(jù)讀取方法的一個實(shí)施例的示意圖。 如圖6所示,該實(shí)施例的內(nèi)存集群的數(shù)據(jù)讀取方法包括:步驟S602,基于一致性哈希運(yùn)算確定欲讀取數(shù)據(jù)在原始哈希環(huán)上的節(jié)點(diǎn)。步驟S604,根據(jù)各個節(jié)點(diǎn)在原始哈希環(huán)和邏輯哈希環(huán)的映射關(guān)系,確定欲讀取數(shù)據(jù)在邏輯哈希環(huán)上的節(jié)點(diǎn)。步驟S606,根據(jù)邏輯哈希環(huán)上的節(jié)點(diǎn)對應(yīng)的服務(wù)器編號到相應(yīng)的服務(wù)器進(jìn)行數(shù)據(jù)的讀取。通過上述方法,用戶采用的數(shù)據(jù)讀取方式不做改變,而此時相鄰的節(jié)點(diǎn)已經(jīng)存儲在相同的服務(wù)器中,既實(shí)現(xiàn)了一致性哈希功能,還實(shí)現(xiàn)了數(shù)據(jù)存儲的均衡。下面結(jié)合圖7描述本發(fā)明一個實(shí)施例的內(nèi)存集群的數(shù)據(jù)存儲裝置。圖7示出本發(fā)明內(nèi)存集群的數(shù)據(jù)讀取方法的另一個實(shí)施例的示意圖。如圖7所示,該實(shí)施例的內(nèi)存集群的數(shù)據(jù)存儲裝置70包括:原始哈希環(huán)構(gòu)建模塊702,用于基于一致性哈希運(yùn)算構(gòu)建各個節(jié)點(diǎn)的原始哈希環(huán);邏輯哈希環(huán)構(gòu)建模塊704,將原始哈希環(huán)中的各個節(jié)點(diǎn)按照相鄰關(guān)系進(jìn)行分組,使得相鄰節(jié)點(diǎn)具有相同的服務(wù)器編號,以構(gòu)建邏輯哈希環(huán)。存儲模塊706,用于按照邏輯哈希環(huán)將各個節(jié)點(diǎn)存儲到相應(yīng)的服務(wù)器。映射關(guān)系建立模塊708,用于建立各個節(jié)點(diǎn)在原始哈希環(huán)和邏輯哈希環(huán)的映射關(guān)系。此外,數(shù)據(jù)存儲裝置70還可以包括:切分模塊710,用于對原始一級鍵K1的表分區(qū)段進(jìn)行切分得到分片號。均衡一級鍵生成模塊712,用于根據(jù)原始一級鍵K1、分片號生成均衡一級鍵K1’。鍵值數(shù)據(jù)存儲模塊714,用于采用(K1’,DO)的數(shù)據(jù)存儲形式將鍵值數(shù)據(jù)存儲到節(jié)點(diǎn)中。其中,原始一級鍵K1為定制對象DO的原始邏輯鍵,所述原始一級鍵K1由數(shù)據(jù)庫段、數(shù)據(jù)表段、表分區(qū)段組成,均衡一級鍵K1’為定制對象DO的均衡邏輯鍵。下面結(jié)合圖8描述本發(fā)明一個實(shí)施例的切分模塊。圖8示出本發(fā)明切分模塊的一個實(shí)施例的結(jié)構(gòu)示意圖。如圖8所示,該實(shí)施例的切分模塊810包括:哈希運(yùn)算單元8102,用于對原始一級鍵K1和二級鍵K2進(jìn)行哈希運(yùn)算;取余運(yùn)算單元8104,用于將哈希運(yùn)算所得哈希值對計(jì)劃分片數(shù)M進(jìn)行取余運(yùn)算,并將取余運(yùn)算的結(jié)果作為分片號。下面結(jié)合圖9描述本發(fā)明另一個實(shí)施例的切分模塊。圖9示出本發(fā)明切分模塊的另一個實(shí)施例的結(jié)構(gòu)示意圖。如圖9所示,該實(shí)施例的切分模塊910包括:md5運(yùn)算單元9102,用于對原始一級鍵K1和二級鍵K2進(jìn)行md5運(yùn)算;分片號確定單元9104,用于取md5運(yùn)算所得摘要值的后n位作為分片號,n位所能表示的最大數(shù)值不大于計(jì)劃分片數(shù)M。下面結(jié)合圖10描述本發(fā)明一個實(shí)施例的內(nèi)存集群的數(shù)據(jù)讀取裝置。圖10示出本發(fā)明內(nèi)存集群的數(shù)據(jù)讀取裝置的一個實(shí)施例的結(jié)構(gòu)示意圖。如圖10所示,該實(shí)施例的數(shù)據(jù)讀取裝置100包括:節(jié)點(diǎn)確定模塊1002,用于基于一致性哈希運(yùn)算確定欲讀取數(shù)據(jù)在原始哈希環(huán)上的節(jié)點(diǎn),并根據(jù)各個節(jié)點(diǎn)在原始哈希環(huán)和邏輯哈希環(huán)的映射關(guān)系,確定欲讀取數(shù)據(jù)在邏輯哈希環(huán)上的節(jié)點(diǎn);數(shù)據(jù)讀取模塊1004,用于根據(jù)邏輯哈希環(huán)上的節(jié)點(diǎn)對應(yīng)的服務(wù)器編號到相應(yīng)的服務(wù)器進(jìn)行數(shù)據(jù)的讀取。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計(jì)算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是 只讀存儲器,磁盤或光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
屯门区| 西宁市| 梓潼县| 岳池县| 汕尾市| 湖北省| 铜川市| 大余县| 富顺县| 旅游| 牡丹江市| 静宁县| 招远市| 正定县| 商丘市| 安乡县| 镇原县| 淮滨县| 军事| 红桥区| 漳平市| 湘潭市| 闻喜县| 绩溪县| 九江市| 云霄县| 当阳市| 监利县| 青田县| 寿阳县| 紫云| 华安县| 荆州市| 屏东县| 黄大仙区| 新竹市| 鞍山市| 佛坪县| 梧州市| 嘉黎县| 蒲城县|