Twitter 拾取Flink/Kafka应用程序的延迟图

Twitter 拾取Flink/Kafka应用程序的延迟图,twitter,apache-kafka,apache-flink,flink-streaming,Twitter,Apache Kafka,Apache Flink,Flink Streaming,我有一个应用程序,它接收来自卡夫卡主题的tweet,有一个1秒的窗口,然后通过允许打开最多100个线程的AssyncIO操作将这些tweet保存在Cassandra上(AsyncIO操作符的最后一个参数)无需对数据进行任何预处理:只需一条一条地保存tweet,时间戳为保存的时间 然后,我强调了Flink应用程序发送了300万条推文,并在Grafana中绘制了一个图表,显示数据库中保存了多少条推文,但这个图表显示了一些选择,不是一条连续的线,我不明白为什么 所以你可以看到,在一分钟的时间间隔内,它

我有一个应用程序,它接收来自卡夫卡主题的tweet,有一个1秒的窗口,然后通过允许打开最多100个线程的AssyncIO操作将这些tweet保存在Cassandra上(AsyncIO操作符的最后一个参数)无需对数据进行任何预处理:只需一条一条地保存tweet,时间戳为保存的时间

然后,我强调了Flink应用程序发送了300万条推文,并在Grafana中绘制了一个图表,显示数据库中保存了多少条推文,但这个图表显示了一些选择,不是一条连续的线,我不明白为什么

所以你可以看到,在一分钟的时间间隔内,它可以节省7k,然后再到5k,再到2k。如果能帮我找出原因,我将不胜感激!非常感谢


首先,如果你想给卡桑德拉写信,我会用。如果不是几乎不可能的话,正确地手动实现一次这样的操作是非常困难的

其次,AsyncIO没有启动100个线程。事实上,它并没有为用户启动任何线程。你需要通过任何方式自己启动它们。通常,它使用外部系统的回调机制,其中库有自己的连接池

如果要进行同步调用,则需要管理自己的线程池。我建议使用
Executors.newCachedThreadPool()
并向其提交异步任务。AsyncIO只会帮助将异步结果合并回同步流


第三,100个线程可能相当多,这取决于您的设置。还请注意,如果使用Flink的放大(每个taskmanager使用多个插槽),则使用的线程将成倍增加

为什么不使用Kafka Connect而不是AsyncIO?因为我是这样做的,我不知道Kafka Connect,我会搜索更多关于它的信息。另外,在将来,我将使用flink在保存到数据库之前对数据进行一些操作。你知道为什么会有这种行为吗?你是使用事件时间还是处理时间语义?我不知道。。。此外,还不清楚您是在直播推特还是批量加载。此外,默认情况下,Kafka producer将批处理事件,因此您可以使用批处理或请求大小。RE:Connect,您仍然可以使用Flink from Kafka->Kafka,然后Kafka从那里连接到数据库事件时间语义在实时流化推特上。卡夫卡制作人的批量事件我几个小时前才弄明白,玩它是个好主意。我试试看。