專利名稱:實(shí)時(shí)監(jiān)測(cè)流數(shù)據(jù)突變的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種流數(shù)據(jù)管理中的技術(shù),更確切地說(shuō)是涉及一種實(shí)時(shí)監(jiān)測(cè)流數(shù)據(jù)突變(Burst)的方法,主要適用于對(duì)網(wǎng)絡(luò)數(shù)據(jù)流量的監(jiān)測(cè)以及網(wǎng)站訪問(wèn)量的監(jiān)測(cè),以及時(shí)發(fā)現(xiàn)并解決網(wǎng)絡(luò)擁塞和網(wǎng)絡(luò)攻擊等網(wǎng)絡(luò)中存在的故障以及安全等問(wèn)題。
背景技術(shù):
區(qū)別于傳統(tǒng)數(shù)據(jù)應(yīng)用模型,流數(shù)據(jù)(Data Stream)模型具有以下四點(diǎn)共性(1)數(shù)據(jù)實(shí)時(shí)到達(dá);(2)數(shù)據(jù)到達(dá)次序獨(dú)立,不受應(yīng)用系統(tǒng)所控制;(3)數(shù)據(jù)規(guī)模宏大且不能預(yù)知其最大值,例如一個(gè)公司一百年以來(lái)的股票交易信息以及流過(guò)主干網(wǎng)路由器上的數(shù)據(jù)等等;(4)數(shù)據(jù)一經(jīng)處理,除非特意保存,否則不能夠被再次取出處理,或者再次提取數(shù)據(jù)代價(jià)昂貴。監(jiān)測(cè)數(shù)據(jù)的突變主要是指在數(shù)據(jù)監(jiān)測(cè)的過(guò)程中捕捉一段時(shí)間內(nèi)數(shù)據(jù)異常變化的行為,并進(jìn)行報(bào)警,再由相應(yīng)的人員或軟件根據(jù)該異常信息進(jìn)行對(duì)系統(tǒng)的維護(hù)或其他的處理。監(jiān)測(cè)數(shù)據(jù)突變的技術(shù)幾乎是所有數(shù)據(jù)采集、數(shù)據(jù)分析以及數(shù)據(jù)管理軟件系統(tǒng)中的重要組成部分,其應(yīng)用相當(dāng)廣泛。監(jiān)測(cè)數(shù)據(jù)突變的方法決定了軟件系統(tǒng)發(fā)現(xiàn)問(wèn)題,解決問(wèn)題的能力。在先技術(shù)中存在一種先進(jìn)的監(jiān)測(cè)數(shù)據(jù)突變的實(shí)現(xiàn)方案申請(qǐng)?zhí)枮?2107602.8,名為“用于突發(fā)容許過(guò)度誤碼率報(bào)警檢測(cè)和清除的方法和設(shè)備”的發(fā)明專利。然而,該發(fā)明在監(jiān)測(cè)突變方面存在以下不足1、只能使用絕對(duì)門(mén)限值靜態(tài)地監(jiān)測(cè)數(shù)據(jù)突變,無(wú)法動(dòng)態(tài)地監(jiān)測(cè)突變,因此,其發(fā)現(xiàn)的突變種類(lèi)單一。
2、只能發(fā)現(xiàn)一個(gè)已定義長(zhǎng)度時(shí)間窗口內(nèi)的突變,因此,其無(wú)法及時(shí)或完全地發(fā)現(xiàn)當(dāng)前數(shù)據(jù)的所有突變。
3、所能處理的數(shù)據(jù)量有限,即最大的時(shí)間窗口長(zhǎng)度有限,無(wú)法處理流數(shù)據(jù)。
4、只能發(fā)現(xiàn)監(jiān)測(cè)對(duì)象計(jì)數(shù)(Count)上的突變,而不能發(fā)現(xiàn)監(jiān)測(cè)對(duì)象其它性質(zhì)上的突變,例如平均值(Mean)的突變。
5、其突變監(jiān)測(cè)方法中未提供任何抵御顛簸的方法,因而,所發(fā)現(xiàn)的突變并不能保證它們完全正確。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種能夠動(dòng)態(tài)地監(jiān)測(cè)任意長(zhǎng)度窗口的流數(shù)據(jù)突變的方法,并且該方法能夠排除數(shù)據(jù)顛簸帶來(lái)的干擾,以保證軟件系統(tǒng)的執(zhí)行效率、兼容性和可靠性。
本發(fā)明的技術(shù)解決方案首先,本發(fā)明對(duì)現(xiàn)有監(jiān)測(cè)方法關(guān)于數(shù)據(jù)突變的定義進(jìn)行了擴(kuò)充,提出了動(dòng)態(tài)地監(jiān)測(cè)突變的定義。設(shè)要監(jiān)測(cè)的采樣數(shù)據(jù)流為序列x1,..,xn,其中任意一個(gè)值xi是第i時(shí)刻的采樣值,i為時(shí)間戳,時(shí)間戳越大表明該采樣值越新,x1為最早的采樣值,xn為最新的采樣值,n的大小不受限制,也就是該序列的長(zhǎng)度不受限制,設(shè)相對(duì)監(jiān)測(cè)門(mén)限為RTH,當(dāng)RTH大于1時(shí),即當(dāng)前序列的聚集計(jì)算結(jié)果比前一個(gè)相鄰的相同長(zhǎng)度序列的聚集計(jì)算結(jié)果顯著增大時(shí),為正向突變。當(dāng)RTH小于1時(shí),即當(dāng)前序列的聚集計(jì)算結(jié)果比前一個(gè)相鄰的相同長(zhǎng)度序列的聚集計(jì)算結(jié)果顯著減小時(shí),為反向突變。設(shè)要監(jiān)測(cè)的序列的最大長(zhǎng)度為j(1≤j≤n/2),并且進(jìn)行的聚集計(jì)算是Sum。那么定義當(dāng)Σk=n-j+1k=nxkΣk=n-2j+1k=n-jxk≥RTH(RTH>1)]]>時(shí),當(dāng)前監(jiān)測(cè)的長(zhǎng)度為j的序列發(fā)生正向突變,當(dāng)Σk=n-j+1k=nxkΣk=n-2j+1k=n-jxk≤RTH(0<RTH<1)]]>時(shí),當(dāng)前監(jiān)測(cè)的長(zhǎng)度為j的序列發(fā)生反向突變。
動(dòng)態(tài)監(jiān)測(cè)突變與靜態(tài)監(jiān)測(cè)突變最大的區(qū)別是1.用相對(duì)監(jiān)測(cè)門(mén)限(RTH)代替一經(jīng)設(shè)置后固定不變的絕對(duì)監(jiān)測(cè)門(mén)限;2.可同時(shí)監(jiān)測(cè)數(shù)目不受限制的若干個(gè)不同長(zhǎng)度的序列;3.能夠分別或同時(shí)監(jiān)測(cè)正向和反向突變。
其次,本發(fā)明引入了直方圖(Histogram)技術(shù),并且提供了一種新的直方圖算法——倒置桶序列的直方圖算法(BOIH),它能夠利用很小的空間精確地壓縮采樣數(shù)據(jù)流x1,..,xn。用這種近似算法估計(jì)流數(shù)據(jù)的聚集,計(jì)算結(jié)果的精確度可以高達(dá)99.99%以上。該算法用到的基本數(shù)據(jù)結(jié)構(gòu)叫做桶(Bucket)。算法構(gòu)建的直方圖就是一個(gè)桶的序列。每一個(gè)桶(bi)都是一個(gè)長(zhǎng)度為20字節(jié)的結(jié)構(gòu)體變量,用于存放采集到的單位時(shí)間內(nèi)某個(gè)IP地址上的數(shù)據(jù)流量或單位時(shí)間內(nèi)某個(gè)網(wǎng)站接收到的訪問(wèn)量,每一個(gè)桶中所保存的采樣值的個(gè)數(shù)不受限制。其中,第1到第4個(gè)字節(jié)保存的是該桶中最小的采樣值(bia)。第5到第8個(gè)字節(jié)保存的是該桶中兩個(gè)相鄰采樣值之間差的最小值(MinD)。第9到第12個(gè)字節(jié)保存的是桶的寬度(Wid),也就是保存在該桶中的采樣值的個(gè)數(shù)。第13到第16個(gè)字節(jié)保存的是該桶中兩個(gè)相鄰采樣值之間差的最大值(MaxD)。第17到第20個(gè)字節(jié)保存的是該桶中最大的采樣值(bib)。每新來(lái)一個(gè)采樣值xn就運(yùn)行一次該算法。設(shè)進(jìn)行的聚集計(jì)算是Sum,具體算法如下
(1)當(dāng)?shù)玫揭粋€(gè)新的采樣值xn,將當(dāng)前桶的總數(shù)B加1,并將B的值賦給j;(2)新建一個(gè)桶,并將新來(lái)的采樣值xn放入其中;(3)從i=B-1到i=1降序地,做如下操作(a)對(duì)桶bi將bia和bib分別增加xn;(b)判斷bib是否大于(1+δ)bja。如果bib大于(1+δ)bja,那么j--,然后跳至第3步執(zhí)行;否則,將bib的值賦給bjb,再將bi的Wid添加到bj的Wid上,假如bi的MaxD大于bj的MaxD,就用bi的MaxD替換bj的MaxD,假如bi的MinD小于bj的MinD,就用bi的MinD替換bj的MinD,最后刪除bi,并將當(dāng)前桶的總數(shù)B減1,然后跳至第3步執(zhí)行。
按照以上算法構(gòu)建的直方圖中的每一個(gè)桶都具有相同的相對(duì)誤差上限,即δ。因?yàn)檎`差的存在,所以不能保證返回值就是真實(shí)值,但可以保證所返回的值是比真實(shí)值稍大或稍小的值,它們與真實(shí)值之間的誤差受到δ的影響。該數(shù)據(jù)結(jié)構(gòu)提供兩個(gè)對(duì)外接口,一個(gè)是BOIH.getLargerValue(windowSize),該函數(shù)能夠返回一個(gè)比長(zhǎng)度為windowSize的序列的聚集計(jì)算結(jié)果稍大的值。另一個(gè)是BOIH.getSmallerValue(windowSize),該函數(shù)返回一個(gè)比長(zhǎng)度為windowSize的序列的聚集計(jì)算結(jié)果稍小的值。
再次,本發(fā)明分別提供了錯(cuò)誤陽(yáng)性(False Positive)和錯(cuò)誤陰性(False Negative)流數(shù)據(jù)監(jiān)測(cè)算法,分別保證100%的突變查全率(Recall)和100%的突變查準(zhǔn)率(Precision),它們能夠滿足不同應(yīng)用的需求。即按前述步驟完成把xn添加到直方圖后,采用錯(cuò)誤陽(yáng)性和錯(cuò)誤陰性的流數(shù)據(jù)監(jiān)測(cè)算法檢測(cè)突變情況。
先介紹False Positive算法,具體算法如下(1)將突變計(jì)數(shù)器burstNum置為0,并將要檢測(cè)的窗口的長(zhǎng)度windowSize置為1;(2)從windowSize=1到windowSize=n2]]>升序地,對(duì)長(zhǎng)度為windowSize的窗口進(jìn)行如下操作(a)假如要監(jiān)測(cè)正向突變,則將BOIH.getLargerValue(windowSize)的返回值賦給臨時(shí)變量temp1,將BOIH.getSmallerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2;如果有temp2≥(1+RTH)(temp2-temp1),RTH>1,那么長(zhǎng)度為windowSize的序列發(fā)生正向突變,將burstNum加1,否則,如果burstNum為0則跳至第2步執(zhí)行;(b)假如要監(jiān)測(cè)反向突變,則將BOIH.getSmallerValue(windowSize)的返回值賦給臨時(shí)變量temp1,將BOIH.getLargerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2;如果有temp2≤(1+RTH)(temp2-temp1),0<RTH<1,那么長(zhǎng)度為windowSize的序列發(fā)生反向突變,將burstNum減1,否則跳至第2步執(zhí)行;(3)將突變計(jì)數(shù)器burstNum的值返回。
只需對(duì)False Positive算法稍加修改就能夠得到False Negative算法,具體做法是將FalsePositive算法第2步a)中對(duì)temp1的賦值改為BOIH.getSmallerValue(windowSize),對(duì)temp2賦值改為BOIH.getLargerValue(2*windowSize)。再將b)中對(duì)temp1的賦值改為BOIH.getLargerValue(windowSize),對(duì)temp2賦值改為BOIH.getSmallerValue(2*windowSize)即可。其算法如下(1)將突變計(jì)數(shù)器burstNum置為0,并將要檢測(cè)的窗口的長(zhǎng)度windowSize置為1;(2)從windowSize=1到windowSize=n2]]>升序地,對(duì)長(zhǎng)度為windowSize的窗口進(jìn)行如下操作(a)假如要監(jiān)測(cè)正向突變,則將BOIH.getSmallerValue(windowSize)的返回值賦給臨時(shí)變量temp1,將BOIH.getLargerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2;如果有temp2≥(1+RTH)(temp2-temp1),RTH>1,那么長(zhǎng)度為windowSize的序列發(fā)生正向突變,將burstNum加1,否則,如果burstNum為0則跳至第2步執(zhí)行;(b)假如要監(jiān)測(cè)反向突變,則將BOIH.getLargerValue(windowSize)的返回值賦給臨時(shí)變量temp1,將BOIH.getSmallerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2;如果有temp2≤(1+RTH)(temp2-temp1),0<RTH<1,那么長(zhǎng)度為windowSize的序列發(fā)生反向突變,將burstNum減1,否則跳至第2步執(zhí)行;(3)將突變計(jì)數(shù)器burstNum的值返回。
現(xiàn)有方法在較大窗口上檢測(cè)到的突變往往在較小的窗口上并不是突變,這是由多個(gè)連續(xù)的顛簸所導(dǎo)致的,顛簸是相對(duì)正常數(shù)據(jù)較為突出,但又沒(méi)有達(dá)到突變程度的數(shù)據(jù)。本發(fā)明考慮到了數(shù)據(jù)顛簸給突變監(jiān)測(cè)帶來(lái)的影響,提供了排除顛簸干擾的機(jī)制,并分別將其集成到上面兩個(gè)流數(shù)據(jù)監(jiān)測(cè)算法中,具體做法如False Positive算法第2步a)和b)中,在從小到大順序檢測(cè)不同長(zhǎng)度的序列時(shí),如果遇到一個(gè)長(zhǎng)度為windowSize的序列沒(méi)有發(fā)生突變,那么將不再繼續(xù)檢測(cè)長(zhǎng)度為windowSize+1及更長(zhǎng)的序列。
在我們的方法架構(gòu)中,數(shù)據(jù)結(jié)構(gòu)的維護(hù)以及算法的執(zhí)行不需要考慮終端用戶的行為,因此系統(tǒng)可以最大限度地進(jìn)行執(zhí)行效率的優(yōu)化;我們的方法架構(gòu)對(duì)數(shù)據(jù)的特性沒(méi)有任何要求,能夠處理任何分布的數(shù)據(jù),因此提高了軟件系統(tǒng)的兼容性;壓縮的數(shù)據(jù)結(jié)構(gòu)所占的空間與數(shù)據(jù)量的大小是次線性的關(guān)系,因此當(dāng)面臨龐大的數(shù)據(jù)時(shí),數(shù)據(jù)結(jié)構(gòu)的空間開(kāi)銷(xiāo)依然很小,這為軟件系統(tǒng)的可靠性提供了保障。
本發(fā)明的優(yōu)點(diǎn)和技術(shù)上的進(jìn)步1、能夠自適應(yīng)地監(jiān)測(cè)數(shù)據(jù)突變。
2、能夠同時(shí)監(jiān)測(cè)任意多個(gè)不同時(shí)間長(zhǎng)度窗口內(nèi)的突變。
3、能夠處理流數(shù)據(jù)這樣龐大的數(shù)據(jù)量,其最大時(shí)間窗口長(zhǎng)度沒(méi)有限制。
4、能夠監(jiān)測(cè)對(duì)象的聚集(Aggregation)計(jì)算結(jié)果上的突變,因此,可以發(fā)現(xiàn)對(duì)象的突變種類(lèi),包括計(jì)數(shù)(Count)、平均值(Mean)、求和(Sum)、中值(Median)、最大值(Max)、最小值(Min)等。
5、能夠在監(jiān)測(cè)突變的同時(shí),排除數(shù)據(jù)顛簸對(duì)監(jiān)測(cè)結(jié)果的影響。
6、為軟件系統(tǒng)的執(zhí)行效率、兼容性和可靠性提供了保障。
圖1現(xiàn)有直方圖算法構(gòu)建的桶序列示意圖。
圖2本發(fā)明提供的直方圖算法構(gòu)建的桶序列示意圖。
圖3本發(fā)明提供的桶的結(jié)構(gòu)組成示意圖。
圖4本發(fā)明提供的直方圖算法流程圖。
圖5本發(fā)明提供的突變檢測(cè)算法流程圖。
圖6本發(fā)明提供的實(shí)時(shí)監(jiān)測(cè)流數(shù)據(jù)突變方法的模型結(jié)構(gòu)示意圖。
圖7數(shù)據(jù)顛簸示意圖。
圖8本發(fā)明提供的實(shí)時(shí)監(jiān)測(cè)流數(shù)據(jù)突變方法的性能測(cè)試圖。
具體實(shí)施例方式
本發(fā)明的方法采用以下的用戶可配置參數(shù)變量相對(duì)監(jiān)測(cè)門(mén)限(RTH),每一個(gè)桶的最大相對(duì)誤差上限(δ)。當(dāng)RTH大于1時(shí),監(jiān)測(cè)具有上升趨勢(shì)的正向突變,當(dāng)RTH小于1時(shí),監(jiān)測(cè)具有下降趨勢(shì)的反向突變,也可設(shè)置兩個(gè)RTH以同時(shí)監(jiān)測(cè)這兩種突變??杀O(jiān)測(cè)的采樣序列長(zhǎng)度變化連續(xù),其數(shù)量的上限不受限制,即監(jiān)測(cè)時(shí)基不受限制??梢酝瑫r(shí)監(jiān)測(cè)從最小采樣時(shí)間到信號(hào)總的持續(xù)時(shí)間范圍內(nèi)所有長(zhǎng)度的時(shí)間窗,每個(gè)時(shí)間窗長(zhǎng)度的遞增為最小采樣時(shí)間。
參見(jiàn)圖1圖中所示為現(xiàn)有直方圖算法構(gòu)建出的桶序列,沿時(shí)間軸10的方向?yàn)榻咏?dāng)前時(shí)間的方向,可見(jiàn)沿此方向桶的寬度越來(lái)越大,最早構(gòu)建的桶編號(hào)為桶1,最新構(gòu)建的桶編號(hào)為桶n,桶I是從桶1到桶n中任意一個(gè)桶的編號(hào)。
參見(jiàn)圖2圖中所示為本發(fā)明的直方圖算法(BOIH)構(gòu)建出的桶序列,沿時(shí)間軸20的方向?yàn)榻咏?dāng)前時(shí)間的方向,可見(jiàn)沿此方向桶的寬度越來(lái)越小,最早構(gòu)建的桶編號(hào)為桶1,最新構(gòu)建的桶編號(hào)為桶n,桶I是從桶1到桶n中任意一個(gè)桶的編號(hào)。
參見(jiàn)圖3圖中所示為本發(fā)明的直方圖算法(BOIH)中桶的結(jié)構(gòu)組成,其中,第1到第4個(gè)字節(jié)保存的是該桶中最小的采樣值(bia)。第5到第8個(gè)字節(jié)保存的是該桶中兩個(gè)相鄰采樣值之間差的最小值(MinD)。第9到第12個(gè)字節(jié)保存的是桶的寬度(Wid),也就是保存在該桶中的采樣值的個(gè)數(shù)。第13到第16個(gè)字節(jié)保存的是該桶中兩個(gè)相鄰采樣值之間差(MaxD)的最大值。第17到第20個(gè)字節(jié)保存的是該桶中最大的采樣值(bib)。
參見(jiàn)圖7圖中所示為數(shù)據(jù)顛簸在較大長(zhǎng)度的時(shí)間窗口上會(huì)導(dǎo)致不真實(shí)的突變。設(shè)要監(jiān)測(cè)的聚集函數(shù)是Sum,RTH=1.1。從(a)中可以看到在長(zhǎng)度為1的窗口上,x4和x6都是顛簸。從(b)中可以看到在長(zhǎng)度為2的窗口上,(x3+x4)=39.5>RTH(x1+x2)=1.1*30,因此顛簸x4到來(lái)時(shí)導(dǎo)致該長(zhǎng)度的窗口發(fā)生不真實(shí)的突變。從(c)中可以看到當(dāng)顛簸x6到來(lái)時(shí),在長(zhǎng)度為3的窗口上會(huì)檢測(cè)到錯(cuò)誤的突變。
參見(jiàn)圖8圖中(a)所示為本發(fā)明提供的實(shí)時(shí)監(jiān)測(cè)流數(shù)據(jù)突變方法的監(jiān)測(cè)精度??梢钥吹溅脑叫。仍礁?。當(dāng)δ≤0.01時(shí),在各種RTH設(shè)置下的監(jiān)測(cè)精度都可以高達(dá)99.9%以上。圖中(b)所示為本發(fā)明提供的實(shí)時(shí)監(jiān)測(cè)流數(shù)據(jù)突變方法的空間開(kāi)銷(xiāo),可以看到δ越大,所需空間越小。圖中(c)所示為本發(fā)明提供的實(shí)時(shí)監(jiān)測(cè)流數(shù)據(jù)突變方法的處理時(shí)間。以上性能測(cè)試所用的數(shù)據(jù)集取自http://ita.ee.lbl.gov上的真實(shí)數(shù)據(jù)集(WorldCup98)。算法都采用Microsoft Visual C++6.0實(shí)現(xiàn)。測(cè)試的硬件環(huán)境是一臺(tái)CPU為2.4GHz,256M內(nèi)存的DellPC。
以下結(jié)合
檢測(cè)突變的過(guò)程。
實(shí)施例1.設(shè)置RTH為大于1的值,只檢測(cè)正向突變。設(shè)置RTH=1.1,δ=0.01。首先按照?qǐng)D4所示的算法構(gòu)建直方圖。具體步驟如下當(dāng)?shù)玫揭粋€(gè)新的采樣值xn,將當(dāng)前桶的總數(shù)B加1,并將B的值賦給j。新建一個(gè)桶,并將新來(lái)的采樣值xn放入其中。從i=B-1到i=1降序地,做如下操作對(duì)桶bi將bia和bib分別增加xn。判斷bib是否大于(1+δ)bja。如果bib大于(1+δ)bja,那么j--;否則,將bib的值賦給bjb,再將bi的Wid添加到bj的Wid上,假如bi的MaxD大于bj的MaxD就用bi的MaxD替換bj的MaxD,假如bi的MinD小于bj的MinD就用bi的MinD替換bj的MinD,最后刪除bi,并將當(dāng)前桶的總數(shù)B減1,然后j--。當(dāng)完成把一個(gè)xn添加到直方圖中的工作后,接下來(lái)按照?qǐng)D5所示的算法檢測(cè)突變,具體步驟如下首先將突變計(jì)數(shù)器burstNum置為0,并將要檢測(cè)的窗口的長(zhǎng)度windowSize置為1。接下來(lái)從windowSize=1到windowSize=n2]]>升序地,對(duì)長(zhǎng)度為windowSize的窗口進(jìn)行檢測(cè),將BOIH.getLargerValue(windowSize)的返回值賦給臨時(shí)變量temp1,將BOIH.getSmallerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2。如果有temp2≥(1+RTH)(temp2-temp1),那么長(zhǎng)度為windowSize的序列發(fā)生正向突變,將burstNum加1,否則將突變計(jì)數(shù)器burstNum的值返回。返回值為正數(shù)表示有正向突變。至此,xn到來(lái)后的突變檢測(cè)工作就已經(jīng)完成了。如果檢測(cè)到突變則將發(fā)生突變的具體窗口大小及發(fā)生突變的窗口數(shù)目報(bào)告給用戶,提醒用戶有異常行為出現(xiàn)。
實(shí)施例2.設(shè)置RTH為小于1的值,只檢測(cè)反向突變。設(shè)置RTH=0.5,δ=0.01。如實(shí)施例1中,先將新來(lái)的值xn添加到直方圖中。然后按照?qǐng)D5所示的算法檢測(cè)突變,具體步驟如下首先將突變計(jì)數(shù)器burstNum置為0,并將要檢測(cè)的窗口的長(zhǎng)度windowSize置為1。接下來(lái)從windowSize=1到windowSize=n2]]>升序地,對(duì)長(zhǎng)度為windowSize的窗口進(jìn)行檢測(cè)。將BOIH.getSmallerValue(windowSize)的返回值賦給臨時(shí)變量temp1,將BOIH.getLargerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2。如果有temp2≤(1+RTH)(temp2-temp1),那么長(zhǎng)度為windowSize的序列發(fā)生反向突變,將burstNum減1,否則將突變計(jì)數(shù)器burstNum的值返回。返回值為負(fù)數(shù)表示有反向突變。至此,xn到來(lái)后的突變檢測(cè)工作就已經(jīng)完成了。如果檢測(cè)到突變則將發(fā)生突變的具體窗口大小及發(fā)生突變的窗口數(shù)目報(bào)告給用戶,提醒用戶有異常行為出現(xiàn)。
實(shí)施例3.設(shè)置RTH1為小于1的值,RTH2為大于1的值,同時(shí)檢測(cè)正向突變和反向突變。設(shè)置RTH1=0.5,RTH2=1.1,δ=0.01。如實(shí)施例1中,先將新來(lái)的值xn添加到直方圖中。然后按照?qǐng)D5所示的算法檢測(cè)突變,具體步驟如下首先將突變計(jì)數(shù)器burstNum置為0,并將要檢測(cè)的窗口的長(zhǎng)度windowSize置為1。接下來(lái)從windowSize=1到windowSize=n2]]>升序地,對(duì)長(zhǎng)度為windowSize的窗口進(jìn)行以下兩步操作第一步,假如要監(jiān)測(cè)正向突變,則將BOIH.getLargerValue(windowSize)的返回值賦給臨時(shí)變量temp1,將BOIH.getSmallerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2。如果有temp2≥(1+RTH2)(temp2-temp1),RTH2>1,那么長(zhǎng)度為windowSize的序列發(fā)生正向突變,將burstNum加1,否則如果burstNum不為0的話將突變計(jì)數(shù)器burstNum的值返回。第二步,假如要監(jiān)測(cè)反向突變,則將BOIH.getSmallerValue(windowSize)的返回值賦給臨時(shí)變量temp1,將BOIH.getLargerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2。如果有temp2≤(1+RTH1)(temp2-temp1),0<RTH1<1,那么長(zhǎng)度為windowSize的序列發(fā)生反向突變,將burstNum減1,否則將突變計(jì)數(shù)器burstNum的值返回。返回值為正數(shù)表示有正向突變,返回值為負(fù)數(shù)表示有反向突變。至此,xn到來(lái)后的突變檢測(cè)工作就已經(jīng)完成了。如果檢測(cè)到突變則將發(fā)生突變的具體窗口大小及發(fā)生突變的窗口數(shù)目報(bào)告給用戶,提醒用戶有異常行為出現(xiàn)。
權(quán)利要求
1.一種實(shí)時(shí)監(jiān)測(cè)流數(shù)據(jù)突變的方法,其特征在于具體步驟如下設(shè)要監(jiān)測(cè)的采樣數(shù)據(jù)流為序列x1,..,xn,其中任意一個(gè)值xi是第i時(shí)刻的采樣值,i為時(shí)間戳,x1為最早的采樣值,xn為最新的采樣值,n的大小不受限制,設(shè)相對(duì)監(jiān)測(cè)門(mén)限為RTH,當(dāng)RTH大于1時(shí),為正向突變,當(dāng)RTH小于1時(shí),為反向突變;設(shè)要監(jiān)測(cè)的序列的最大長(zhǎng)度為j(1≤j≤n/2),并且進(jìn)行的聚集計(jì)算是Sum,那么定義當(dāng)Σk=n-j+1k=nxkΣk=n-2j+1k=n-jxk≥RTH(RTH>1)]]>時(shí),當(dāng)前監(jiān)測(cè)的長(zhǎng)度為j的序列發(fā)生正向突變,當(dāng)Σk=n-j+1k=nxkΣk=n-2j+1k=n-jxk≤RTH(0<RTH<1)]]>時(shí),當(dāng)前監(jiān)測(cè)的長(zhǎng)度為j的序列發(fā)生反向突變;(2)對(duì)于每個(gè)新來(lái)的采樣值xn,采用倒置桶序列的直方圖算法(記為BOIH)進(jìn)行聚集計(jì)算,其步驟為①當(dāng)?shù)玫揭粋€(gè)新的采樣值xn,將當(dāng)前桶的總數(shù)B加1,并將B的值賦給j;②新建一個(gè)桶,并將新來(lái)的采樣值xn放入其中;③從i=B-1到i=1降序地,做如下操作(a)對(duì)桶bi將bia和bib分別增加xn;(b)判斷bib是否大于(1+δ)bja,如果bib大于(1+δ)bja,那么j--,然后跳至第3步執(zhí)行;否則,將bib的值賦給bjb,再將bi的Wid添加到bi的Wid上,假如bi的MaxD大于bj的MaxD,就用bi的MaxD替換bj的MaxD,假如bi的MinD小于bj的MinD,就用bi的MinD替換bj的MinD,最后刪除bi,并將當(dāng)前桶的總數(shù)B減1,然后跳至第3步執(zhí)行;其中,bi為桶,bia為bi中最小采樣值,bib為bi中最大采樣值,MaxD為桶中兩個(gè)相鄰采樣值之差的最大值,MinD為桶中兩個(gè)相鄰采樣值之差的最小值,δ為桶中相對(duì)誤差上限;(3)按上述步驟完成把xn添加到直方圖后,采用錯(cuò)誤陽(yáng)性和錯(cuò)誤陰性的流數(shù)據(jù)監(jiān)測(cè)算法,檢測(cè)突變情況;其中,錯(cuò)誤陽(yáng)性算法如下①將突變計(jì)數(shù)器burstNum置為0,并將要檢測(cè)的窗口的長(zhǎng)度windowSize置為1;②從windowSize=1到windowSize=n2]]>升序地,對(duì)長(zhǎng)度為windowSize的窗口進(jìn)行如下操作(a)假如要監(jiān)測(cè)正向突變,則將BOIH.getLargerValue(windowSize)的返回值賦給臨時(shí)變量temp1,將BOIH.getSmallerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2;如果有temp2≥(1+RTH)(temp2-temp1),RTH>1,那么長(zhǎng)度為windowSize的序列發(fā)生正向突變,將burstNum加1,否則,如果burstNum為0則跳至第4步執(zhí)行;(b)假如要監(jiān)測(cè)反向突變,則將BOIH.getSmallerValue(windowSize)的返回值賦給臨時(shí)變量temp1,將BOIH.getLargerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2;如果有temp2≤(1+RTH)(temp2-temp1),0<RTH<1,那么長(zhǎng)度為windowSize的序列發(fā)生反向突變,將burstNum減1,否則跳至第4步執(zhí)行;③將突變計(jì)數(shù)器burstNum的值返回;錯(cuò)誤陰性的算法如下①將突變計(jì)數(shù)器burstNum置為0,并將要檢測(cè)的窗口的長(zhǎng)度windowSize置為1;②從windowSize=1到windowSize=n2]]>升序地,對(duì)長(zhǎng)度為windowSize的窗口進(jìn)行如下操作(a)假如要監(jiān)測(cè)正向突變,則將BOIH.getSmallerValue(windowSize)的返回值賦給臨時(shí)變量temp4,將BOIH.getLargerValue(2*windowSize)的返回值賦給臨時(shí)變量temp2;如果有temp2≥(1+RTH)(temp2-temp1),RTH>1,那么長(zhǎng)度為windowSize的序列發(fā)生正向突變,將burstNum加1,否則,如果burstNum為0則跳至第2步執(zhí)行;(b)假如要監(jiān)測(cè)反向突變,則將BOIH.getLargerValue(windowSize)的返回值賦給臨時(shí)變量temp4,將BOIH.getSmallValue(2*windowSize)的返回值賦給臨時(shí)變量temp2;如果有temp2≤(1+RTH)(temp2-temp1),0<RTH<1,那么長(zhǎng)度為windowSize的序列發(fā)生反向突變,將burstNum減1,否則跳至第2步執(zhí)行;③將突變計(jì)數(shù)器burstNum的值返回。
全文摘要
本發(fā)明為一種實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)突變的方法。該方法首先對(duì)現(xiàn)有監(jiān)測(cè)方法關(guān)于數(shù)據(jù)突變的定義進(jìn)行了擴(kuò)充,提出了動(dòng)態(tài)地監(jiān)測(cè)突變的定義;其次,引入了倒置桶序列的直方圖算法(BOIH),利用很小的空間精確地壓縮采樣數(shù)據(jù)流x1,x2…xn;當(dāng)把xn添加到直方圖后,采用錯(cuò)誤陽(yáng)性和錯(cuò)誤陰性的流數(shù)據(jù)監(jiān)測(cè)算法檢測(cè)突變情況。本發(fā)明方法能夠?qū)崿F(xiàn)自適應(yīng)地監(jiān)測(cè)數(shù)據(jù)突變,而且能同時(shí)監(jiān)測(cè)任意多個(gè)不同時(shí)間長(zhǎng)度窗口內(nèi)的突變,并可排除數(shù)據(jù)顛簸對(duì)監(jiān)測(cè)結(jié)果的影響,為提高軟件系統(tǒng)的執(zhí)行效率,兼容性和可靠性提供了保障。
文檔編號(hào)H04L12/26GK1588893SQ200410066238
公開(kāi)日2005年3月2日 申請(qǐng)日期2004年9月9日 優(yōu)先權(quán)日2004年9月9日
發(fā)明者秦首科, 周傲英 申請(qǐng)人:復(fù)旦大學(xué)