在flink streaming 处理中窗口是比较常见的操作, 例如窗口sum、max、min等,窗口构建主要包含:Assigner、Trigger、Function、Evictor, Assigner...窗口数据如何保存:flink 是有状态的流处理, 其中间处理数据都会保存在 state中, 那么对于窗口数据也不例外, 在触发前都会保存在state 中, 保证了其容错机制, 对于每条数据的保存处理都会调用...windowState.add(element.getValue()), 那么对于一个keyed window是如何区分各个窗口的数据的呢?...在这里可以理解为有一个MapWindow,List> 的数据结构其中key 表示具体的分组key值,Window 表示一个namespace 一个具体的window, ListFlink定时系统), 当处理watermark判断其值大于队列中endTime 的则触发窗口,这对应机制