本發(fā)明涉及通信領(lǐng)域,尤其是一種基于flink自適應(yīng)窗口的事件時間處理方法及裝置。
背景技術(shù):
1、現(xiàn)有的技術(shù)方法是使用固定的滾動窗口的方式,存在的問題就是在流量不均勻的情況下,比如流量高峰,流量可能是低谷(凌晨時間段)的幾十倍,此時使用固定的滾動窗口的情況下會導(dǎo)致窗口內(nèi)積壓的數(shù)據(jù)量過大,不僅對內(nèi)存有較大的壓力,且計算的耗時比較久,導(dǎo)致數(shù)據(jù)積壓在flink窗口計算之前,從而出現(xiàn)數(shù)據(jù)的反壓,計算結(jié)果由此會產(chǎn)生較大的偏差,嚴(yán)重的時候還會導(dǎo)致內(nèi)存耗盡,服務(wù)假死等情況。
2、使用flink實時流處理網(wǎng)絡(luò)流量數(shù)據(jù)的過程中,由于網(wǎng)絡(luò)流量數(shù)據(jù)的忽大忽小,對于flink窗口計算的性能存在較大的影響,而flink的性能問題直接導(dǎo)致了其反壓,最終造成了計算結(jié)果不準(zhǔn)確和計算滯后的不良后果。
技術(shù)實現(xiàn)思路
1、為解決現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種基于flink自適應(yīng)窗口的事件時間處理方法及裝置,根據(jù)實時的流量大小動態(tài)的去調(diào)整窗口的大小,避免不必要的資源浪費,從而達(dá)到flink計算耗時的動態(tài)平衡,保證系統(tǒng)的穩(wěn)定運行。
2、為實現(xiàn)上述目的,本發(fā)明采用下述技術(shù)方案:
3、在本發(fā)明一實施例中,提出了一種基于flink自適應(yīng)窗口的事件時間處理方法,該方法包括:
4、s01、采用kafka作為實時流計算引擎的數(shù)據(jù)源,并以不同速率模擬網(wǎng)絡(luò)流量往kafka中生產(chǎn)netflow數(shù)據(jù);
5、s02、定義自適應(yīng)窗口的調(diào)整規(guī)則,設(shè)置flink的fps處理閾值,定義最大窗口長度和最小窗口長度,fps大于閾值則縮小窗口,而fps小于閾值則增大窗口;
6、進(jìn)一步地,所述窗口為滾動時間窗口。
7、s03、構(gòu)建flink處理流程,建立輸入、窗口、處理、輸出模塊,初始窗口大小為最大窗口大??;
8、s04、建立自適應(yīng)時間窗口觸發(fā)器實現(xiàn)類dynamicwindowsizetri?gger,繼承trigger類并重寫onelement和onprocessingtime方法,所述onelement方法邏輯為監(jiān)聽窗口事件的變化,及時調(diào)整窗口的大小,所述onprocessingtime方法邏輯為動態(tài)更新滾動窗口;
9、進(jìn)一步地,所述onelement方法是在每次有事件進(jìn)入滾動時間窗口的觸發(fā),即每一條netflow數(shù)據(jù)進(jìn)入滾動時間窗口都會觸發(fā)該方法。
10、進(jìn)一步地,所述s04包括:
11、s041、自定義實現(xiàn)一個觸發(fā)器,實現(xiàn)觸發(fā)器接口的方法,并監(jiān)聽窗口事件的進(jìn)入;
12、s042、對單位時間內(nèi)進(jìn)入窗口的數(shù)據(jù)進(jìn)行計數(shù);
13、s043、累計一定時間段內(nèi)的事件數(shù)量,并與時間間隔相除得到單位時間的事件數(shù)量即fps;
14、s044、將fps的數(shù)值與定義的處理閾值進(jìn)行比較,如果大于閾值,則適當(dāng)調(diào)小窗口,如果小于閾值則適當(dāng)調(diào)大窗口,來保證flink在單位時間內(nèi)處理事件的數(shù)量,讓業(yè)務(wù)平穩(wěn)運行。
15、s05、啟動flink程序,以s01中所述的不同的速率向kafka中生產(chǎn)數(shù)據(jù),觀察窗口輸出間隔的變化。
16、進(jìn)一步地,所述s05中窗口fps小于設(shè)置的閾值,窗口時間為設(shè)置的最大值,則保持當(dāng)前窗口執(zhí)行,不進(jìn)行調(diào)整。
17、在本發(fā)明一實施例中,還提出了一種基于flink自適應(yīng)窗口的事件時間處理裝置,該裝置包括:
18、數(shù)據(jù)模擬模塊,采用kafka作為實時流計算引擎的數(shù)據(jù)源,并以不同速率模擬網(wǎng)絡(luò)流量往kafka中生產(chǎn)netflow數(shù)據(jù);
19、自適應(yīng)規(guī)則模塊,定義自適應(yīng)窗口的調(diào)整規(guī)則,設(shè)置flink的fps處理閾值,定義最大窗口長度和最小窗口長度,fps大于閾值則縮小窗口,而fps小于閾值則增大窗口;
20、flink處理流程構(gòu)建模塊,建立輸入、窗口、處理、輸出模塊,初始窗口大小為最大窗口大??;
21、觸發(fā)模塊,建立自適應(yīng)時間窗口觸發(fā)器實現(xiàn)類dynamicwindowsi?zetrigger,繼承trigger類并重寫onelement和onprocessingtime方法,所述onelement方法邏輯為監(jiān)聽窗口事件的變化,及時調(diào)整窗口的大小,所述onprocessingtime方法邏輯為動態(tài)更新滾動窗口;
22、flink程序啟動模塊,以數(shù)據(jù)模擬模塊中所述的不同的速率向kafka中生產(chǎn)數(shù)據(jù),觀察窗口輸出間隔的變化。
23、在本發(fā)明一實施例中,還提出了一種計算機設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,處理器執(zhí)行計算機程序時實現(xiàn)前述基于flink自適應(yīng)窗口的事件時間處理方法。
24、在本發(fā)明一實施例中,還提出了一種計算機可讀存儲介質(zhì),計算機可讀存儲介質(zhì)存儲有執(zhí)行基于flink自適應(yīng)窗口的事件時間處理方法的計算機程序。
25、有益效果:
26、本發(fā)明一種基于flink自適應(yīng)窗口的事件時間處理方法及裝置,通過實時監(jiān)測數(shù)據(jù)流的特性,如元素數(shù)量、數(shù)據(jù)分布等,動態(tài)調(diào)整窗口大小,使系統(tǒng)能夠更靈活地適應(yīng)不同的數(shù)據(jù)流模式,提高了處理性能;引入了事件時間處理的概念,根據(jù)數(shù)據(jù)流中的事件時間戳而非數(shù)據(jù)進(jìn)入系統(tǒng)的時間戳進(jìn)行處理,這一特性增強了系統(tǒng)對亂序事件的容忍性,提高了數(shù)據(jù)處理的準(zhǔn)確性,尤其適用于需要考慮數(shù)據(jù)產(chǎn)生時間的場景。
1.一種基于flink自適應(yīng)窗口的事件時間處理方法,其特征在于,該方法包括:
2.根據(jù)權(quán)利要求1所述的基于flink自適應(yīng)窗口的事件時間處理方法,其特征在于,所述窗口為滾動時間窗口。
3.根據(jù)權(quán)利要求1所述的基于flink自適應(yīng)窗口的事件時間處理方法,其特征在于,所述onelement方法的觸發(fā)機制為:有事件進(jìn)入滾動時間窗口觸發(fā),即每一條netflow數(shù)據(jù)進(jìn)入滾動時間窗口都會觸發(fā)該方法。
4.根據(jù)權(quán)利要求1所述的基于flink自適應(yīng)窗口的事件時間處理方法,其特征在于,所述s04包括:
5.根據(jù)權(quán)利要求1所述的基于flink自適應(yīng)窗口的事件時間處理方法,其特征在于,所述s05中窗口fps小于設(shè)置的閾值,窗口時間為設(shè)置的最大值,則保持當(dāng)前窗口執(zhí)行,不進(jìn)行調(diào)整。
6.一種基于flink自適應(yīng)窗口的事件時間處理裝置,其特征在于,該裝置包括:
7.一種計算機設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)權(quán)利要求1-5任一項所述方法。
8.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)存儲有執(zhí)行權(quán)利要求1-5任一項所述方法的計算機程序。