Session Windows

Posted guanyong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Session Windows相关的知识,希望对你有一定的参考价值。

flink 目前支持3种窗口机制:

Tumbling Windows 滚动窗口

Sliding Windows    滑动窗口

Session Windows  

这次先了解一下session windows

session 在网络中表示会话控制,有一定的生命周期,在flink里实际是用gap来控制的,gap分为 Static gaps 和 Dynamic gaps,gap内的可以合并为一个窗口,超过了gap 就认为是一次窗口结束。

WindowOperator 类的 processElement(StreamRecord<IN> element) 是对元素进行处理的基本类,里面有2个分支
if (windowAssigner instanceof MergingWindowAssigner) {
// session windows
}
else {
// tumbling/sliding window
}
本质上新创建的window都要经历合并阶段,那为什么要分2种情况呢?
先讲 tumbling/sliding window 的合并机制,这种 window 是有固定的窗口时间的,所以可以通过相同的窗口时间来进行合并

windowState.setCurrentNamespace(window);
windowState.add(element.getValue());

这个是窗口合并的地方,背后是相应的state的实现。
session windows 没有固定的时间,所以不能用上面的方法实现,背后稍微复杂点,需要一个合并的机制
W stateWindow = mergingWindows.getStateWindow(actualWindow);

是里面的一个合并代码。
 


 


















以上是关于Session Windows的主要内容,如果未能解决你的问题,请参考以下文章

windows7里的IIS里怎么设置session会话超时时间?

一个队asp.net session进行了再次封装的C#类的代码

redis存储session配制方法

vscode代码片段建议bug

JS代码片段:一个日期离现在多久了

如何测量代码片段的调用次数和经过时间