我正在尝试了解Flink在处理多个数据流和每个数据流的多个运算符时的运行时方面。
使用案例:单个flink作业中的N个数据流(每个数据流代表1个设备 - 具有不同的时间延迟),并且每个数据流被分成两个流,其中一个进入一堆CEP运算符,一个进入过程函数。
问题:
答案 0 :(得分:0)
问题#1:在运行时,引擎会为每个数据流创建一个线程吗?或者每个运营商一个线程?
在我看来,流与运营商之间没有直接关系。您需要查看execution plans以了解流如何连接到运营商。它也取决于并行性,也有various types of parallelisms in flink
问题2:当作业开始时,是否可以在运行时动态创建数据流?
是的,有可能。简单的方法是创建一个实现RichParallelSourceFunction
函数的流生成器,并以某种速率发送流。
问题3:创建大量流(N~10000)时,是否存在特定的性能影响,而不是单个流中的N个分区?
是的,我认为会有一些性能影响,您可以通过生成多个流然后比较处理延迟来证实这一点