Flink 异步IO 笔记
上一章介绍了维表的LRU,主要就是用了异步IO,参考文章1,参考文章2,官网
类的具体实现不在介绍,主要是总结一下理论
从使用角度,异步IO其实就是来了一条数据然后调用一个线程去查询,然后线程将查询结果反馈出来。查询完成后的数据输出有两种模式无序(unorderedWait)和有序(orderedWait)。
有序比较简单:FIFO 先进先出
无序:分为ProcessingTime无序和Event Tiem的无序
ProcessingTime的无序就是查询完成后将数据发送,不考虑顺序
Event Tiem:以watermark为界限,两个watermark中的数据理解为一个集合,此集合中的数据完成查询后输出(这里是无序的)。只有集合中的数据都输出完毕才能输出watermark。watermark之间是有序的,watermark1一定在watermark2前输出,否则watermark2不输出。
实现方式都是通过队列完成的,只是不同的队列。图都来自参考文章
有序:先进先出
ProcessingTime无序:查询完成后的数据转移到另一个队列中,然后输出。
EventTime的无序:P1,P2,P3在一个集合中,waterMark是一个特殊的集合,这样保证waterMark的有序。在集合内部可以明显看出P1,P2,P3先完成的先转移到完成队列中输出。
这里的checkPoint也简单,将完成队列中还未发送的元素和等待队列中元素进行快照。