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

自動(dòng)增減數(shù)據(jù)消費(fèi)者的方法以及使用該方法的裝置與流程

文檔序號:12362782閱讀:209來源:國知局
本發(fā)明關(guān)連于一種信息處理技術(shù),特別是一種自動(dòng)增減數(shù)據(jù)消費(fèi)者的方法以及使用該方法的裝置。
背景技術(shù)
::為了即時(shí)處理巨量數(shù)據(jù)的大量信息,系統(tǒng)大多會配備信息隊(duì)列(MessageQueue)來做為緩沖與暫存功能,再由信息消費(fèi)者(MessageConsumers)來提取信息并逐一處理。傳統(tǒng)的信息隊(duì)列提取機(jī)制多使用多程序或多線程定期向信息隊(duì)列詢問,并且于必要時(shí)提取及處理信息。頻繁地向信息隊(duì)列詢問將增加運(yùn)算成本與信息隊(duì)列的負(fù)擔(dān),以及信息提取速度無法跟上信息隊(duì)列中緩存信息的劇烈變化等問題。因此,需要一種自動(dòng)增減數(shù)據(jù)消費(fèi)者的方法以及使用該方法的裝置,用以解決以上所述的問題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的實(shí)施例提出一種自動(dòng)增減數(shù)據(jù)消費(fèi)者的方法,由數(shù)據(jù)消費(fèi)者服務(wù)器中的處理單元執(zhí)行,包含以下步驟。從多個(gè)數(shù)據(jù)消費(fèi)者接收多個(gè)狀態(tài)更新請求,其中,每一狀態(tài)更新請求包含忙碌狀態(tài)或閑置狀態(tài),而忙碌狀態(tài)代表數(shù)據(jù)消費(fèi)者從隊(duì)列讀取數(shù)據(jù)并進(jìn)行處理。計(jì)算數(shù)據(jù)消費(fèi)者的數(shù)目、忙碌狀態(tài)的數(shù)目以及閑置狀態(tài)的數(shù)目。依據(jù)數(shù)據(jù)消費(fèi)者的數(shù)目、忙碌狀態(tài)的數(shù)目以及閑置狀態(tài)的數(shù)目估計(jì)增加數(shù)據(jù)消費(fèi)者的數(shù)目,以及產(chǎn)生上述估計(jì)數(shù)目的數(shù)據(jù)消費(fèi)者。本發(fā)明的實(shí)施例提出一種自動(dòng)增減數(shù)據(jù)消費(fèi)者的裝置,至少包含處理單元。處理單元從多個(gè)數(shù)據(jù)消費(fèi)者接收多個(gè)狀態(tài)更新請求,其中,每一狀態(tài)更新請求包含忙碌狀態(tài)或閑置狀態(tài),而忙碌狀態(tài)代表數(shù)據(jù)消費(fèi)者從隊(duì)列讀取數(shù)據(jù)并進(jìn)行處理。處理單元計(jì)算數(shù)據(jù)消費(fèi)者的數(shù)目、忙碌狀態(tài)的數(shù)目以及閑置狀態(tài)的數(shù)目,依據(jù)數(shù)據(jù)消費(fèi)者的數(shù)目、忙碌狀態(tài)的數(shù)目以及閑置 狀態(tài)的數(shù)目估計(jì)增加數(shù)據(jù)消費(fèi)者的數(shù)目,以及產(chǎn)生上述估計(jì)數(shù)目的數(shù)據(jù)消費(fèi)者。附圖說明圖1為依據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)系統(tǒng)架構(gòu)的示意圖。圖2為依據(jù)本發(fā)明實(shí)施例的服務(wù)器的系統(tǒng)架構(gòu)圖。圖3為依據(jù)本發(fā)明實(shí)施例的軟件架構(gòu)示意圖。圖4為依據(jù)本發(fā)明實(shí)施例的自動(dòng)增減數(shù)據(jù)消費(fèi)者方法的流程圖。圖5為依據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)消費(fèi)者服務(wù)器的管理方法流程圖。其中,附圖標(biāo)記說明如下:10網(wǎng)絡(luò)架構(gòu);110隊(duì)列服務(wù)器;120~150數(shù)據(jù)消費(fèi)者服務(wù)器;160負(fù)載監(jiān)看服務(wù)器;210處理單元;220顯示單元;230輸入裝置;240儲存裝置;250存儲器;260通訊接口;310隊(duì)列;330_0_0~330_m_n數(shù)據(jù)消費(fèi)者;350_0~350_m自動(dòng)增減模塊;370負(fù)載監(jiān)看模塊;S410~S477方法步驟;S510~S530方法步驟。具體實(shí)施方式以下說明是為完成發(fā)明的較佳實(shí)現(xiàn)方式,其目的在于描述本發(fā)明的基 本精神,但并不用以限定本發(fā)明。實(shí)際的
發(fā)明內(nèi)容必須參考之后的權(quán)利要求范圍。必須了解的是,使用于本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、元件以及/或組件,但并不排除可加上更多的技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、元件、組件,或以上的任意組合。于權(quán)利要求中使用如”第一”、"第二"、"第三"等詞是用來修飾權(quán)利要求中的元件,并非用來表示之間具有優(yōu)先權(quán)順序,先行關(guān)系,或者是一個(gè)元件先于另一個(gè)元件,或者是執(zhí)行方法步驟時(shí)的時(shí)間先后順序,僅用來區(qū)別具有相同名字的元件。本發(fā)明實(shí)施例提出一種網(wǎng)絡(luò)系統(tǒng)架構(gòu),包含使用在分散式運(yùn)算環(huán)境的多部服務(wù)器。圖1為依據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)系統(tǒng)架構(gòu)的示意圖。服務(wù)器110(可稱為隊(duì)列服務(wù)器),用以提供一個(gè)隊(duì)列,例如RabbitMQ,AWSSQS等。隊(duì)列是一種數(shù)據(jù)結(jié)構(gòu),用以讓一或多個(gè)數(shù)據(jù)生產(chǎn)者以非同步的方式傳送數(shù)據(jù)給一或多個(gè)數(shù)據(jù)消費(fèi)者。例如,一或多個(gè)數(shù)據(jù)生產(chǎn)者可將數(shù)據(jù)放置于隊(duì)列,而一或多個(gè)數(shù)據(jù)消費(fèi)者可非同步地消費(fèi)(亦即是移除/讀取)這些數(shù)據(jù)。隊(duì)列以一個(gè)順序緩存數(shù)據(jù),以及使用單一許可來管理數(shù)據(jù)生產(chǎn)者及數(shù)據(jù)消費(fèi)者的存取,使得一個(gè)時(shí)間只有一個(gè)數(shù)據(jù)生產(chǎn)者或消費(fèi)者可存取隊(duì)列。例如,為了新增數(shù)據(jù)至隊(duì)列中,數(shù)據(jù)生產(chǎn)者可首先取得排除其他數(shù)據(jù)生產(chǎn)者及消費(fèi)者的許可。如果隊(duì)列中存在空間,數(shù)據(jù)生產(chǎn)者可接著新增數(shù)據(jù)于隊(duì)列的尾端。否則,數(shù)據(jù)生產(chǎn)者可繼續(xù)等待,直到一個(gè)數(shù)據(jù)消費(fèi)者從隊(duì)列的頂端移除或讀取數(shù)據(jù),從而創(chuàng)造空間。服務(wù)器120至150(亦可稱為數(shù)據(jù)消費(fèi)者服務(wù)器)形成一個(gè)集群(cluster),每部服務(wù)器包含一個(gè)自動(dòng)增減模塊(automaticscalingmodule),用以監(jiān)督數(shù)據(jù)消費(fèi)者的處理狀態(tài)來自動(dòng)增加或減少數(shù)據(jù)消費(fèi)者。自動(dòng)增減模塊可實(shí)施于網(wǎng)頁服務(wù)器(Webserver),并使用特定通訊協(xié)議(例如超文本傳輸通訊協(xié)議HTTP、超文本安全傳輸通訊協(xié)議HTTPS等)回應(yīng)數(shù)據(jù)消費(fèi)者的請求。數(shù)據(jù)消費(fèi)者可實(shí)施于一個(gè)程序(processes)的不同線程(threads)。線程是可被操作系統(tǒng)調(diào)度的最小處理單位。相同程序中存在的線程(例如數(shù)據(jù)消費(fèi)者)共享計(jì)算資源(例如存儲器);不同程序間的線程則無法分享資源。理論上,一個(gè)程序中的線程可共享程 序代碼(code)及上下文(context),上下文包含于任何時(shí)間可讓不同線程參考的變數(shù)值。然而,數(shù)據(jù)消費(fèi)者間因?yàn)椴恍枰ハ鄿贤?,僅需要獨(dú)立回報(bào)處理狀態(tài)給自動(dòng)增減模塊,可不共享上下文,使得數(shù)據(jù)數(shù)據(jù)消費(fèi)者間不具備相依性。數(shù)據(jù)消費(fèi)者間的松耦合(looselycoupled)特性,使得自動(dòng)增減模塊可依據(jù)數(shù)據(jù)消費(fèi)者的處理狀態(tài)任意增加或減少數(shù)據(jù)消費(fèi)者。服務(wù)器160(亦可稱為負(fù)載監(jiān)看服務(wù)器,load-monitoringserver)監(jiān)控與分析正提供服務(wù)的數(shù)據(jù)消費(fèi)者服務(wù)器,并根據(jù)分析結(jié)果將一部可提供服務(wù)的數(shù)據(jù)消費(fèi)者服務(wù)器新增至服務(wù)器集群中或?qū)⒁徊繑?shù)據(jù)消費(fèi)者服務(wù)器從服務(wù)器集群移出。本領(lǐng)域技術(shù)人員了解,如上所述的信息隊(duì)列服務(wù)器、數(shù)據(jù)消費(fèi)者服務(wù)器、監(jiān)督服務(wù)器所包含的功能亦可以虛擬機(jī)器(virtualmachines)實(shí)現(xiàn),而以上功能的任意組合可實(shí)現(xiàn)于同一部實(shí)體電子裝置中,本發(fā)明并不因此而受限。圖2為依據(jù)本發(fā)明實(shí)施例的服務(wù)器的系統(tǒng)架構(gòu)圖。此系統(tǒng)架構(gòu)可實(shí)施于信息隊(duì)列服務(wù)器110、數(shù)據(jù)消費(fèi)者服務(wù)器120至150以及監(jiān)督服務(wù)器160中的任一者,至少包含處理單元210。處理單元210可使用多種方式實(shí)施,例如以專用硬件電路或通用硬件(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運(yùn)算能力的處理器),并且在執(zhí)行程序代碼或軟件時(shí),提供之后所描述的功能。系統(tǒng)架構(gòu)另包含存儲器250用以儲存執(zhí)行過程中需要的數(shù)據(jù),例如,變數(shù)、數(shù)據(jù)表(datatables)等,以及儲存單元240,用以儲存各式各樣的電子文件,例如,網(wǎng)頁、文件、音頻文件、視頻文件等。系統(tǒng)架構(gòu)另包含通訊接口260,讓處理單元110可借以跟其他電子裝置進(jìn)行溝通。通訊接口260可以是局域網(wǎng)(localareanetwork,LAN)通訊模塊或無線局域網(wǎng)通訊模塊(WLAN)。輸入裝置230可包含鍵盤、滑鼠、觸控面板等。使用者可按壓鍵盤上的硬鍵來輸入字元,借由操作滑鼠來控制鼠標(biāo),或者是在觸控面板制造手勢來控制執(zhí)行中的應(yīng)用程序。手勢可包含單擊、雙擊、單指拖曳、多指拖曳等,但不限定于此。顯示單元220可包含顯示面板(例如,薄膜液晶顯示面板、有機(jī)發(fā)光二極管面板或其他具顯示能力的面板),用以顯示輸入的字元、數(shù)字、符號、拖曳鼠標(biāo)的移動(dòng)軌跡、繪制的圖案或應(yīng)用程序所提供的畫面,提供給使用者觀看。于一些實(shí)施方式中,一個(gè)軟件模塊(也可以是數(shù)據(jù)消費(fèi)者)可周期性詢 問隊(duì)列310中緩存的數(shù)據(jù)數(shù)量,并且依據(jù)詢問的結(jié)果增加或減少數(shù)據(jù)消費(fèi)者的數(shù)目。然而,隊(duì)列310頻繁地回復(fù)詢問將造成額外的計(jì)算負(fù)擔(dān),而形成系統(tǒng)的瓶頸。圖3為依據(jù)本發(fā)明實(shí)施例的軟件架構(gòu)示意圖。隊(duì)列310以一個(gè)時(shí)間順序緩存數(shù)據(jù)生產(chǎn)者提供的數(shù)據(jù)。數(shù)據(jù)消費(fèi)者330_0_0至330_m_n中的任一者使用一部數(shù)據(jù)消費(fèi)者服務(wù)器的處理單元210執(zhí)行。一部數(shù)據(jù)消費(fèi)者服務(wù)器的處理單元210載入并執(zhí)行自動(dòng)增減模塊350_0至350_m中的任一者,用以掌握一或多個(gè)數(shù)據(jù)消費(fèi)者的處理狀態(tài)。當(dāng)數(shù)據(jù)消費(fèi)者成功地從隊(duì)列310讀取數(shù)據(jù)并進(jìn)行處理時(shí),使用通訊協(xié)議(超文本傳輸通訊協(xié)議HTTP、超文本安全傳輸通訊協(xié)議HTTPS等)傳送忙碌狀態(tài)(busystate)給管理的自動(dòng)增減模塊;反之,傳送閑置狀態(tài)(idlestate)給管理的自動(dòng)增減模塊。當(dāng)自動(dòng)增減模塊(舉例來說,自動(dòng)增減模塊350_0)接收到數(shù)據(jù)消費(fèi)者330_0_0至330_0_n中的一者的狀態(tài)時(shí),更新代表忙碌狀態(tài)及閑置狀態(tài)的數(shù)目。負(fù)載監(jiān)看服務(wù)器160的處理單元210周期性載入并執(zhí)行負(fù)載監(jiān)看模塊370的程序代碼,用以調(diào)查(poll)所有數(shù)據(jù)消費(fèi)者服務(wù)器的自動(dòng)增減模塊350_0至350_m,了解它們目前提供服務(wù)的能力。當(dāng)自動(dòng)增減模塊(舉例來說,自動(dòng)增減模塊350_0)接收到負(fù)載監(jiān)看模塊370的調(diào)查時(shí),執(zhí)行自動(dòng)增減估計(jì),并依據(jù)估計(jì)結(jié)果判斷數(shù)據(jù)消費(fèi)者服務(wù)器是否超載,而無法產(chǎn)生更多的數(shù)據(jù)消費(fèi)者來讀取及處理隊(duì)列310中緩存的數(shù)據(jù)。若是,則回復(fù)代表超載的信息;否則回復(fù)代表正常的信息。如果自動(dòng)增減模塊350_0至350_m中的任一者連續(xù)回復(fù)代表超載的信息,選擇并組態(tài)一部可用的數(shù)據(jù)消費(fèi)者服務(wù)器,用以加入至服務(wù)器集群并提供服務(wù)。圖4為依據(jù)本發(fā)明實(shí)施例的自動(dòng)增減數(shù)據(jù)消費(fèi)者方法的流程圖。舉例來說,自動(dòng)增減數(shù)據(jù)消費(fèi)者方法由數(shù)據(jù)消費(fèi)者服務(wù)器中的處理單元210于載入并執(zhí)行自動(dòng)增減模塊350_0的程序代碼時(shí)實(shí)施。于接收到一個(gè)請求(request)后(步驟S410),判斷請求的類型為何(步驟S420)。此請求可使用超文本傳輸通訊協(xié)議(HTTP)或超文本安全傳輸通訊協(xié)議(HTTPS)傳送。如果此請求為從數(shù)據(jù)消費(fèi)者330_0_0至330_0_n中的一者接收的狀態(tài)更新請求(state-updaterequest)(步驟S420的右邊路徑),執(zhí)行狀態(tài)更新程序(步驟S471至S477)。如果此請求為從負(fù)載監(jiān)看模塊370接收的監(jiān)看查核請求(monitoring-checkrequest)(步驟S420的左邊路徑),執(zhí)行自動(dòng)增減程序(步 驟S451至S457)。于狀態(tài)更新程序中,將當(dāng)前執(zhí)行中的數(shù)據(jù)消費(fèi)者總數(shù)”current_total_process”加一(步驟S471),接著判斷狀態(tài)更新請求中的狀態(tài)碼為何(步驟S473)。若狀態(tài)碼代表忙碌狀態(tài)(步驟S473的左邊路徑),將忙碌值”busy_process”加一(步驟S475)。若狀態(tài)碼代表閑置狀態(tài)(步驟S473的右邊路徑),將閑置值”idle_process”加一(步驟S477)。當(dāng)前執(zhí)行中的數(shù)據(jù)消費(fèi)者總數(shù)、忙碌值及閑置值將使用于之后所述的自動(dòng)增減程序。于自動(dòng)增減程序中,首先執(zhí)行自動(dòng)增減估計(jì)(步驟S451),接著依據(jù)估計(jì)結(jié)果判斷服務(wù)器是否超載(over-loading)(步驟S453)。若是,則回復(fù)代表超載的自動(dòng)增減狀態(tài)碼(步驟S457);否則,依據(jù)估計(jì)結(jié)果增加或減少數(shù)據(jù)消費(fèi)者(步驟S455),并回復(fù)代表正常的自動(dòng)增減狀態(tài)碼(步驟S457)。于步驟S451,自動(dòng)增減估計(jì)參考如步驟S471至S477的狀態(tài)更新結(jié)果計(jì)算數(shù)據(jù)消費(fèi)者的估計(jì)產(chǎn)生數(shù)目,而不直接詢問隊(duì)列310緩存的數(shù)據(jù)數(shù)量。自動(dòng)增減程序中執(zhí)行的范例演算法如下所示:演算法中的參數(shù)說明如表1所示:表1詳細(xì)來說,此演算法可計(jì)算出允許產(chǎn)生數(shù)據(jù)消費(fèi)者的最大數(shù)目”thread_max”以及數(shù)據(jù)消費(fèi)者的估計(jì)產(chǎn)生數(shù)目”thread_create_num”。如果數(shù)據(jù)消費(fèi)者的估計(jì)產(chǎn)生數(shù)目”thread_create_num”為0,或者是當(dāng)前執(zhí)行中的數(shù)據(jù)消費(fèi)者總數(shù)”current_total_thread”加上數(shù)據(jù)消費(fèi)者的估計(jì)產(chǎn)生數(shù)目”thread_create_num”超過最大數(shù)據(jù)消費(fèi)者的數(shù)目上限”thread_upper_limit”,代表數(shù)據(jù)消費(fèi)者服務(wù)器極度忙碌,無法產(chǎn)生更多的數(shù)據(jù)消費(fèi)者來讀取及處理隊(duì)列310中緩存的數(shù)據(jù),并且回復(fù)代表超載的信息”HTTP503”。如果當(dāng)前執(zhí)行中的數(shù)據(jù)消費(fèi)者總數(shù)”current_total_thread”加上數(shù)據(jù)消費(fèi)者的估計(jì)產(chǎn)生數(shù)目”thread_create_num”不超過最大數(shù)據(jù)消費(fèi)者的數(shù)目上限”thread_upper_limit”,代表數(shù)據(jù)消費(fèi)者服務(wù)器還可以產(chǎn)生更多的數(shù)據(jù)消費(fèi)者來讀取及處理隊(duì)列310中緩存的數(shù)據(jù),并且回復(fù)代表正常的信息”HTTP200”。以下更以二個(gè)使用案例說明自動(dòng)增減模塊的運(yùn)作。假設(shè)演算法參數(shù)設(shè)定如下:thread_max_default=5;thread_threshold=5;thread_max_increase=1; thread_max_decrease=1;thread_lower_limit=2;以及thread_upper_limit=80。于第一個(gè)使用案例中,數(shù)據(jù)消費(fèi)者忙碌狀態(tài)累計(jì)數(shù)目”busy_thread”為5、數(shù)據(jù)消費(fèi)者閑置狀態(tài)累計(jì)數(shù)目”idle_thread”為0、允許產(chǎn)生數(shù)據(jù)消費(fèi)者的最大數(shù)目”thread_max”為79以及當(dāng)前執(zhí)行中的數(shù)據(jù)消費(fèi)者總數(shù)”current_total_thread”為64。當(dāng)busy_thread減掉idle_thread的值大于線程門限值”thread_threshold”時(shí),計(jì)算出來的允許產(chǎn)生數(shù)據(jù)消費(fèi)者的最大數(shù)目”thread_max”為80以及數(shù)據(jù)消費(fèi)者的估計(jì)產(chǎn)生數(shù)目”thread_create_num”為16。接著,產(chǎn)生16個(gè)數(shù)據(jù)消費(fèi)者,并回復(fù)”HTTP503”給負(fù)載監(jiān)看模塊370。于第二個(gè)使用案例中,數(shù)據(jù)消費(fèi)者忙碌狀態(tài)累計(jì)數(shù)目”busy_thread”為0、數(shù)據(jù)消費(fèi)者閑置狀態(tài)累計(jì)數(shù)目”idle_thread”為5、允許產(chǎn)生數(shù)據(jù)消費(fèi)者的最大數(shù)目”thread_max”為20以及當(dāng)前執(zhí)行中的數(shù)據(jù)消費(fèi)者總數(shù)”current_total_thread”為0。當(dāng)busy_thread減掉idle_thread的值大于線程門限值”thread_threshold”時(shí),計(jì)算出來的允許產(chǎn)生數(shù)據(jù)消費(fèi)者的最大數(shù)目”thread_max”為19以及數(shù)據(jù)消費(fèi)者的估計(jì)產(chǎn)生數(shù)目”thread_create_num”為3。接著,產(chǎn)生3個(gè)數(shù)據(jù)消費(fèi)者,并回復(fù)”HTTP200”給負(fù)載監(jiān)看模塊370。圖5為依據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)消費(fèi)者服務(wù)器的管理方法流程圖。從一部數(shù)據(jù)消費(fèi)者服務(wù)器的自動(dòng)增減模塊接收到信息后(步驟S510),判斷是否需要增加可用的數(shù)據(jù)消費(fèi)者服務(wù)器(步驟S520)。若是,則選擇并組態(tài)一部可用的數(shù)據(jù)消費(fèi)者服務(wù)器,用以加入至服務(wù)器集群并提供服務(wù)(步驟S530);否則,繼續(xù)從此數(shù)據(jù)消費(fèi)者服務(wù)器接收下一個(gè)信息(步驟S510)。于步驟S520,詳細(xì)來說,當(dāng)從此自動(dòng)增減模塊連續(xù)接收到一定數(shù)量代表超載的信息,例如5次,代表需要增加可用的數(shù)據(jù)消費(fèi)者服務(wù)器。雖然圖2中包含了以上描述的元件,但不排除在不違反發(fā)明的精神下,使用更多其他的附加元件,已達(dá)成更佳的技術(shù)效果。此外,雖然圖4與圖5的方法流程圖采用特定的順序來執(zhí)行,但是在不違法發(fā)明精神的情況下,本領(lǐng)域技術(shù)人員可以在達(dá)到相同效果的前提下,修改這些步驟間的順序,所以,本發(fā)明并不局限于僅使用如上所述的順序。雖然本發(fā)明使用以上實(shí)施例進(jìn)行說明,但需要注意的是,這些描述并非用以限縮本發(fā)明。相反地,此發(fā)明涵蓋了本領(lǐng)域技術(shù)人員顯而易見的修 改與相似設(shè)置。所以,權(quán)利要求范圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設(shè)置。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
仁寿县| 渝中区| 马边| 甘孜县| 日照市| 衡阳市| 芮城县| 措勤县| 偏关县| 阿拉善盟| 沂源县| 南昌县| 任丘市| 营山县| 阿城市| 子长县| 日照市| 吉首市| 忻州市| 临城县| 繁峙县| 云南省| 曲沃县| 怀仁县| 讷河市| 石楼县| 遵义市| 宝山区| 德化县| 宜宾市| 张家口市| 潍坊市| 泰安市| 周至县| 平顶山市| 高碑店市| 惠安县| 白水县| 龙山县| 东港市| 文安县|