分布式部署統(tǒng)一配置和自動(dòng)適配方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本公開涉及分布式系統(tǒng),具體地,本公開涉及一種差異化配置項(xiàng)自動(dòng)加載的方法和系統(tǒng)。
【背景技術(shù)】
[0002]大型平臺(tái)中存在多種分布式部署,由于并發(fā)量和性能的限制,需要進(jìn)行服務(wù)部署水平擴(kuò)展和服務(wù)分片,此時(shí)很多相關(guān)服務(wù)的配置信息項(xiàng)同時(shí)服務(wù)于多個(gè)服務(wù)模塊,但只是配置值不同。
[0003]圖1示出了現(xiàn)有技術(shù)中基于傳統(tǒng)配置文件方式的分布式部署。首先,在步驟SlOl中,管理員根據(jù)服務(wù)需要建立不同的配置文件。在部署時(shí)修改對(duì)應(yīng)配置文件的內(nèi)容,如步驟S102所示。在步驟S103中,當(dāng)服務(wù)啟動(dòng)時(shí),不同的部署加載與其相對(duì)應(yīng)的配置文件,以使各部署提供服務(wù)。如有配置變更,則停止服務(wù)(步驟S106),并回到步驟S102以再次修改配置文件的內(nèi)容。由此可見,圖1中所示的基于傳統(tǒng)配置文件方式的分布式部署具有以下缺陷:需要在每個(gè)部署服務(wù)中都進(jìn)行屬性配置,這使得重復(fù)工作量大;當(dāng)配置變更時(shí),修改變更不方便,且容易出現(xiàn)配置項(xiàng)遺漏或出錯(cuò);無法集中查看和管理配置項(xiàng)信息;無法做到配置熱部署。
[0004]基于zookeeper的分布式配置管理方式同樣是現(xiàn)有技術(shù)中常用的分布式部署方式。圖2示出了基于zooke印er的分布式配置管理方式的分布式部署。首先管理員在zookeeper中心分配路徑,創(chuàng)建對(duì)應(yīng)的節(jié)點(diǎn),并對(duì)節(jié)點(diǎn)賦值(步驟S201)。然后,在步驟S202中,當(dāng)部署服務(wù)啟動(dòng)后,客戶端連接zooke印er,根據(jù)節(jié)點(diǎn)路徑獲取相應(yīng)的節(jié)點(diǎn)值并加載配置。然后判斷有否存在配置變更(步驟S203)。如有配置變更(步驟S203中是),則在zookeeper中心對(duì)配置進(jìn)行修改,然后zookeeper中心向客戶端發(fā)節(jié)點(diǎn)變更通知(步驟S205)。然而,圖2中所示的基于zooke^er的分布式配置管理方式存在以下缺陷:配置數(shù)據(jù)屬性支持性比較單一,很難支持復(fù)雜數(shù)據(jù)結(jié)構(gòu);配置層級(jí)主要基于樹形結(jié)構(gòu),擴(kuò)展不方便,實(shí)現(xiàn)成本較高且權(quán)限控制不靈活;對(duì)客戶端實(shí)現(xiàn)語言有限制,主要支持java和C,而其他語言支持有限;查詢支持不好,很難實(shí)現(xiàn)個(gè)性化查詢。
【發(fā)明內(nèi)容】
[0005]根據(jù)對(duì)現(xiàn)有技術(shù)中的集中分布式部署系統(tǒng)的分析,可以看到現(xiàn)有技術(shù)仍存在以下技術(shù)問題:對(duì)于不同環(huán)境中的服務(wù),無法根據(jù)運(yùn)行時(shí)環(huán)境關(guān)鍵屬性來自動(dòng)識(shí)別部署實(shí)例;無法針對(duì)不同環(huán)境,實(shí)現(xiàn)差異化配置;當(dāng)配置項(xiàng)變更時(shí),部署實(shí)例無法做到無文件配置改動(dòng)部署,即無法使分布式服務(wù)在部署環(huán)境下不做任何變更而實(shí)現(xiàn)配置項(xiàng)熱加載。
[0006]具體地,根據(jù)本發(fā)明的第一方面,提供了一種差異化配置項(xiàng)自動(dòng)加載系統(tǒng)中在配置管理服務(wù)端(302)處的配置管理與加載方法,所述方法包括以下步驟:根據(jù)擬部署的服務(wù)環(huán)境關(guān)鍵參數(shù)設(shè)定部署標(biāo)識(shí),按所述部署標(biāo)識(shí)在中央數(shù)據(jù)庫(307)中維護(hù)所述配置項(xiàng);基于來自服務(wù)部署客戶端(301)的請(qǐng)求,將與所述服務(wù)環(huán)境關(guān)鍵參數(shù)相關(guān)聯(lián)的所述配置項(xiàng)加載到服務(wù)部署客戶端(301)中的集中緩存中。
[0007]在一個(gè)實(shí)施例中,所述配置項(xiàng)包括key-value型配置、XML型配置、文本文件、二進(jìn)制對(duì)象。
[0008]在一個(gè)實(shí)施例中,所述部署標(biāo)識(shí)包括IP地址和/或部署路徑,且所述部署標(biāo)識(shí)唯一地標(biāo)識(shí)一個(gè)部署實(shí)例。
[0009]在一個(gè)實(shí)施例中,維護(hù)所述配置項(xiàng)包括:利用操作界面來對(duì)配置項(xiàng)進(jìn)行操作。
[0010]在一個(gè)實(shí)施例中,維護(hù)所述配置項(xiàng)包括:對(duì)數(shù)據(jù)進(jìn)行序列化。
[0011]根據(jù)本發(fā)明的第二方面,提供了一種差異化配置項(xiàng)自動(dòng)加載系統(tǒng)中在服務(wù)部署客戶端(301)處的模塊識(shí)別與配置讀取方法,所述方法包括以下步驟:在所述部署啟動(dòng)時(shí),向中央數(shù)據(jù)庫(307)請(qǐng)求與服務(wù)環(huán)境關(guān)鍵參數(shù)相對(duì)應(yīng)的所述配置項(xiàng),并利用所述配置項(xiàng)啟動(dòng)所述部署;在所述部署的服務(wù)過程中,獲取配置更新信息,當(dāng)配置變更后自動(dòng)加載最新的所述配置項(xiàng)。
[0012]在一個(gè)實(shí)施例中,所述配置項(xiàng)包括key-value型配置、XML型配置、文本文件、二進(jìn)制對(duì)象。
[0013]在一個(gè)實(shí)施例中,請(qǐng)求與服務(wù)環(huán)境關(guān)鍵參數(shù)相對(duì)應(yīng)的所述配置項(xiàng)包括:查找與服務(wù)環(huán)境關(guān)鍵參數(shù)相對(duì)應(yīng)的部署標(biāo)識(shí);當(dāng)找到所述部署標(biāo)識(shí)時(shí),讀取與所述部署標(biāo)識(shí)相對(duì)應(yīng)的配置項(xiàng),以利用所述配置項(xiàng)啟動(dòng)所述部署;
[0014]在一個(gè)實(shí)施例中,所述部署標(biāo)識(shí)包括IP地址和/或部署路徑,且所述部署標(biāo)識(shí)唯一地標(biāo)識(shí)一個(gè)部署實(shí)例。
[0015]在一個(gè)實(shí)施例中,所述獲取配置更新信息包括定時(shí)獲取更新和/或有條件刷新。
[0016]在一個(gè)實(shí)施例中,所述有條件刷新包括:管理端利用刷新接口來觸發(fā)所述配置項(xiàng)的刷新。
[0017]在一個(gè)實(shí)施例中,當(dāng)配置變更后自動(dòng)加載最新的所述配置項(xiàng)包括:增量配置項(xiàng)加載和/或全量配置項(xiàng)加載。
[0018]根據(jù)本發(fā)明的第三方面,提供了一種差異化配置項(xiàng)自動(dòng)加載系統(tǒng)中的配置管理服務(wù)端(302),所述配置管理服務(wù)端(302)包括:配置項(xiàng)集中管理裝置(305),被配置為:根據(jù)擬部署的服務(wù)環(huán)境關(guān)鍵參數(shù)設(shè)定部署標(biāo)識(shí),按所述部署標(biāo)識(shí)在中央數(shù)據(jù)庫(307)中維護(hù)所述配置項(xiàng);配置項(xiàng)加載與緩存裝置(306),被配置為:基于來自服務(wù)部署客戶端(301)的請(qǐng)求,將與所述服務(wù)環(huán)境關(guān)鍵參數(shù)相關(guān)聯(lián)的所述配置項(xiàng)加載到服務(wù)部署客戶端(301)中的集中緩存中。
[0019]在一個(gè)實(shí)施例中,所述配置項(xiàng)包括key-value型配置、XML型配置、文本文件、二進(jìn)制對(duì)象。
[0020]在一個(gè)實(shí)施例中,所述部署標(biāo)識(shí)包括IP地址和/或部署路徑,且所述部署標(biāo)識(shí)唯一地標(biāo)識(shí)一個(gè)部署實(shí)例。
[0021]在一個(gè)實(shí)施例中,所述配置項(xiàng)集中管理裝置(305)還被配置為:利用操作界面來對(duì)配置項(xiàng)進(jìn)行操作。
[0022]在一個(gè)實(shí)施例中,所述配置項(xiàng)集中管理裝置(305)還被配置為:對(duì)數(shù)據(jù)進(jìn)行序列化。
[0023]根據(jù)本發(fā)明的第四方面,提供了一種差異化配置項(xiàng)自動(dòng)加載系統(tǒng)中的服務(wù)部署客戶端(301),所述服務(wù)部署客戶端(301)包括:部署自動(dòng)識(shí)別裝置(303),被配置為:在所述部署啟動(dòng)時(shí),向中央數(shù)據(jù)庫(307)請(qǐng)求與服務(wù)環(huán)境關(guān)鍵參數(shù)相對(duì)應(yīng)的所述配置項(xiàng),并利用所述配置項(xiàng)啟動(dòng)所述部署;配置讀取刷新裝置(304),被配置為:在所述部署的服務(wù)過程中,獲取配置更新信息,當(dāng)配置變更后自動(dòng)加載最新的所述配置項(xiàng)。
[0024]在一個(gè)實(shí)施例中,所述配置項(xiàng)包括key-value型配置、XML型配置、文本文件、二進(jìn)制對(duì)象。
[0025]在一個(gè)實(shí)施例中,所述部署自動(dòng)識(shí)別裝置(303)還被配置為:查找與服務(wù)環(huán)境關(guān)鍵參數(shù)相對(duì)應(yīng)的部署標(biāo)識(shí);當(dāng)找到所述部署標(biāo)識(shí)時(shí),讀取與所述部署標(biāo)識(shí)相對(duì)應(yīng)的配置項(xiàng),以利用所述配置項(xiàng)啟動(dòng)所述部署;
[0026]在一個(gè)實(shí)施例中,所述部署標(biāo)識(shí)包括IP地址和/或部署路徑,且所述部署標(biāo)識(shí)唯一地標(biāo)識(shí)一個(gè)部署實(shí)例。
[0027]在一個(gè)實(shí)施例中,所述配置讀取刷新裝置(304)還被配置為:定時(shí)獲取更新和/或有條件刷新。
[0028]在一個(gè)實(shí)施例中,所述有條件刷新包括:管理端利用刷新接口來觸發(fā)所述配置項(xiàng)的刷新。
[0029]在一個(gè)實(shí)施例中,所述配置讀取刷新裝置(304)還被配置為:增量配置項(xiàng)加載和/或全量配置項(xiàng)加載。
[0030]根據(jù)本發(fā)明的第五方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括由處理器執(zhí)行的指令,當(dāng)所述指令被處理器執(zhí)行時(shí)使所述處理器實(shí)現(xiàn)根據(jù)所述第一方面中所述的在配置管理服務(wù)端(302)處的配置管理與加載方法。
[0031]根據(jù)本發(fā)明的第六方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括由處理器執(zhí)行的指令,當(dāng)所述指令被處理器執(zhí)行時(shí)使所述處理器實(shí)現(xiàn)根據(jù)所述第二方面中所述的在服務(wù)部署客戶端(301)處的模塊識(shí)別與配置讀取方法。