问题导读: 1.滑动的触发由谁来完成? 2.你认为滑动窗口与storm该如何结合? 3.滑动窗口与storm结合是如何实现的?
这里需要对storm有所了解,可以参考总体认识storm包括概念,场景,组成,明白storm之后,我们继续下面内容。
这里首先需要明白一个场景,那就是这个滑动窗口是什么窗口,about云首页位置,如下图所示,这个便是滑动窗口的一个例子,但是本文讲的不是图片的滑动,而是数据页面的滑动,明白了这个问题,我们继续向下看。
<ignore_js_op style="word-wrap: break-word; font-stretch: normal;">
滑动窗口在监控和统计应用的场景比较广泛,比如每隔一段时间(10s)统计最近30s的请求量或者异常次数,根据请求或者异常次数采取相应措施;这里说一下滑动窗口在storm中实现的原理。参见下图:
<ignore_js_op style="word-wrap: break-word; font-stretch: normal;">
窗口大小为30s,每10s就统计一次,那么窗口一共有3个slot,可以对窗口建立长度为3的数组;在storm的blot中在10s内通过execute(tuple)功能不停的把接收的tuple进行count个数(假如内置变量为tuple_count),每10s会自动触发滑动窗口的移动工作(Array[slot3]=》Array[slot2],Array[slot2]=》Array[slot1]),并存储当前tuple_count值到Array[slot3] ,随之可以进行统计窗口的数据了。
那么如何每10s进行自动触发,storm有一个TickTuple可以满足这个要求, "__system" component会定时往task发送 "__tick" stream的tuple 发送频率由TOPOLOGY_TICK_TUPLE_FREQ_SECS来配置, 可以在default.ymal里面配置 也可以在代码里面通过getComponentConfiguration()来进行配置,
- public Map<string, object="" style="word-wrap: break-word;"> getComponentConfiguration() {
- Map<string, object="" style="word-wrap: break-word;"> conf = new HashMap<string, object="" style="word-wrap: break-word;">();
- conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, emitFrequencyInSeconds);
- return conf;
复制代码
配置完成后, storm就会定期的往task发送ticktuple 只需要通过isTickTuple来判断是否为tickTuple, 就可以完成定时触发的功能
- public static boolean isTickTuple(Tuple tuple) {
- return tuple.getSourceComponent().equals(Constants.SYSTEM_COMPONENT_ID) SYSTEM_COMPONENT_ID == "__system"
- && tuple.getSourceStreamId().equals(Constants.SYSTEM_TICK_STREAM_ID); SYSTEM_TICK_STREAM_ID == "__tick"
- }
复制代码
|
http://www.dataguru.cn/article-5585-1.html
分享到:
相关推荐
对于计算机网络中滑动窗口协议的仿真实现。
本实验实现一个数据链路层协议的数据传送部分,目的在于使学生更好 地理解数据链路层协议中的“滑动窗口”技术的基本工作原理,掌握计算机网 络协议的基本实现技术。 1.2 实验要求 在一个数据链路层的模拟实现环境中...
滑动窗口的实现到底有多难,今天在做课程设计的时候,无意中实现了。。。
北京邮电大学数据链路层滑动窗口协议的设计与实现参考实现
数据链路层滑动窗口协议的设计与实现 选择重传,计算机网络实验,C文件datalink。c CRC校验,效率60%
看到几篇机器学习的文章都是用滑动窗口生成的样本数据,最近同学给我搞了一个,现在分享给大家,程序为matlab编写,可以直接对原始采集数据生成所需样本,已经封装成了函数,一行代码就可实现对原始数据生成样本,亲...
The sliding window algorithm 的过程是,随着窗口的增大有效的近似轨迹也随之增长,直到近似轨迹与原始归轨迹的误差值超过指定的误差范围。
利用所学数据链路层原理,自己设计一个滑动窗口协议并在仿真环境下编程实现有噪音信道环境下的 可靠的双工通信。信道模型为 8000bps 全双工卫星信道,信道传播时延 270 毫秒,信道误码率为 10-5,信道提供字节流传输...
Qt下用QSplitter实现滑动窗口,详见博客:http://blog.csdn.net/caoshangpa/article/details/78549788
数据链路层滑动窗口协议的设计与实现.docx
这是一个用java演示流量控件方法——滑动窗口法原理的实例代码。
滑动窗口机制及TCP中的相关实现,详细介绍了滑动窗口机制的原理。
一位滑动窗口协议模拟 c语言实现,编译已经通过,可以自己添加主函数进行模拟实验。
自己编的程序,利用所学数据链路层原理,自己设计一个滑动窗口协议并在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信。信道模型为8000bps 全双工卫星信道,信道传播时延270 毫秒,信道误码率为10-5,...
理解数据链路层的滑动窗口协议,完整实现滑动窗口协议中的1bit滑动窗口协议,通过socket实现TCP连接来进行模拟
该软件采用java实现,内附有源代码,模拟了滑动窗口机制,我想很多地方都可以用到该机制
采用MFC技术的界面编程,运用C++语言,模拟实现滑动窗口协议。
滑动窗口协议C++代码
使用QT制作的一个主界面滑动模型,类似于手机上的滑动窗口。分离出来的。只是一个框架,具体点击进去的应用需要额外编程。压缩包附带了一个实例图片。欢迎学习和交流。
说明了uDP协议内容和滑动窗口协议,并有原代码