stream.keyBy(...) // 是Keyed类型数据集 
.window(...) //指定窗口分配器类型
[.trigger(...)] //指定触发器类型(可选)
[.evictor(...)] //指定evictor或者不指定(可选)
[.allowedLateness(...)] //指定是否延迟处理数据(可选)
[.sideOutputLateData(...)] //指定Output Lag(可选)
.reduce/aggregate/fold/apply() //指定窗口计算函数
[.getSideOutput(...)] //根据Tag输出数据(可选)

Windows Assigner:指定窗口的类型,定义如何将数据流分配到一个或多个窗口;
Windows Trigger:指定窗口触发的时机,定义窗口满足什么样的条件触发计算;
Evictor:用于数据剔除;
allowedLateness:标记是否处理迟到数据,当迟到数据到达窗口中是否触发计算;
Output Tag:标记输出标签,然后在通过 getSideOutput 将窗口中的数据根据标签输出;
Windows Funciton:定义窗口上数据处理的逻辑,例如对数据进行 sum 操作。