一種Web應(yīng)用的配置參數(shù)關(guān)聯(lián)確定方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種配置參數(shù)關(guān)聯(lián)方法,尤其涉及一種面向Web應(yīng)用的配置參數(shù)關(guān)聯(lián) 關(guān)系的自動確定方法,屬于計算機軟件技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 配置(configuration)是軟件系統(tǒng)不可或缺的組成部分,廣泛存在于軟件部署、 升級以及迀移等應(yīng)用場景中。配置覆蓋了軟件系統(tǒng)及其環(huán)境的多個方面,包括配置文件、已 安裝的軟件,甚至包括底層硬件環(huán)境。廣義上來講,軟件配置是指以用戶需求和軟件的功 能、結(jié)構(gòu)及主要特性等為依據(jù),選擇和確定相關(guān)硬件、軟件和固件的型號、版本及數(shù)量,規(guī)劃 軟件放置位置和關(guān)聯(lián)關(guān)系,設(shè)置軟件系統(tǒng)相關(guān)參數(shù)值等;狹義上的軟件配置主要是指對軟 件系統(tǒng)配置參數(shù)取值的設(shè)置。
[0003] 多層架構(gòu)的Web應(yīng)用已成為當(dāng)前主流的網(wǎng)絡(luò)應(yīng)用軟件,構(gòu)成Web應(yīng)用的組件存在 頻繁交互和相互依賴,導(dǎo)致配置參數(shù)間產(chǎn)生隱式的復(fù)雜關(guān)聯(lián),給應(yīng)用的配置及其錯誤診斷 帶來困難。基于異構(gòu)組件的Web應(yīng)用運行在多種/多層中間件平臺上,分層架構(gòu)使組件之 間、容器之間以及組件與容器之間存在關(guān)聯(lián)和依賴,也使應(yīng)用及環(huán)境的配置參數(shù)之間存在 隱式的復(fù)雜關(guān)聯(lián),如:配置參數(shù)取值的一致性、依賴性、取值范圍的相互制約等多種類型。如 果無法充分挖掘應(yīng)用配置參數(shù)間的隱式關(guān)聯(lián)并進(jìn)行顯示化表示,應(yīng)用配置將發(fā)生相關(guān)的約 束違背,導(dǎo)致系統(tǒng)運行故障。
[0004] 應(yīng)用配置參數(shù)間的關(guān)聯(lián)關(guān)系及其類型決定了配置項在參數(shù)取值和設(shè)置順序等方 面必須滿足的規(guī)則和約束,但是Web應(yīng)用的分布性和基于異構(gòu)組件松散耦合的體系架構(gòu)使 配置參數(shù)關(guān)聯(lián)更加具有隱蔽性,發(fā)現(xiàn)關(guān)聯(lián)配置參數(shù)集合也更加困難。
[0005] 當(dāng)前已有的發(fā)明專利和學(xué)術(shù)研宄對軟件系統(tǒng)部署問題給予了很多的關(guān)注并形成 了相關(guān)的成果。
[0006] -些發(fā)明專利提出了軟件和應(yīng)用系統(tǒng)相關(guān)的配置參數(shù)設(shè)置、管理和存儲方法,具 有代表性的包括:一種業(yè)務(wù)系統(tǒng)中配置參數(shù)的保存方法及裝置(【申請?zhí)枴緾N201010523276. X)、一種更新配置參數(shù)的方法、裝置及終端設(shè)備(【申請?zhí)枴緾N201210583467. 4)、一種自 動配置參數(shù)的方法及系統(tǒng)(【申請?zhí)枴緾N201310020580. 6)、一種參數(shù)配置模板的生成方 法及利用模板配置參數(shù)的方法(【申請?zhí)枴緾N200810128322.9)、配置參數(shù)發(fā)送方法、接收 方法及裝置(【申請?zhí)枴緾N201310383501.8)、一種控制配置參數(shù)的方法和裝置(【申請?zhí)枴?CN201180001693. 0)等,上述發(fā)明專利主要針對不同環(huán)境和不同類型的軟件系統(tǒng)和應(yīng)用提 出對應(yīng)的配置參數(shù)設(shè)置、保存以及控制,提高配置參數(shù)管理和設(shè)置過程的自動化程度。但 是,現(xiàn)有的發(fā)明專利沒有針對Web應(yīng)用系統(tǒng)的大量配置參數(shù)提出專門的配置參數(shù)關(guān)聯(lián)發(fā)現(xiàn) 方法,難以保證包括Web應(yīng)用在內(nèi)的復(fù)雜分布式應(yīng)用在系統(tǒng)配置時的正確性。
[0007] 在學(xué)術(shù)研宄方面,SPEX (參見文獻(xiàn):Xu TY,Zhang JQ,Huang P,Zheng J,Sheng TW, Yuan D,Zhou YY,Pasupathy S. Do not blame users for misconfigurations. In SOSP^13, 2013針對"名值對"類型的配置參數(shù)錯誤,基于靜態(tài)程序數(shù)據(jù)流分析從配置參數(shù)的讀取和 使用模式中推斷出涉及多配置參數(shù)的控制依賴(control dependency)和取值關(guān)聯(lián)(value correlation),但是SPEX目前主要應(yīng)用于單個程序和系統(tǒng)的"名值對"類型配置參數(shù),對于 跨系統(tǒng)的配置間關(guān)聯(lián)導(dǎo)致的約束不適用。Encore (參見文獻(xiàn):Zhang JQ,Renganarayana L, Zhang XL,Ge NY, Bala V, Xu TY, Zhou YY.EnCore Exploiting system environment and correlation information for misconf iguration detection. In ASPLOSi 14, 2014)基于 統(tǒng)計分析和數(shù)據(jù)挖掘方法,預(yù)先定義一組約束模板(template)來描述配置項及環(huán)境信息 間可能存在的二元關(guān)聯(lián)關(guān)系,基于模板集合Encore從訓(xùn)練集中選取滿足模板的配置項并 逐一進(jìn)行實例化,產(chǎn)生針對目標(biāo)系統(tǒng)的一組備選配置關(guān)聯(lián)集合。Encore需要以訓(xùn)練數(shù)據(jù)集 為基礎(chǔ),還需要提供預(yù)定義的約束模板,同樣主要用于檢測單個系統(tǒng)內(nèi)部由于存在配置關(guān) 聯(lián)而導(dǎo)致的錯誤,沒有考慮多個系統(tǒng)間存在關(guān)聯(lián)的場景。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明的目的是:克服現(xiàn)有技術(shù)的不足,提供一種Web應(yīng)用的配置參數(shù)關(guān)聯(lián)確定 方法,該方法能夠根據(jù)已知的構(gòu)成Web應(yīng)用的組件及運行支撐環(huán)境之間的關(guān)聯(lián)和依賴實施 較為全面的、自動化的組件間配置參數(shù)關(guān)聯(lián)檢測與確定,基于確定的參數(shù)配置關(guān)聯(lián)提高了 應(yīng)用配置的正確性,降低了應(yīng)用迀移和部署過程中由于忽略配置參數(shù)關(guān)聯(lián)而導(dǎo)致的應(yīng)用配 置錯誤。
[0009] 本發(fā)明技術(shù)解決方案:一種Web應(yīng)用的配置參數(shù)關(guān)聯(lián)確定方法,實現(xiàn)步驟如下:
[0010] (1)對Web應(yīng)用系統(tǒng)及其運行環(huán)境查找配置文件并進(jìn)行配置參數(shù)的抽取和處理, 獲取Web應(yīng)用系統(tǒng)及其運行環(huán)境的配置參數(shù)集合C(W);所有的配置參數(shù)均以一個參數(shù)名k 和取值V的二元組表示;
[0011] ⑵基于Web應(yīng)用系統(tǒng)配置參數(shù)特征,定義配置參數(shù)類型集合T= ITpT2,…,Tp}, 對于TiE τ(1彡i彡p),T i= <n i,ei>,其中IIi表示參數(shù)類型名,e i為該參數(shù)類型的表達(dá) 式;
[0012] (3)基于步驟(2)定義的配置參數(shù)類型集合T,對步驟(1)的配置參數(shù)集合C(W)中 的每個配置參數(shù)t進(jìn)行分析。為每個配置參數(shù)t設(shè)定參數(shù)名稱類型向量tk= (Tkl,Tk2,…, Tkp)和參數(shù)取值類型向量tv= (Tvl,Tv2,…,Tvp),其中的每個分量都初始化為0。判斷配置 參數(shù)集合C(W)中每個配置參數(shù)的參數(shù)名和取值是否滿足T中參數(shù)類型的各個表達(dá)式,如果 參數(shù)名稱(或參數(shù)取值)滿足類型!\的表達(dá)式,則將tk(或tv)對應(yīng)的向量分量Tki (或Tvi) 值設(shè)為1,否則值仍為0 ;
[0013] (4)對配置參數(shù)集合C(W)計算參數(shù)間的關(guān)聯(lián),所述配置參數(shù)間的關(guān)聯(lián)分為一致 性關(guān)聯(lián)和其他關(guān)聯(lián),所述一致性關(guān)聯(lián)是指存在關(guān)聯(lián)的配置參數(shù)需要在取值方面保持一致, 所述其他關(guān)聯(lián)是指除一致性關(guān)聯(lián)之外的、配置參數(shù)間存在的其他語義關(guān)聯(lián);以配置參數(shù)的 名稱k、取值V、名稱類型向量tk和取值類型向量t v為依據(jù),從一致性關(guān)聯(lián)和其他關(guān)聯(lián)兩 個方面分別查找Web應(yīng)用系統(tǒng)的關(guān)聯(lián)配置參數(shù);通過計算配置參數(shù)的相似度來查找一致 性關(guān)聯(lián),通過計算配置參數(shù)的關(guān)聯(lián)度來查找其他關(guān)聯(lián);得到初始相似配置參數(shù)備選集合 Sim'(W)和初始關(guān)聯(lián)配置參數(shù)備選集合Correl '(W);
[0014] (5)為了提高準(zhǔn)確度,需要對步驟(4)中計算得到的初始相似配置參數(shù)備選集合 Sim'(W)和初始關(guān)聯(lián)配置參數(shù)備選集合Correl '(W)進(jìn)行過濾;
[0015] (6)最后,通過步驟(5)過濾得到當(dāng)前Web應(yīng)用系統(tǒng)中可能存在的一致性關(guān)聯(lián)配置 參數(shù)集合Sim(W)和其他關(guān)聯(lián)配置參數(shù)集合Correl (W),以Sim(W) U Correl (W)作為方法最 終確定目標(biāo)Web應(yīng)用系統(tǒng)中的關(guān)聯(lián)參數(shù)集合。
[0016] 所述步驟(1)中查找配置文件的方法為:首先基于配置文件后綴名找到Web應(yīng)用 系統(tǒng)中可能的配