作者回复: 不是这样的,每条数据是实时流过的,并不会等待。
只有做按时间汇聚的那个节点,它会记录汇总的中间结果(注意,它只记录汇总的中间结果,并不知把所有数据都攒起来),在每个时间窗口结束后会在流中产生一条新的数据(也就是统计结果),流往下游。
比如,每分钟统计数据条数,汇聚的这个节点每流过一条数据,统计值就+1,它不会保存流过的数据,等到时间窗口结束,这个统计就做完了,它直接生成一条统计结果数据,发往下游。
作者回复: 场景不太一样,这种场景更在乎的是海量吞吐,快速查询,对于数据可靠性和一致性的要求没那么高,毕竟一个图标上少一两个点也没什么关系。
作者回复: 这个原因很简单,你想一下,客户端发送成功并不等于服务端处理成功,如果数据在网络传输过程中丢了呢?如果服务端在处理过程是失败了呢?所以,需要客户端收到服务端明确的告知:”数据我收到并且处理成功了“,才能保证数据不会丢失。
作者回复: Streaming 101 这篇博文就是Flink的理论基础。
作者回复: 一般应该是数据持久化完成后在发送消费成功确认。