滑動(dòng)窗口在監(jiān)控和統(tǒng)計(jì)應(yīng)用的場景比較廣泛,比如每隔一段時(shí)間(10s)統(tǒng)計(jì)最近30s的請(qǐng)求量或者異常次數(shù),根據(jù)請(qǐng)求或者異常次數(shù)采取相應(yīng)措施。在storm1.0版本之前,沒有提供關(guān)于滑動(dòng)窗口的實(shí)現(xiàn),需要開發(fā)者自己實(shí)現(xiàn)滑動(dòng)窗口的功能(storm1.0以前實(shí)現(xiàn)滑動(dòng)窗口的實(shí)現(xiàn)原理可以自行百度)。
原文和作者一起討論:http://www.cnblogs.com/intsmaze/p/6481588.html
微信:intsmaze
這里主要演示在storm1.0以后如何通過繼承storm1.0提供的類來快速開發(fā)出窗口滑動(dòng)的功能。窗口可以從時(shí)間或數(shù)量上來劃分,由如下兩個(gè)因素決定:窗口的長度,可以是時(shí)間間隔或Tuple數(shù)量;滑動(dòng)間隔(sliding Interval),可以是時(shí)間間隔或Tuple數(shù)量。比如:每兩秒統(tǒng)計(jì)最近6秒的請(qǐng)求數(shù)量;每接收2個(gè)Tuple就統(tǒng)計(jì)最近接收的6個(gè)Tuple的平均值......。
storm1.0支持的時(shí)間和數(shù)量的排列組合有如下:
withWindow(Count windowLengt