亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種軟件抗衰方法及其系統(tǒng)的制作方法

文檔序號(hào):6579628閱讀:293來(lái)源:國(guó)知局
專利名稱:一種軟件抗衰方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及軟件維護(hù)技術(shù),尤其涉及針對(duì)包含多種業(yè)務(wù)的大型應(yīng)用系統(tǒng)的抗衰系統(tǒng)及其方法。
背景技術(shù)
軟件衰退現(xiàn)象是指一個(gè)長(zhǎng)期持續(xù)運(yùn)行的軟件系統(tǒng)因發(fā)生狀態(tài)退化和性能降低而最終導(dǎo)致系統(tǒng)崩潰的現(xiàn)象。 一般軟件運(yùn)行過程可劃分為四個(gè)階段,且各個(gè)狀態(tài)之間的轉(zhuǎn)移模型如圖1所示。
(1) 健壯態(tài)SO:即軟件剛啟動(dòng)時(shí)的高度健康狀態(tài),發(fā)生宕機(jī)的概率基本為0;
(2) 亞健壯態(tài)S1:即軟件啟動(dòng)后經(jīng)過一段較長(zhǎng)時(shí)間的運(yùn)行,由健壯態(tài)進(jìn)入亞健康態(tài)(即轉(zhuǎn)移過程rl),此時(shí)發(fā)生性能衰退或宕機(jī)的概率大于O;
(3) 衰退態(tài)S2:在亞健壯態(tài)駐留了一段時(shí)間后,就會(huì)進(jìn)入故障宕機(jī)時(shí)間易發(fā)的衰退態(tài)(即轉(zhuǎn)移過程r2);
(4) 自愈態(tài)S3:在衰退態(tài)系統(tǒng)執(zhí)行自愈操作后到達(dá)自愈態(tài)(即轉(zhuǎn)移過程r3),該狀態(tài)下系統(tǒng)的性能稍遜于健壯態(tài)。
除上述狀態(tài)轉(zhuǎn)移模型外,還會(huì)有因系統(tǒng)的某些操作導(dǎo)致由上述Sl直接進(jìn)入自愈態(tài)S3,譬如r5;或因整個(gè)系統(tǒng)重啟導(dǎo)致由Sl、 S2直接回到健壯態(tài)SO,譬如r6。
從軟件工程學(xué)的角度來(lái)看,在軟件的設(shè)計(jì)階段、開發(fā)階段及測(cè)試階段來(lái)消除軟件衰退通常是不可能的,因此軟件在運(yùn)行時(shí)期的衰退現(xiàn)象有其存在的必然性。
一些大型應(yīng)用系統(tǒng),以電信領(lǐng)域中的綜合網(wǎng)管系統(tǒng)為例,該系統(tǒng)需要提供拓樸、告警、性能、配置、信令跟蹤、安全、日志、策略管理及業(yè)務(wù)分析等種類繁多的功能。這類系統(tǒng)的用戶(即網(wǎng)管系統(tǒng)的使用者)對(duì)性能變化非
常敏感,對(duì)平均故障間隔(MTBF)也有很高的要求。
而現(xiàn)有的 一些軟件系統(tǒng)的抗衰系統(tǒng)及方法,存在以下一些問題
(1) 通過在軟件系統(tǒng)中插入各種性能監(jiān)控代理(agent),會(huì)由于監(jiān)控agent運(yùn)行而給系統(tǒng)帶來(lái)額外的負(fù)載沖擊;
例如,美國(guó)專利US2004078657 4皮露了一種基于模式識(shí)別的軟件抗衰方法,通過對(duì)一些特定的性能指標(biāo)進(jìn)行周期性測(cè)量,當(dāng)測(cè)量值與知識(shí)庫(kù)中的預(yù)設(shè)值背離時(shí),啟動(dòng)系統(tǒng)的抗衰操作。該方法需要對(duì)特定的性能指標(biāo)進(jìn)行限定,且需要預(yù)先構(gòu)建模式庫(kù),并需要編寫性能測(cè)量agent,故實(shí)施監(jiān)控的時(shí)候會(huì)給系統(tǒng)帶來(lái)額外的負(fù)載沖擊。
(2) 由于需要進(jìn)行大量的趨勢(shì)分析會(huì)帶來(lái)復(fù)雜的計(jì)算量;
(3 )基于時(shí)間的抗衰系統(tǒng)及方法通常對(duì)負(fù)載變化容忍性差,即對(duì)負(fù)載變化不敏感,抗衰粒度粗,不能通過感知系統(tǒng)負(fù)載變化來(lái)進(jìn)行抗衰調(diào)整。
例如,美國(guó)專利US2007083794纟皮露了一種通過主動(dòng)復(fù)制策略來(lái)防止軟件老化的方法,復(fù)制策略是基于軟件應(yīng)用本身。當(dāng)復(fù)制策略的條件滿足時(shí),對(duì)軟件整體進(jìn)行復(fù)制(包括軟件狀態(tài)信息),復(fù)制完成之后,進(jìn)行軟件應(yīng)用整體切換。該方法由于軟件應(yīng)用本身,在條件滿足時(shí)對(duì)軟件整體進(jìn)行復(fù)制及進(jìn)行軟件整體切換,故其抗衰粒度粗,會(huì)由此對(duì)系統(tǒng)性能造成較大沖擊。
(4 )缺乏能夠探測(cè)未知的衰退因素的功能,故不能為系統(tǒng)優(yōu)化提供依據(jù)。發(fā)明目的
本發(fā)明所要解決的技術(shù)問題是提供一種軟件抗衰方法及其系統(tǒng),能夠避免抗衰粒度較粗而對(duì)負(fù)載變化容忍性差的問題。
為了解決上述技術(shù)問題,本發(fā)明提供了一種軟件抗衰方法,包括
獲取基于構(gòu)件的軟件系統(tǒng)的操作日志;
以時(shí)間窗為單位,按時(shí)間從先到后的順序逐個(gè)時(shí)間窗地對(duì)梯:作日志的構(gòu)件操作結(jié)果及其時(shí)間開銷進(jìn)行分析,確定軟件系統(tǒng)及其包含的各構(gòu)件的運(yùn)行狀況參數(shù),在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將此時(shí)功能
衰退的構(gòu)件確定為需重啟構(gòu)件;對(duì)需重啟構(gòu)件進(jìn)行重啟。
進(jìn)一步地,所述功能衰退的構(gòu)件中至少部分構(gòu)件是按照以下方式確定的
對(duì)操作日志的構(gòu)件操作結(jié)果及時(shí)間開銷進(jìn)行分析時(shí),對(duì)構(gòu)件自軟件系統(tǒng)重啟以來(lái)發(fā)生操作失敗的次數(shù)進(jìn)行累計(jì),將累計(jì)操作失敗次數(shù)大于或大于等于設(shè)定的失敗次數(shù)閾值的構(gòu)件作為功能衰退的構(gòu)件。
進(jìn)一步地,所述功能衰退的構(gòu)件中至少部分構(gòu)件是按照以下方式確定的對(duì)操作日志的構(gòu)件操作結(jié)果及時(shí)間開銷進(jìn)行分析時(shí),對(duì)操作均成功的每
一構(gòu)件,如該構(gòu)件在當(dāng)前時(shí)間窗的單次#:作平均時(shí)延大于上一時(shí)間窗的單次
操作平均時(shí)延,且大于或大于等于設(shè)定的時(shí)延閾值,將該構(gòu)件作為當(dāng)前需觀測(cè)的構(gòu)件,并將該構(gòu)件,見測(cè)次數(shù)加一;
在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將當(dāng)前需觀測(cè)的構(gòu)件中累計(jì)服務(wù)懲罰時(shí)間最大的一個(gè)或多個(gè)構(gòu)件,或累計(jì)服務(wù)懲罰時(shí)間大于設(shè)定的服務(wù)懲罰時(shí)間閾值的一個(gè)或多個(gè)構(gòu)件,作為所述功能衰退的構(gòu)件。
進(jìn)一步地,所述功能衰退的構(gòu)件中至少部分構(gòu)件是按照以下方式確定的
對(duì)操作日志的構(gòu)件操作結(jié)果及時(shí)間開銷進(jìn)行分析時(shí),在當(dāng)前時(shí)間窗內(nèi)計(jì)算系統(tǒng)中每一個(gè)構(gòu)件的總體服務(wù)時(shí)間,在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將當(dāng)前總體服務(wù)時(shí)間最大的M個(gè)構(gòu)件作為所述功能衰退的構(gòu)件,其中M的值是預(yù)先設(shè)定的,M=l,2,...;或者M(jìn)等于總體服務(wù)時(shí)間大于設(shè)定的構(gòu)件總體服務(wù)時(shí)間閾值的構(gòu)件的個(gè)數(shù),M=l,2,...;或者在按其它方式確定的功能衰退的構(gòu)件數(shù)Ml小于設(shè)定的一次啟動(dòng)構(gòu)件數(shù)M0時(shí),取M=M0-M1,在M1^VI0時(shí),則M=0;
構(gòu)件的總體服務(wù)時(shí)間為自上次軟件系統(tǒng)重啟以來(lái),該構(gòu)件所有成功搮:作的時(shí)間開銷之和減去該構(gòu)件所有服務(wù)懲罰時(shí)間之和得到的差。
進(jìn)一步地所述重啟條件為當(dāng)前時(shí)間窗的系統(tǒng)總體服務(wù)時(shí)間小于或小于等于設(shè)定的系統(tǒng)總體服務(wù)時(shí)間閾值,系統(tǒng)總體服務(wù)時(shí)間等于當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件成功
操作的時(shí)間開銷之和減去所有構(gòu)件的服務(wù)懲罰時(shí)間之和;或者
所述重啟條件為當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件的服務(wù)懲罰時(shí)間之和,與當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件成功操作的時(shí)間開銷之和的比值或與當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件操作的時(shí)間開銷之和的比值,大于或大于等于設(shè)定的比例閾值。
進(jìn)一步地,構(gòu)件的服務(wù)懲罰時(shí)間按以下方式確定
在當(dāng)前時(shí)間窗內(nèi)存在操作失敗的構(gòu)件,該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的服務(wù)懲罰時(shí)間等于該構(gòu)件每次失敗的構(gòu)件操作的時(shí)間開銷之和;
在當(dāng)前時(shí)間窗內(nèi)梯:作均成功的構(gòu)件,如該構(gòu)件在當(dāng)前時(shí)間窗的單次操:作平均時(shí)延大于上一時(shí)間窗的單次操作平均時(shí)延,且大于或大于等于設(shè)定的時(shí)延閾值,將該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)所有成功的構(gòu)件操作的時(shí)間開銷之和與一懲罰系數(shù)的積,作為該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的服務(wù)懲罰時(shí)間,該懲罰系數(shù)的取值根據(jù)該構(gòu)件的累計(jì)觀測(cè)次數(shù)或連續(xù)觀測(cè)次數(shù)查找對(duì)應(yīng)的配置數(shù)據(jù)得到,且隨著觀測(cè)次數(shù)增大而增大。
進(jìn)一步地
將此時(shí)功能衰退的構(gòu)件確定為需重啟構(gòu)件時(shí),還根據(jù)設(shè)定的規(guī)則確定每一個(gè)需重啟構(gòu)件的重啟時(shí)刻;對(duì)需重啟構(gòu)件進(jìn)行重啟之前,需要根據(jù)構(gòu)件之間的依賴關(guān)系,將需重啟構(gòu)件以及與需重啟構(gòu)件之間存在依賴關(guān)系的構(gòu)件構(gòu)造一個(gè)或多個(gè)重啟鏈,從重啟鏈的根構(gòu)件開始按序重啟該重啟鏈上的構(gòu)件。
為了解決上述技術(shù)問題,本發(fā)明提供了一種軟件抗衰系統(tǒng),包括依次連接的數(shù)據(jù)庫(kù)服務(wù)模塊、操作日志分析模塊以及重啟守護(hù)模塊,其中
數(shù)據(jù)庫(kù)服務(wù)模塊,用于獲取基于構(gòu)件的軟件系統(tǒng)的操作曰志;
操作日志分析模塊,用于以時(shí)間窗為單位,按時(shí)間從先到后的順序逐個(gè)時(shí)間窗地對(duì)所述"t喿作日志的構(gòu)件操作結(jié)果及其時(shí)間開銷進(jìn)行分析,確定軟件系統(tǒng)及其包含的各構(gòu)件的運(yùn)行狀況參數(shù),在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將此時(shí)功能衰退的構(gòu)件確定為需重啟構(gòu)件并保存;重啟守護(hù)模塊,用于對(duì)需重啟構(gòu)件進(jìn)行重啟。
進(jìn)一步地,操作日志分析模塊進(jìn)一步包括第一分析單元,用于對(duì)構(gòu)件自軟件系統(tǒng)重啟以來(lái)發(fā)生操作失敗的次數(shù)進(jìn)行累計(jì),將累計(jì)操作失敗次數(shù)大于或大于等于設(shè)定的失敗次數(shù)閾值的構(gòu)件作為為需重啟構(gòu)件保存。
進(jìn)一步地,操作日志分析模塊進(jìn)一步包括第二分析單元,用于對(duì)操作均成功的每一構(gòu)件計(jì)算各時(shí)間窗的單次操作平均時(shí)延,如該構(gòu)件在當(dāng)前時(shí)間窗的單次操作平均時(shí)延大于其上一時(shí)間窗的單次操作平均時(shí)延,且大于或大于等于設(shè)定的時(shí)延閾值,將該構(gòu)件作為當(dāng)前需觀測(cè)的構(gòu)件,并將該構(gòu)件觀測(cè)次數(shù)加一;在確定軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將當(dāng)前需觀測(cè)的構(gòu)件中累計(jì)服務(wù)懲罰時(shí)間最大的一個(gè)或多個(gè)構(gòu)件,或累計(jì)服務(wù)懲罰時(shí)間大于設(shè)定的服務(wù)懲罰時(shí)間閾值的一個(gè)或多個(gè)構(gòu)件,作為需重啟構(gòu)件保存。
進(jìn)一步地,操作日志分析模塊進(jìn)一步包括第三分析單元,用于在當(dāng)前時(shí)間窗內(nèi)計(jì)算系統(tǒng)中每一個(gè)構(gòu)件的總體服務(wù)時(shí)間,在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將當(dāng)前總體服務(wù)時(shí)間最大的M個(gè)構(gòu)件作為所述重啟構(gòu)件保存,其中M的值是預(yù)先設(shè)定的,M=l,2,...;或者M(jìn)等于總體服務(wù)時(shí)間大于設(shè)定的構(gòu)件總體服務(wù)時(shí)間閾值的構(gòu)件的個(gè)數(shù),M=l,2,...;或者在按其它方式確定的功能衰退的構(gòu)件數(shù)M1小于設(shè)定的一次啟動(dòng)構(gòu)件數(shù)MO時(shí),取M=M0-M1,在M1^VI0時(shí),則M=0;
其中構(gòu)件的總體服務(wù)時(shí)間為自上次軟件系統(tǒng)重啟以來(lái),該構(gòu)件所有成功操作的時(shí)間開銷之和減去該構(gòu)件所有服務(wù)懲罰時(shí)間之和得到的差。
進(jìn)一步地,操作日志分析模塊進(jìn)一步包括重啟判決單元,用于判斷軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值是否符合重啟條件,即
當(dāng)前時(shí)間窗的系統(tǒng)總體服務(wù)時(shí)間小于或小于等于設(shè)定的系統(tǒng)總體服務(wù)時(shí)間閾值,系統(tǒng)總體服務(wù)時(shí)間等于當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件成功操作的時(shí)間開銷之和減去所有構(gòu)件的服務(wù)懲罰時(shí)間之和;
或者,當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件的服務(wù)懲罰時(shí)間之和,與當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件成功操作的時(shí)間開銷之和的比值或與當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件操作的時(shí)間開銷之和的比值,大于或大于等于設(shè)定的比例閾值。
進(jìn)一步地,所述構(gòu)件的服務(wù)懲罰時(shí)間的確定按以下方式進(jìn)行
在當(dāng)前時(shí)間窗內(nèi)存在操作失敗的構(gòu)件,該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的服務(wù)懲罰時(shí)間等于該構(gòu)件每次失敗的構(gòu)件操作的時(shí)間開銷之和;
在當(dāng)前時(shí)間窗內(nèi)操作均成功的構(gòu)件,如該構(gòu)件在當(dāng)前時(shí)間窗的單次操作平均時(shí)延大于上一時(shí)間窗的單次操作平均時(shí)延,且大于或大于等于設(shè)定的時(shí)延閾值,將該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)所有成功的構(gòu)件操作的時(shí)間開銷之和與一懲罰系數(shù)的積,作為該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的服務(wù)懲罰時(shí)間,該懲罰系數(shù)的取值根據(jù)該構(gòu)件的累計(jì)觀測(cè)次數(shù)或連續(xù)觀測(cè)次數(shù)查找對(duì)應(yīng)的配置數(shù)據(jù)得到,且隨著觀測(cè)次數(shù)增大而增大。
進(jìn)一步地,
操作日志分析模塊將功能衰退的構(gòu)件確定為需重啟構(gòu)件時(shí),還根據(jù)設(shè)定的規(guī)則確定每一個(gè)需重啟構(gòu)件的重啟時(shí)刻;
重啟守護(hù)模塊,在對(duì)需重啟構(gòu)件進(jìn)行重啟前,根據(jù)構(gòu)件之間的依賴關(guān)系,將需重啟構(gòu)件以及與需重啟構(gòu)件之間存在依賴關(guān)系的構(gòu)件構(gòu)造一個(gè)或多個(gè)重啟鏈,從重啟鏈的根構(gòu)件開始按序重啟該重啟鏈上的構(gòu)件。
本發(fā)明的軟件抗衰系統(tǒng)及方法,由于基于構(gòu)件的軟件架構(gòu),故能夠?qū)崿F(xiàn)微重啟;在分析上既結(jié)合宏觀層面的信息,又結(jié)合微觀層面的信息,故可避免抗衰粒度較粗而導(dǎo)致對(duì)負(fù)載變化容忍性差的問題;并且,基于系統(tǒng)操作日志,不僅考慮了當(dāng)前操作的情況,而且考慮歷史操作信息,故可避免因瞬時(shí)異常數(shù)據(jù)而導(dǎo)致構(gòu)件重啟的誤操作,也避免了趨勢(shì)分析帶來(lái)的復(fù)雜計(jì)算量;同時(shí),因不必專門開發(fā)監(jiān)控Agent而避免了抗衰操作給系統(tǒng)帶來(lái)額外的負(fù)載沖擊;由于能夠偵測(cè)到軟件未知的一些衰退因素,因而能夠?yàn)橄到y(tǒng)優(yōu)化提供充足的依據(jù)。
本發(fā)明在實(shí)現(xiàn)上具有普適性,執(zhí)行抗衰的過程具有很低的抗衰成本,幫助大型應(yīng)用系統(tǒng)的運(yùn)營(yíng)者減少系統(tǒng)意外停機(jī)時(shí)間,提高系統(tǒng)服務(wù)率,增加系統(tǒng)有效工作周期。


圖1為軟件運(yùn)行過程中的狀態(tài)轉(zhuǎn)移示意圖2為本發(fā)明的軟件抗衰方法實(shí)施例流程圖3為基于構(gòu)件的軟件系統(tǒng)抗衰粒度分層示意圖4為基于構(gòu)件的軟件系統(tǒng)抗衰粒度取決于構(gòu)件粒度示意圖5為本發(fā)明的軟件抗衰系統(tǒng)實(shí)施例的結(jié)構(gòu)框架圖。
具體實(shí)施例
以下結(jié)合附圖和優(yōu)選實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)地闡述。以下例舉的實(shí)施例僅僅用于說(shuō)明和解釋本發(fā)明,而不構(gòu)成對(duì)本發(fā)明技術(shù)方案的限制。
本實(shí)施例軟件抗衰方法的流程如圖2所示,每次進(jìn)行抗衰處理時(shí),執(zhí)行以下步驟
步驟201:獲取基于構(gòu)件的軟件系統(tǒng)在一段時(shí)間內(nèi)的操作日志,按設(shè)定的時(shí)間粒度將該段時(shí)間劃分形成時(shí)間窗序列,附,/=/,二...";
本實(shí)施例中,抗衰處理是周期性地進(jìn)行,獲取的操作日志的時(shí)間段可以上次完成抗衰處理的時(shí)間為開始時(shí)間,時(shí)間長(zhǎng)度即為一個(gè)抗衰處理周期的長(zhǎng)
度,可設(shè)置為時(shí)間粒度的整數(shù)倍,如1,2,3,......。當(dāng)然,也可以手動(dòng)觸發(fā)進(jìn)行
抗衰處理并設(shè)置要獲取的操作日志所在的時(shí)間段。
在軟件系統(tǒng)中,其抗衰粒度可分為3層,如圖3所示系統(tǒng)層,將整個(gè)應(yīng)用系統(tǒng)作為重啟對(duì)象;功能層,將應(yīng)用系統(tǒng)的某一功能組作為重啟對(duì)象;構(gòu)件層,將應(yīng)用系統(tǒng)的某一功能(或者某一功能的一部分)作為重啟對(duì)象。
本發(fā)明的軟件抗衰方法用于基于構(gòu)件的軟件系統(tǒng),故能夠?qū)④浖顾チ6冉档驮跇?gòu)件的粒度上,并能在此基礎(chǔ)上進(jìn)行微調(diào),由此可避免抗衰粒度較粗而對(duì)負(fù)載變化容忍性差的問題。對(duì)象管理組織(OMG, Object Management Group )的通用對(duì)象請(qǐng)求代理架構(gòu)(CORBA, Common Object Request Broker Architecture )標(biāo)準(zhǔn)、SUNz>司的(JavaEE, Java Platform Enterprise Edition )標(biāo)準(zhǔn)、孩i專欠7^司的.NET框架的提出,以及環(huán)球網(wǎng)服務(wù)(Web Services)等技術(shù)的發(fā)展,構(gòu)件技術(shù)在軟件開發(fā)中扮演著越來(lái)越重要的角色。軟件構(gòu)件技術(shù)本身是出于軟件復(fù)用的角度提出的,但構(gòu)件自身的獨(dú)立部署特性,使其具有相對(duì)獨(dú)立的生命周期。因此基于構(gòu)件技術(shù)的軟件架構(gòu)是軟件抗衰粒度降低實(shí)施的關(guān)鍵。
軟件系統(tǒng)抗衰粒度細(xì)化的程度取決于構(gòu)件粒度,如圖4所示。圖3中功能層中的某一功能組可能會(huì)由圖4中基礎(chǔ)支持層的一個(gè)或多個(gè)支撐構(gòu)件、框件層的一個(gè)或多個(gè)框架構(gòu)件以及應(yīng)用層的一個(gè)或多個(gè)應(yīng)用構(gòu)件組成;采用圖4所示構(gòu)件粒度級(jí)別的抗衰將會(huì)增強(qiáng)抗衰操作的自適應(yīng)性。
在此,步驟201的基于構(gòu)件的軟件系統(tǒng), 一是可以通過構(gòu)建基于構(gòu)件的軟件系統(tǒng)實(shí)現(xiàn),二是可以將構(gòu)建的非基于構(gòu)件的軟件系統(tǒng)轉(zhuǎn)化為基于構(gòu)件的軟件系統(tǒng)實(shí)現(xiàn)。
在此基于構(gòu)件的軟件系統(tǒng)其操作日志,可通過以下兩種方式獲取
一,大型應(yīng)用系統(tǒng)都存在獨(dú)立的日志模塊,并提供統(tǒng)一的日志接口,由系統(tǒng)其它模塊調(diào)用,用于記錄模塊各自的操作。系統(tǒng)日志包含了豐富的操作信息,例如操作發(fā)生的時(shí)間,操作結(jié)束的時(shí)間,操作類型,操作的結(jié)果,操作的級(jí)別,執(zhí)行操作的模塊,操作涉及的管理對(duì)象實(shí)例,等等。因此可將系統(tǒng)日志視為一個(gè)豐富的性能檢測(cè)數(shù)據(jù)源。通過應(yīng)用系統(tǒng)提供的日志接口定期將其^t喿作日志遷移到軟件抗衰系統(tǒng)便可獲取操作日志數(shù)據(jù)。
二,如果應(yīng)用系統(tǒng)不能提供相應(yīng)的操作日志,則可以采取攔截器模式來(lái)獲取抗衰需要的操作日志。攔截器模式的好處在于其可在不被應(yīng)用程序感知的情況下被添加或^皮刪除,而且可以#1動(dòng)態(tài)地觸發(fā);通過這種方式可以4艮方便地定制需要采集的操作日志,且不會(huì)對(duì)應(yīng)用程序的性能造成沖擊。
步驟202:根據(jù)操作日志數(shù)據(jù)記錄的構(gòu)件操作結(jié)果和時(shí)間開銷,統(tǒng)計(jì)當(dāng)前時(shí)間窗內(nèi)每一構(gòu)件的服務(wù)時(shí)間、服務(wù)次數(shù)和服務(wù)懲罰時(shí)間;
在一次抗衰處理過程中,按照時(shí)間從先到后的順序?qū)Ω鲿r(shí)間窗逐一處理的。在周期性進(jìn)行抗衰處理時(shí),對(duì)本次抗衰處理的第一個(gè)時(shí)間窗來(lái)說(shuō),其上一時(shí)間窗為上次抗衰處理的最后一個(gè)時(shí)間窗。
對(duì)于每一個(gè)軟件操作而言,都會(huì)涉及到相應(yīng)的構(gòu)件實(shí)例,可參見圖3、圖4。 一個(gè)用戶操作可分解為多個(gè)構(gòu)件操作,統(tǒng)計(jì)基于每一構(gòu)件進(jìn)行。
根據(jù)日志中保存的每一次成功的構(gòu)件操作的操作開始時(shí)間TStart和操作結(jié)束時(shí)間TEnd,通過式(1)確定該次構(gòu)件操作的時(shí)間開銷并將其作為該次構(gòu)件操作的構(gòu)件服務(wù)時(shí)間
<formula>formula see original document page 14</formula>
某 一構(gòu)件在當(dāng)前時(shí)間窗內(nèi)進(jìn)行的所有成功的構(gòu)件操作的次數(shù),即為該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的構(gòu)件服務(wù)次數(shù),而所有成功的構(gòu)件操作的構(gòu)件服務(wù)時(shí)間之和,即為該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的構(gòu)件服務(wù)時(shí)間。
對(duì)于每一次失敗的構(gòu)件操作,將根據(jù)式(1 )確定的時(shí)間開銷作為該次構(gòu)件操作的構(gòu)件服務(wù)懲罰時(shí)間,該次構(gòu)件操作的構(gòu)件服務(wù)時(shí)間為0。操作者輸入?yún)?shù)的錯(cuò)誤所涉及的構(gòu)件操作不視為失敗的構(gòu)件操作。
上述構(gòu)件的服務(wù)時(shí)間、服務(wù)次數(shù)和服務(wù)懲罰時(shí)間,以及構(gòu)件的才喿作失敗次數(shù)均屬于構(gòu)件的運(yùn)行狀況參數(shù),根據(jù)所包含構(gòu)件的這些運(yùn)行狀況參數(shù),可以得到系統(tǒng)總體的運(yùn)行狀況參數(shù)。
步驟203:對(duì)當(dāng)前時(shí)間窗內(nèi)發(fā)生了操作失敗的每一構(gòu)件,更新該構(gòu)件從系統(tǒng)重啟以來(lái)的操作失敗次數(shù),如該構(gòu)件當(dāng)前還不在觀測(cè)列表中,將其放入,見測(cè)列表;
本實(shí)施例中,如某構(gòu)件的操作失敗次數(shù)大于等于設(shè)定的失敗次數(shù)閾值時(shí),就不再將該構(gòu)件從觀測(cè)列表中取出,該構(gòu)件被重啟前也可以不再繼續(xù)更新其操作失敗次數(shù)。失敗次數(shù)閾值為自然數(shù),可設(shè)定為1,2,3.....等。這里的操作失敗次數(shù)可以自系統(tǒng)重啟起來(lái)進(jìn)行累計(jì)得到,或在本次抗衰處理周期內(nèi)累計(jì)得到,等等。
步驟204:除去操作失敗次數(shù)大于等于設(shè)定的失敗次數(shù)閾值的構(gòu)件外,對(duì)當(dāng)前時(shí)間窗內(nèi)操作均成功的每一構(gòu)件,如該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的單次操作平均時(shí)延TCOSi的值及其變化符合設(shè)置的觀測(cè)條件或取消觀測(cè)條件,則將該構(gòu)件加入觀測(cè)列表或從觀測(cè)列表中刪除;
對(duì)于操作失敗次數(shù)大于等于設(shè)定的失敗次數(shù)閾值的構(gòu)件,可以不再計(jì)算其單次操作平均時(shí)延。
在當(dāng)前時(shí)間窗『,中,將各構(gòu)件的構(gòu)件服務(wù)時(shí)間ra除以其服務(wù)次數(shù)
"m^(S)得到各構(gòu)件的單次搡作平均時(shí)延TCOS,,如下式所示
TCOS,=:ra 〃/薦(s); (2)
將上一時(shí)間窗計(jì)算得到的構(gòu)件單次操作平均時(shí)延計(jì)為rcos;w。
如果某構(gòu)件的單次操作平均時(shí)延7uos;+/ 〉7ros;且大于設(shè)定的時(shí)延閾值,則將該構(gòu)件作為當(dāng)前需觀測(cè)的構(gòu)件,在該構(gòu)件還未放觀測(cè)列表時(shí),將該構(gòu)件放入觀測(cè)列表中并將觀測(cè)次數(shù)置為i,如該構(gòu)件已在觀測(cè)列表中,則將觀測(cè)次數(shù)加i。上述操作時(shí)延閾值可以根據(jù)自系統(tǒng)重啟以來(lái)的時(shí)間開銷的數(shù)學(xué)期望或者經(jīng)-瞼值來(lái)確定。對(duì)于不同的構(gòu)件,可以相同,也可以不同。同時(shí),根據(jù)該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的服務(wù)時(shí)間ra 、觀測(cè)次凄tr,及相應(yīng)的懲罰系凄t
& ,按照式(3 )得到該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的服務(wù)懲罰時(shí)間7Pi并加以記錄
其中,懲罰系數(shù)&根據(jù)觀測(cè)次數(shù)r,設(shè)置,隨著r,的增大而增大,譬如r產(chǎn)l,懲罰系數(shù)^'為2%; r嚴(yán)2, 懲罰系數(shù)尸,,為5%;......。
如果某構(gòu)件的TCOSi〈TCOSw且小于設(shè)定的時(shí)延閾值時(shí),如果該構(gòu)件已在觀測(cè)列表中,則將該構(gòu)件從觀測(cè)列表中移除,并將該構(gòu)件的觀測(cè)次數(shù)清零。在將構(gòu)件從觀測(cè)列表移除時(shí)清零觀測(cè)次數(shù),相當(dāng)于只統(tǒng)計(jì)連續(xù)進(jìn)入觀測(cè)列表的次數(shù)。在另 一實(shí)施例中,如果某構(gòu)件的TCOSj 〈TCOSw ,則將構(gòu)件從觀測(cè)列表中移除,但不將觀測(cè)次數(shù)清零,表示針對(duì)此次不進(jìn)行觀測(cè),此時(shí)相當(dāng)于對(duì)連續(xù)和不連續(xù)的觀測(cè)次數(shù)都進(jìn)行累計(jì)。
根據(jù)構(gòu)件的單次操作平均時(shí)延時(shí)間的變化將構(gòu)件放入觀測(cè)列表,并根據(jù)觀測(cè)次數(shù)計(jì)算相應(yīng)的服務(wù)懲罰時(shí)間,就將構(gòu)件操作時(shí)延的增大作為體現(xiàn)軟件衰退的因素加以考慮了。
應(yīng)說(shuō)明的是,上述步驟203和步驟204的處理的先后順序可以任意設(shè)定。步驟205:判斷當(dāng)前時(shí)間窗內(nèi)的系統(tǒng)總體服務(wù)狀況是否已符合重啟條件,如果是,轉(zhuǎn)入步驟206,否則,執(zhí)行步驟207;
本實(shí)施例中,在該步先計(jì)算當(dāng)前時(shí)間窗『,內(nèi)的系統(tǒng)總體服務(wù)時(shí)間ra。,w,等于該時(shí)間窗內(nèi)所有構(gòu)件的構(gòu)件服務(wù)時(shí)間之和,減去該時(shí)間窗內(nèi)所有構(gòu)件的服務(wù)懲罰時(shí)間之和,如公式(4)所示<formula>formula see original document page 16</formula>
其中,w為該時(shí)間窗^中構(gòu)件實(shí)例的總凄t。
相應(yīng)的重啟條件是該系統(tǒng)總體服務(wù)時(shí)間7X。,。,小于或小于等于設(shè)定的系統(tǒng)總體服務(wù)時(shí)間閾值TO^,敏,rSL。w可以根據(jù)系統(tǒng)重啟以來(lái)系統(tǒng)總體服務(wù)時(shí)間的數(shù)學(xué)期望或經(jīng)驗(yàn)值來(lái)確定。這種重啟條件的設(shè)定較適宜于負(fù)荷比較均勻的系統(tǒng)。
重啟條件的設(shè)定可以有很多方式,只要能夠反映出軟件系統(tǒng)的性能是否已趨于衰退即可。如,在另一實(shí)施例中,可以將重啟條件設(shè)置為該時(shí)間窗內(nèi)所有構(gòu)件的服務(wù)懲罰時(shí)間之和,與該時(shí)間窗內(nèi)所有構(gòu)件的構(gòu)件服務(wù)時(shí)間之和的比值已大于或大于等于設(shè)定的比例閾值。該比值的大小可以說(shuō)明軟件系統(tǒng)的性能已經(jīng)趨于衰退。另將上述"該時(shí)間窗內(nèi)所有構(gòu)件的服務(wù)懲罰時(shí)間之和"替換為"該時(shí)間窗內(nèi)所有構(gòu)件操作的時(shí)間開銷(即不管構(gòu)件操作成功與否,針對(duì)所有構(gòu)件計(jì)一個(gè)總的時(shí)間開銷)之和"也可以,實(shí)質(zhì)上是相同的,只需要相應(yīng)調(diào)整設(shè)定的閾值即可。又如,在一實(shí)施例中,簡(jiǎn)單地將軟件系統(tǒng)重啟時(shí)刻到當(dāng)前時(shí)刻的時(shí)間長(zhǎng)度大于設(shè)定的時(shí)間長(zhǎng)度作為重啟條件,也是可以的。這里不再——列舉。
步驟206,將處于觀測(cè)狀態(tài)的部分或全部構(gòu)件確定為功能衰退的構(gòu)件,轉(zhuǎn)入4寺重啟狀態(tài)并確定重啟時(shí)刻;
本實(shí)施例,具體^丸行以下處理
a)找出所有的因?yàn)椴僮魇《环湃胗^測(cè)列表的構(gòu)件,將這些構(gòu)件作為第一類需重啟構(gòu)件,從觀測(cè)列表轉(zhuǎn)移到重啟列表中,重啟時(shí)刻可以設(shè)置為下一時(shí)間窗的起始時(shí)刻7L劍。
b) 從因單次操作平均時(shí)延增大而被放入觀測(cè)列表中構(gòu)件中,選出累計(jì)的服務(wù)懲罰時(shí)間最大的一個(gè)或多個(gè)構(gòu)件,作為第二類需重啟構(gòu)件,放在重啟列表中??梢允菍?duì)自系統(tǒng)重啟以來(lái),或從本次抗衰處理周期起始時(shí)刻以來(lái),或最近一段時(shí)間以來(lái)(如最近一月,最近一周或最近若干個(gè)時(shí)間窗等)的服務(wù)懲罰時(shí)間進(jìn)行累計(jì)。
選出的構(gòu)件數(shù)可以是某個(gè)預(yù)設(shè)的數(shù)值;也可以設(shè)置一服務(wù)懲罰時(shí)間閾值,將服務(wù)懲罰時(shí)間大于該閾值的所有構(gòu)件選出,等等。這些構(gòu)件的重啟時(shí)刻可以根據(jù)懲罰系數(shù)設(shè)置為最近幾個(gè)時(shí)間窗的起始時(shí)刻,例如懲罰系數(shù)大于10%時(shí),將重啟時(shí)刻設(shè)為當(dāng)前時(shí)間窗后的第二個(gè)時(shí)間窗的起始時(shí)刻,懲罰系數(shù)為5%~10%時(shí),設(shè)為當(dāng)前時(shí)間窗后的第三個(gè)時(shí)間窗的起始時(shí)刻,懲罰系數(shù)小于5%時(shí),設(shè)為當(dāng)前時(shí)間窗后的第四個(gè)時(shí)間窗的起始時(shí)刻。
此處重啟時(shí)刻的設(shè)置并不局限于以上方式,如也可以不與懲罰系數(shù)的大小關(guān)聯(lián),都設(shè)成統(tǒng)一的時(shí)刻。
c) 可選的,根據(jù)軟件運(yùn)行過程的規(guī)律,總體服務(wù)時(shí)間越大的構(gòu)件進(jìn)入亞健壯態(tài)和衰退態(tài)的機(jī)率越大。針對(duì)于此,在當(dāng)前時(shí)間窗內(nèi)累計(jì)系統(tǒng)中每一個(gè)
構(gòu)件自上次系統(tǒng)重啟以來(lái)的總體服務(wù)時(shí)間^to/(r&), toto/(rw等于該構(gòu)件自上次系統(tǒng)重啟以來(lái)的構(gòu)件服務(wù)時(shí)間之和減去構(gòu)件服務(wù)懲罰時(shí)間之和的差。
可以采用先進(jìn)先出(FIFO)算法,將總體服務(wù)時(shí)間最大的N個(gè)構(gòu)件(N為設(shè)置值)作為備選重啟構(gòu)件,放入備選重啟列表中。對(duì)于備選重啟構(gòu)件,可以在第一類和第二類需重啟構(gòu)件的數(shù)目Ml較少時(shí),如小于某個(gè)設(shè)定的一次啟動(dòng)構(gòu)件數(shù)M0時(shí),將其中總體服務(wù)時(shí)間最大的M0-M1個(gè)構(gòu)件確定為需重啟構(gòu)件并設(shè)置重啟時(shí)刻。M1^M0時(shí),M=0。如此便體現(xiàn)了基于概率的分析方法,從軟件運(yùn)行規(guī)j律上兼顧了長(zhǎng)期運(yùn)行的構(gòu)件的失效概率。在其他實(shí)施例中,M的值也可以單獨(dú)確定,如預(yù)先設(shè)定,或?yàn)榭傮w服務(wù)時(shí)間大于設(shè)定的構(gòu)件總體服務(wù)時(shí)間閾值的構(gòu)件的個(gè)數(shù)等。
以上三類構(gòu)件的重啟時(shí)刻即可以是之后的某個(gè)時(shí)間窗的起始時(shí)刻,也可以不按時(shí)間窗的起始或結(jié)束時(shí)刻來(lái)設(shè)置,而是直接設(shè)置為之后的某個(gè)時(shí)刻如延遲某固定時(shí)間后啟動(dòng),或每天設(shè)置若干固定時(shí)刻作為重啟時(shí)刻,在其中最近的重啟時(shí)刻啟動(dòng)上述需重啟構(gòu)件。等等。
步驟207,判斷所有時(shí)間窗的操作日志數(shù)據(jù)是否均已處理過,如果是,結(jié)束本次抗衰處理,否則,將下一時(shí)間窗作為當(dāng)前時(shí)間窗,轉(zhuǎn)入步驟203。
在確定了要重啟的構(gòu)件及重啟時(shí)刻后,需要構(gòu)造重啟鏈,在重啟時(shí)刻到時(shí),按該重啟鏈依序?qū)?gòu)件執(zhí)行重啟。本實(shí)施例中,是以設(shè)定的時(shí)間粒度為基礎(chǔ),啟動(dòng)一個(gè)線程定期掃描重啟列表,找出下一個(gè)時(shí)間窗需要重啟的所有構(gòu)件,用這些構(gòu)件構(gòu)造出一個(gè)重啟鏈。為了區(qū)別于整個(gè)系統(tǒng)的重啟,文中也將對(duì)構(gòu)件的重啟稱為微重啟。類似綜合網(wǎng)管這樣一個(gè)大型的應(yīng)用系統(tǒng)必然包含著數(shù)以百計(jì)的應(yīng)用構(gòu)件,這些構(gòu)件之間存在著復(fù)雜的依賴關(guān)系,在對(duì)需重啟構(gòu)件進(jìn)行重啟之前,需要根據(jù)構(gòu)件之間的依賴關(guān)系,將需重啟構(gòu)件以及與需重啟構(gòu)件之間存在依賴關(guān)系的構(gòu)件構(gòu)造一個(gè)或多個(gè)重啟鏈,從重啟鏈的根構(gòu)件開始按序重啟該重啟鏈上的構(gòu)件,從而實(shí)現(xiàn)抗衰??梢詫?gòu)件之間按照依賴關(guān)系構(gòu)造出的有向圖作為重啟鏈,有向圖的構(gòu)造如可以參照發(fā)明名稱為"具有復(fù)雜依賴關(guān)系組件的部署系統(tǒng)"、申請(qǐng)?zhí)枮?00610138332.1的中國(guó)專利,但并不局限于此(如果重啟鏈中只有一個(gè)或部分構(gòu)件需要重啟,也需要將整個(gè)重啟鏈上的構(gòu)件都重啟)。
在某時(shí)間窗需要重啟的構(gòu)件數(shù)目較少時(shí),即小于某個(gè)設(shè)定的一次啟動(dòng)構(gòu)件數(shù)時(shí),可以從備選重啟列表中選取相應(yīng)構(gòu)件來(lái)構(gòu)造重啟鏈,這樣既不會(huì)對(duì)系統(tǒng)性能造成較大沖擊,也從軟件運(yùn)行規(guī)律上兼顧了長(zhǎng)期運(yùn)行的構(gòu)件的失效概率。
任何處于重啟鏈上的構(gòu)件在執(zhí)行重啟后,先前統(tǒng)計(jì)的這些構(gòu)件相關(guān)的構(gòu)件服務(wù)時(shí)間、構(gòu)件服務(wù)懲罰時(shí)間、構(gòu)件服務(wù)次數(shù)、操作失敗次數(shù)等參數(shù)都進(jìn)行歸零處理。沒有重啟的構(gòu)件的上述參數(shù)可以一直保留。
本實(shí)施例還用重啟日志對(duì)于重啟過程進(jìn)4亍詳細(xì)記錄。重啟日志包含重啟鏈的詳細(xì)信息(微重啟的根構(gòu)件、重啟鏈的長(zhǎng)度、重啟的總時(shí)間開銷、各構(gòu)件的重啟時(shí)間開銷)。結(jié)合上述抗衰處理時(shí)的分析方法,可以得出不同微重啟對(duì)系統(tǒng)總體服務(wù)時(shí)間的影響、微重啟的發(fā)生頻率等,以此構(gòu)建系統(tǒng)的重啟規(guī)則知識(shí)庫(kù)。例如,通過對(duì)執(zhí)行抗衰過程中記錄的重啟日志進(jìn)行分析,可以確定熱點(diǎn)構(gòu)件(對(duì)系統(tǒng)服務(wù)時(shí)間影響大,重啟頻繁的構(gòu)件),找出這些熱點(diǎn)構(gòu)件潛在的缺陷加以克服,可以延長(zhǎng)這些構(gòu)件的重啟周期,從而有效提升整個(gè)應(yīng)用系統(tǒng)運(yùn)行的穩(wěn)定性。
本實(shí)施例的系統(tǒng)如圖5所示,包括構(gòu)件應(yīng)用系統(tǒng)和軟件抗衰系統(tǒng),這里的構(gòu)件應(yīng)用系統(tǒng)以綜合網(wǎng)管系統(tǒng)為例,包括多個(gè)應(yīng)用構(gòu)件、構(gòu)件生命周期接口以及操作日志數(shù)據(jù)庫(kù)。
JMX ( Java Management Extensions,即Java管理擴(kuò)展)是J2EE體系架構(gòu)中為應(yīng)用程序、設(shè)備、系統(tǒng)等植入管理功能的框架。JMX是J2EE平臺(tái)上面的構(gòu)件管理技術(shù),利用JMX技術(shù),可以方便地將綜合網(wǎng)管的各個(gè)功能模塊包裝成可管理的、相對(duì)獨(dú)立的、相互之間有嚴(yán)格邊界的構(gòu)件,如圖所示。每一個(gè)構(gòu)件(在JMX中稱為MBean )都實(shí)現(xiàn)JMX規(guī)范的生命周期方法(創(chuàng)建、啟動(dòng)、停止、銷毀)。這里的構(gòu)件都是指服務(wù)端構(gòu)件,綜合網(wǎng)管系統(tǒng)采用C/S結(jié)構(gòu)、客戶端和服務(wù)端都采用了構(gòu)件技術(shù),抗衰技術(shù)一般應(yīng)用在服務(wù)器端。這些MBean之間存在的依賴關(guān)系是構(gòu)造重啟鏈的重要原因。
軟件抗衰系統(tǒng)包括數(shù)據(jù)庫(kù)服務(wù)模塊、操作日志分析模塊、重啟構(gòu)件存儲(chǔ)模塊以及重啟守護(hù)模塊,還可以包括重啟日志數(shù)據(jù)庫(kù)、重啟日志分析模塊和重啟MJ,j庫(kù);其中
數(shù)據(jù)庫(kù)服務(wù)模塊,用于獲取基于構(gòu)件的軟件系統(tǒng)在一段時(shí)間內(nèi)的操作日志,按設(shè)定的時(shí)間粒度將該段時(shí)間劃分形成時(shí)間窗序列,肌,/=7,2,...";
前已述及,在此基于構(gòu)件的軟件系統(tǒng)其操作日志,可通過以下兩種方式獲取 一是數(shù)據(jù)庫(kù)服務(wù)模塊通過綜合網(wǎng)管系統(tǒng)提供的日志接口定期將其操作日志遷移到軟件抗衰系統(tǒng)即可;二是數(shù)據(jù)庫(kù)服務(wù)模塊采用攔截器模式來(lái)獲取抗衰需要的操作日志。
操作日志分析模塊,用于以時(shí)間窗為單位,按時(shí)間從先到后的順序逐個(gè)時(shí)間窗地對(duì)所述操作日志的構(gòu)件操作結(jié)果及其時(shí)間開銷進(jìn)行分析,確定軟件系統(tǒng)及其包含的各構(gòu)件的運(yùn)行狀況參數(shù),在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值
符合重啟條件時(shí),將此時(shí)功能衰退的構(gòu)件確定為需重啟構(gòu)件,存入重啟構(gòu)件 存儲(chǔ)模塊;其中包括
通過第一分析單元(圖5中未示)對(duì)構(gòu)件自軟件系統(tǒng)重啟以來(lái)發(fā)生"t喿作 失敗的次數(shù)進(jìn)行累計(jì),將累計(jì)操作失敗次數(shù)大于或大于等于設(shè)定的失敗次數(shù) 閾值的構(gòu)件確定為功能衰退的構(gòu)件,存入重啟構(gòu)件存儲(chǔ)模塊的重啟列表中。
通過第二分析單元(圖5中未示)對(duì)操作均成功的每一構(gòu)件計(jì)算其各時(shí) 間窗內(nèi)的單次操作平均時(shí)延,如該構(gòu)件在當(dāng)前時(shí)間窗的單次操作平均時(shí)延大 于上一時(shí)間窗的單次操作平均時(shí)延且大于或大于等于設(shè)定的時(shí)延閾值,則將 該構(gòu)件作為當(dāng)前需,見測(cè)的構(gòu)件,并4尋該構(gòu)件)現(xiàn)測(cè)次#:加一;在專欠件系統(tǒng)的運(yùn) 行狀況參數(shù)的取值符合重啟條件時(shí),將當(dāng)前需觀測(cè)的構(gòu)件中累計(jì)服務(wù)懲罰時(shí) 間最大的一個(gè)或多個(gè)構(gòu)件,或累計(jì)服務(wù)懲罰時(shí)間大于設(shè)定的服務(wù)懲罰時(shí)間閾 值的一個(gè)或多個(gè)構(gòu)件,確定為所述功能衰退的構(gòu)件,存入重啟構(gòu)件存儲(chǔ);漠塊 的重啟列表中。
通過第三分析單元(圖5中未示)計(jì)算當(dāng)前時(shí)間窗內(nèi)系統(tǒng)的每一個(gè)構(gòu)件 的總體服務(wù)時(shí)間,在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí)將當(dāng) 前時(shí)間窗內(nèi)總體服務(wù)時(shí)間最大的M個(gè)構(gòu)件確定為功能衰退的構(gòu)件,存入重啟 構(gòu)件存儲(chǔ)模塊的重啟列表中,其中M的值是預(yù)先設(shè)定的(M=l,2,...,);或 者將M個(gè)總體服務(wù)時(shí)間大于設(shè)定的構(gòu)件總體服務(wù)時(shí)間閾值的構(gòu)件確定為功 能衰退的構(gòu)件(M=l,2,...),存入重啟構(gòu)件存儲(chǔ)模塊的重啟列表中;或者在 按其它方式確定的功能衰退的構(gòu)件數(shù)M1小于設(shè)定的一次重啟構(gòu)件數(shù)MO時(shí), 取M個(gè)總體服務(wù)時(shí)間最大的構(gòu)件作為備選功能衰退構(gòu)件,存入重啟構(gòu)件存儲(chǔ) 模塊的備選重啟列表中,其中M-M0-M1,在M1^VI0時(shí),M=0。
構(gòu)件的總體服務(wù)時(shí)間為自上次軟件系統(tǒng)重啟以來(lái),該構(gòu)件所有成功的構(gòu) 件操作的時(shí)間開銷之和減去該構(gòu)件所有服務(wù)懲罰時(shí)間之和得到的差。
通過重啟判決單元(圖5中未示)判斷軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值 是否符合重啟條件,即該系統(tǒng)總體服務(wù)時(shí)間7X。,。,小于或小于等于設(shè)定的系 統(tǒng)總體服務(wù)時(shí)間閾值r5Ww。w , T5W^。w可以根據(jù)系統(tǒng)重啟以來(lái)系統(tǒng)總體服務(wù)時(shí) 間的數(shù)學(xué)期望或經(jīng)驗(yàn)值來(lái)確定。這種重啟條件的設(shè)定較適宜于負(fù)荷比較均勻的系統(tǒng)?;蛘撸?dāng)前時(shí)間窗內(nèi)所有構(gòu)件的服務(wù)懲罰時(shí)間之和,與該時(shí)間窗內(nèi) 所有構(gòu)件的構(gòu)件服務(wù)時(shí)間之和的比值已大于或大于等于設(shè)定的比例閾值?;?者當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件操作的時(shí)間開銷之和,與該時(shí)間窗內(nèi)所有構(gòu)件的構(gòu) 件服務(wù)時(shí)間之和的比值已大于或大于等于設(shè)定的比例閾值。又如,簡(jiǎn)單地將 軟件系統(tǒng)重啟時(shí)刻到當(dāng)前時(shí)刻的時(shí)間長(zhǎng)度大于設(shè)定的時(shí)間長(zhǎng)度作為重啟條 件,也是可以的。
重啟構(gòu)件存儲(chǔ)模塊,用于操作日志分析模塊以重啟列表保存確定的重啟 構(gòu)件和/或以備選重啟列表保存確定的備選重啟構(gòu)件,包括第一分析單元、第 二分析單元確定的功能衰退的構(gòu)件以及第三分析單元確定的功能衰退的構(gòu)件 和/或備選功能衰退的構(gòu)件。
重啟守護(hù)模塊,用于根據(jù)構(gòu)件之間的依賴關(guān)系,將需重啟構(gòu)件以及與需 重啟構(gòu)件之間存在依賴關(guān)系的構(gòu)件構(gòu)造一個(gè)或多個(gè)重啟鏈,從重啟鏈的根構(gòu) 件開始按序重啟該重啟鏈上的構(gòu)件。
其中,備選重啟構(gòu)件是在在重啟時(shí)刻到時(shí)重啟鏈上的重啟構(gòu)件數(shù)小于設(shè) 定的一次重啟構(gòu)件數(shù)時(shí)被執(zhí)行重啟的。
重啟日志數(shù)據(jù)庫(kù),用于保存重啟守護(hù)模塊在其執(zhí)行抗衰過程中記錄的重
啟日志;
重啟日志分析模塊,用于對(duì)重啟日志數(shù)據(jù)庫(kù)中保存的重啟日志進(jìn)行分析, 確定熱點(diǎn)構(gòu)件(對(duì)系統(tǒng)服務(wù)時(shí)間影響大,重啟頻繁的構(gòu)件);并分析出不同 微重啟對(duì)系統(tǒng)總體服務(wù)時(shí)間的影響、微重啟的發(fā)生頻率等,以此構(gòu)建系統(tǒng)的 重啟^L則知識(shí)庫(kù),從而有利于庫(kù)欠件的進(jìn)一步抗衰。
像綜合網(wǎng)管這樣的大型應(yīng)用系統(tǒng), 一般都會(huì)有相應(yīng)的系統(tǒng)日志。系統(tǒng)日 志包含了豐富的操作信息,如操作發(fā)生的時(shí)間、操作結(jié)束的時(shí)間、操作類型、 操作的結(jié)果、操作的重要級(jí)別和操作涉及的管理對(duì)象實(shí)例等信息。如果系統(tǒng) 曰志存放在綜合網(wǎng)管系統(tǒng)的操作日志數(shù)據(jù)庫(kù)中,則抗衰系統(tǒng)的數(shù)據(jù)庫(kù)服務(wù)器 可以使用數(shù)據(jù)庫(kù)工具(例如Oracle的EXP、 Ora Loader; SQLServer的BCP ) 將這些數(shù)據(jù)定期遷移過來(lái),以免進(jìn)行抗衰分析對(duì)應(yīng)用系統(tǒng)造成性能沖擊。如果系統(tǒng)日志以文本形式存在,則可以編寫小工具定期將這些文本導(dǎo)入到抗衰 系統(tǒng)的數(shù)據(jù)庫(kù)服務(wù)器中。
如果系統(tǒng)自身的操作日志不能滿足抗衰分析的需要,綜合網(wǎng)管系統(tǒng)中的
操作日志數(shù)據(jù)庫(kù)則可以采取攔截器模式來(lái)生成相應(yīng)的操作日志。在JBOSS服 務(wù)器(應(yīng)用系統(tǒng)構(gòu)件所依附的設(shè)備,圖5中未示)中,可以在容器配置文件 standardjboss.xml中力口入相應(yīng)的攔截器名字。
本發(fā)明軟件抗衰方法和系統(tǒng)基于構(gòu)件的軟件架構(gòu),故能夠?qū)崿F(xiàn)微重啟。 在分析上既結(jié)合宏觀層面的信息(系統(tǒng)總體服務(wù)時(shí)間),又結(jié)合微觀層面的 信息(構(gòu)件的服務(wù)次數(shù)、操作結(jié)果、服務(wù)時(shí)間、服務(wù)懲罰時(shí)間等),故可避 免抗衰粒度較粗而導(dǎo)致對(duì)負(fù)載變化容忍性差的問題;并且,基于系統(tǒng)操:作曰 志,不僅考慮了當(dāng)前操作的情況,而且考慮歷史操作信息,故可避免因瞬時(shí) 異常數(shù)據(jù)而導(dǎo)致構(gòu)件重啟的誤操作,也避免了趨勢(shì)分析帶來(lái)的復(fù)雜計(jì)算量; 同時(shí),不必專門開發(fā)監(jiān)控Agent,避免了抗衰操作給系統(tǒng)帶來(lái)額外的負(fù)載沖 擊;由于能夠偵測(cè)到軟件未知的一些衰退因素,因而能夠?yàn)橄到y(tǒng)優(yōu)化提供充 足的依據(jù)。而且本發(fā)明在實(shí)現(xiàn)上具有普適性,執(zhí)行抗衰的過程具有很低的抗 衰成本,幫助大型應(yīng)用系統(tǒng)的運(yùn)營(yíng)者減少系統(tǒng)意外停機(jī)時(shí)間,提高系統(tǒng)服務(wù) 率,增加系統(tǒng)有效工作周期。
權(quán)利要求
1、一種軟件抗衰方法,包括獲取基于構(gòu)件的軟件系統(tǒng)的操作日志;以時(shí)間窗為單位,按時(shí)間從先到后的順序逐個(gè)時(shí)間窗地對(duì)所述操作日志的構(gòu)件操作結(jié)果及其時(shí)間開銷進(jìn)行分析,確定軟件系統(tǒng)及其包含的各構(gòu)件的運(yùn)行狀況參數(shù),在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將此時(shí)功能衰退的構(gòu)件確定為需重啟構(gòu)件;對(duì)所述需重啟構(gòu)件進(jìn)行重啟。
2、 如權(quán)利要求1所述的方法,其特征在于,所述功能衰退的構(gòu)件中至 少部分構(gòu)件是"l姿照以下方式確定的對(duì)所述操作日志的構(gòu)件操作結(jié)果及時(shí)間開銷進(jìn)行分析時(shí),對(duì)構(gòu)件自軟件 系統(tǒng)重啟以來(lái)發(fā)生操作失敗的次數(shù)進(jìn)行累計(jì),將累計(jì)操作失敗次數(shù)大于或大 于等于設(shè)定的失敗次數(shù)閾值的構(gòu)件作為功能衰退的構(gòu)件。
3、 如權(quán)利要求1所述的方法,其特征在于,所述功能衰退的構(gòu)件中至 少部分構(gòu)件是按照以下方式確定的對(duì)所述操作日志的構(gòu)件搡作結(jié)果及時(shí)間開銷進(jìn)行分析時(shí),對(duì)操作均成功 的每一構(gòu)件,如該構(gòu)件在當(dāng)前時(shí)間窗的單次操作平均時(shí)延大于上一時(shí)間窗的 單次操作平均時(shí)延,且大于或大于等于設(shè)定的時(shí)延閾值,將該構(gòu)件作為當(dāng)前 需觀測(cè)的構(gòu)件,并將該構(gòu)件,見測(cè)次數(shù)加一;在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將當(dāng)前需觀測(cè)的構(gòu) 件中累計(jì)服務(wù)懲罰時(shí)間最大的一個(gè)或多個(gè)構(gòu)件,或累計(jì)服務(wù)懲罰時(shí)間大于設(shè) 定的服務(wù)懲罰時(shí)間閾值的一個(gè)或多個(gè)構(gòu)件,作為所述功能衰退的構(gòu)件。
4、 如權(quán)利要求1所述的方法,其特征在于,所述功能衰退的構(gòu)件中至 少部分構(gòu)件是按照以下方式確定的對(duì)所述操作日志的構(gòu)件操作結(jié)果及時(shí)間開銷進(jìn)行分析時(shí),在當(dāng)前時(shí)間窗 內(nèi)計(jì)算系統(tǒng)中每一個(gè)構(gòu)件的總體服務(wù)時(shí)間,在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取 值符合重啟條件時(shí),將當(dāng)前總體服務(wù)時(shí)間最大的M個(gè)構(gòu)件作為所述功能衰退 的構(gòu)件,其中M的值是預(yù)先設(shè)定的,M=l,2,...;或者M(jìn)等于總體服務(wù)時(shí)間大于設(shè)定的構(gòu)件總體服務(wù)時(shí)間閾值的構(gòu)件的個(gè)數(shù),M=l,2,...;或者在按其它方式確定的功能衰退的構(gòu)件數(shù)Ml小于設(shè)定的一次啟動(dòng)構(gòu)件數(shù)MO時(shí),取M=M0-M1,在MiaVIO時(shí),則M=0;所述構(gòu)件的總體服務(wù)時(shí)間為自上次軟件系統(tǒng)重啟以來(lái),該構(gòu)件所有成功操作的時(shí)間開銷之和減去該構(gòu)件所有服務(wù)懲罰時(shí)間之和得到的差。
5、 如權(quán)利要求l所述的方法,其特征在于所述重啟條件為當(dāng)前時(shí)間窗的系統(tǒng)總體服務(wù)時(shí)間小于或小于等于設(shè)定的系統(tǒng)總體服務(wù)時(shí)間閾值,所述系統(tǒng)總體服務(wù)時(shí)間等于當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件成功操作的時(shí)間開銷之和減去所有構(gòu)件的服務(wù)懲罰時(shí)間之和;或者所述重啟條件為當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件的服務(wù)懲罰時(shí)間之和,與當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件成功操作的時(shí)間開銷之和的比值或與當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件操作的時(shí)間開銷之和的比值,大于或大于等于設(shè)定的比例閾值。
6、 如權(quán)利要求3或4或5所述的方法,其特征在于,構(gòu)件的服務(wù)懲罰時(shí)間按以下方式確定在當(dāng)前時(shí)間窗內(nèi)存在操作失敗的構(gòu)件,該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的服務(wù)懲罰時(shí)間等于該構(gòu)件每次失敗的構(gòu)件搡作的時(shí)間開銷之和;在當(dāng)前時(shí)間窗內(nèi)操作均成功的構(gòu)件,如該構(gòu)件在當(dāng)前時(shí)間窗的單次操作平均時(shí)延大于上一時(shí)間窗的單次操作平均時(shí)延,且大于或大于等于設(shè)定的時(shí)延閾值,將該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)所有成功的構(gòu)件操作的時(shí)間開銷之和與一懲罰系數(shù)的積,作為該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的服務(wù)懲罰時(shí)間,所述懲罰系數(shù)的取值根據(jù)該構(gòu)件的累計(jì)觀測(cè)次數(shù)或連續(xù)觀測(cè)次數(shù)查找對(duì)應(yīng)的配置數(shù)據(jù)得到,且隨著觀測(cè)次H增大而增大。
7、 如權(quán)利要求1至5中任一權(quán)利要求所述的方法,其特征在于將此時(shí)功能衰退的構(gòu)件確定為需重啟構(gòu)件時(shí),還根據(jù)設(shè)定的規(guī)則確定每一個(gè)需重啟構(gòu)件的重啟時(shí)刻;對(duì)所述需重啟構(gòu)件進(jìn)行重啟之前,需要根據(jù)構(gòu)件之間的依賴關(guān)系,將所述需重啟構(gòu)件以及與所述需重啟構(gòu)件之間存在依賴關(guān)系的構(gòu)件構(gòu)造一個(gè)或多個(gè)重啟鏈,從所述重啟鏈的根構(gòu)件開始按序重啟該重啟鏈上的構(gòu)件。
8、 一種軟件抗衰系統(tǒng),包括依次連接的數(shù)據(jù)庫(kù)服務(wù)模塊、操作日志分析模塊以及重啟守護(hù)模塊,其中所述數(shù)據(jù)庫(kù)服務(wù)模塊,用于獲取基于構(gòu)件的軟件系統(tǒng)的操作日志;所述操作日志分析模塊,用于以時(shí)間窗為單位,按時(shí)間從先到后的順序逐個(gè)時(shí)間窗地對(duì)所述操作日志的構(gòu)件操作結(jié)果及其時(shí)間開銷進(jìn)行分析,確定軟件系統(tǒng)及其包含的各構(gòu)件的運(yùn)行狀況參數(shù),在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將此時(shí)功能衰退的構(gòu)件確定為需重啟構(gòu)件并保存;所述重啟守護(hù)模塊,用于對(duì)所述需重啟構(gòu)件進(jìn)行重啟。
9、 按照權(quán)利要求8所述的系統(tǒng),其特征在于,所述梯:作日志分析4莫塊進(jìn)一步包括第一分析單元,用于對(duì)構(gòu)件自軟件系統(tǒng)重啟以來(lái)發(fā)生操作失敗的次數(shù)進(jìn)行累計(jì),將累計(jì)操作失敗次數(shù)大于或大于等于設(shè)定的失敗次數(shù)閾值的構(gòu)件作為為需重啟構(gòu)件保存。
10、 按照權(quán)利要求8所述的系統(tǒng),其特征在于,所述操作日志分析模塊進(jìn)一步包括第二分析單元,用于對(duì)操作均成功的每一構(gòu)件計(jì)算各時(shí)間窗的單次操作平均時(shí)延,如該構(gòu)件在當(dāng)前時(shí)間窗的單次操作平均時(shí)延大于其上一時(shí)間窗的單次操作平均時(shí)延,且大于或大于等于設(shè)定的時(shí)延閾值,將該構(gòu)件作為當(dāng)前需觀測(cè)的構(gòu)件,并將該構(gòu)件觀測(cè)次數(shù)加一;在確定軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將當(dāng)前需觀測(cè)的構(gòu)件中累計(jì)服務(wù)懲罰時(shí)間最大的一個(gè)或多個(gè)構(gòu)件,或累計(jì)服務(wù)懲罰時(shí)間大于設(shè)定的服務(wù)懲罰時(shí)間閾值的一個(gè)或多個(gè)構(gòu)件,作為所述需重啟構(gòu)件保存。
11、 按照權(quán)利要求8所述的系統(tǒng),其特征在于,所述操作日志分析模塊進(jìn)一步包括第三分析單元,用于在當(dāng)前時(shí)間窗內(nèi)計(jì)算系統(tǒng)中每一個(gè)構(gòu)件的總體服務(wù)時(shí)間,在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將當(dāng)前總體服務(wù)時(shí)間最大的M個(gè)構(gòu)件作為所述重啟構(gòu)件保存,其中M的值是預(yù)先設(shè)定的,M=l,2,...;或者M(jìn)等于總體服務(wù)時(shí)間大于設(shè)定的構(gòu)件總體服務(wù)時(shí)間閾值的構(gòu)件的個(gè)數(shù),M=l,2,...;或者在按其它方式確定的功能衰退的構(gòu)件數(shù)Ml小于設(shè)定的一次啟動(dòng)構(gòu)件數(shù)M0時(shí),取MHVI0-M1,在Ml^MO時(shí),則M=0;其中構(gòu)件的總體服務(wù)時(shí)間為自上次軟件系統(tǒng)重啟以來(lái),該構(gòu)件所有成功操作的時(shí)間開銷之和減去該構(gòu)件所有服務(wù)懲罰時(shí)間之和得到的差。
12、 按照權(quán)利要求8所述的系統(tǒng),其特征在于,所述操作日志分析模塊進(jìn)一步包括重啟判決單元,用于判斷所述軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值是否符合重啟條件,即當(dāng)前時(shí)間窗的系統(tǒng)總體服務(wù)時(shí)間小于或小于等于設(shè)定的系統(tǒng)總體服務(wù)時(shí)間閾值,系統(tǒng)總體服務(wù)時(shí)間等于當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件成功操作的時(shí)間開銷之和減去所有構(gòu)件的服務(wù)懲罰時(shí)間之和;或者,當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件的服務(wù)懲罰時(shí)間之和,與當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件成功操作的時(shí)間開銷之和的比值或與當(dāng)前時(shí)間窗內(nèi)所有構(gòu)件操作的時(shí)間開銷之和的比值,大于或大于等于設(shè)定的比例閾值。
13、 按照權(quán)利要求10或11或12所述的系統(tǒng),其特征在于,所述構(gòu)件的服務(wù)懲罰時(shí)間的確定按以下方式進(jìn)行在當(dāng)前時(shí)間窗內(nèi)存在操作失敗的構(gòu)件,該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的服務(wù)懲罰時(shí)間等于該構(gòu)件每次失敗的構(gòu)件操作的時(shí)間開銷之和;在當(dāng)前時(shí)間窗內(nèi)操作均成功的構(gòu)件,如該構(gòu)件在當(dāng)前時(shí)間窗的單次操作平均時(shí)延大于上一時(shí)間窗的單次操作平均時(shí)延,且大于或大于等于設(shè)定的時(shí)延閾值,將該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)所有成功的構(gòu)件操作的時(shí)間開銷之和與一懲罰系數(shù)的積,作為該構(gòu)件在當(dāng)前時(shí)間窗內(nèi)的服務(wù)懲罰時(shí)間,所述懲罰系數(shù)的取值根據(jù)該構(gòu)件的累計(jì)觀測(cè)次數(shù)或連續(xù)觀測(cè)次數(shù)查找對(duì)應(yīng)的配置數(shù)據(jù)得到,且隨著觀測(cè)次數(shù)增大而增大。
14、 如權(quán)利要求8至12中任一權(quán)利要求所述的系統(tǒng),其特征在于,所述操作日志分析模塊將功能衰退的構(gòu)件確定為需重啟構(gòu)件時(shí),還根據(jù)設(shè)定的規(guī)則確定每一 個(gè)需重啟構(gòu)件的重啟時(shí)刻;所述重啟守護(hù)模塊,在對(duì)所述需重啟構(gòu)件進(jìn)行重啟前,根據(jù)構(gòu)件之間的依賴關(guān)系,將所述需重啟構(gòu)件以及與所述需重啟構(gòu)件之間存在依賴關(guān)系的構(gòu)件構(gòu)造一個(gè)或多個(gè)重啟鏈,從所述重啟鏈的根構(gòu)件開始按序重啟該重啟鏈上的構(gòu)件。
全文摘要
本發(fā)明披露了一種軟件抗衰方法及其系統(tǒng),該方法包括獲取基于構(gòu)件的軟件系統(tǒng)的操作日志;以時(shí)間窗為單位,按時(shí)間從先到后的順序逐個(gè)時(shí)間窗地對(duì)操作日志的構(gòu)件操作結(jié)果及其時(shí)間開銷進(jìn)行分析,確定軟件系統(tǒng)及其包含的各構(gòu)件的運(yùn)行狀況參數(shù),在軟件系統(tǒng)的運(yùn)行狀況參數(shù)的取值符合重啟條件時(shí),將此時(shí)功能衰退的構(gòu)件確定為需重啟構(gòu)件;對(duì)需重啟構(gòu)件進(jìn)行重啟。本發(fā)明由于基于構(gòu)件的軟件架構(gòu),故能夠?qū)崿F(xiàn)微重啟;在分析上既結(jié)合宏觀層面的信息,又結(jié)合微觀層面的信息,故可避免對(duì)負(fù)載變化容忍性差的問題;既考慮了當(dāng)前操作的情況也考慮歷史操作信息,故可避免誤操作。
文檔編號(hào)G06F11/14GK101630280SQ200910162608
公開日2010年1月20日 申請(qǐng)日期2009年8月13日 優(yōu)先權(quán)日2009年8月13日
發(fā)明者張國(guó)彩, 進(jìn) 李, 熊紀(jì)濤, 珂 田 申請(qǐng)人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1