At_Least_Once Checkpoint With S3 Source似乎在检查点持续时间内阻止了事件源



我正在尝试构建一个具有实时流处理的系统,flink以s3为源,以elastic为汇。

我总共为检查站试行了4个案例。

  1. 具有对齐检查点的Exactly_Once
  2. Exactly_Once与不对齐的检查点
  3. At_Least_Once,最多1个并发检查点
  4. At_Least_Once,最多2个并发检查点

带有不对齐检查点的Exactly_Once似乎在发布到接收器时延迟最小。

而其余三个的延迟似乎相似。

根据文档:在对齐延迟的情况下,At_Least_On不应在检查点期间阻止一个流的事件。

在基于文件系统的源的情况下,这种行为会改变吗?

有关作业的详细信息:--

我们有另一个服务,它正在向S3实时写入文件。零件文件每1分钟关闭一次。

flink作业在PROCESS_CONTINUOUSLY模式下使用env.readFile从s3路径消耗,窗口大小为30s。

我们预计最大处理延迟为5米,但情况2:--我们观察到8-10m的延迟。情况1、3、4:延迟10-14m。

我们正在使用16个类似的来源运行此作业。

我可以看出,检查点延迟是由于来自其中两个源的背压造成的。其tps分别为180和90,并且它们的对准延迟为~7m和~6m。

然而,我们可以看到,在整个时期内,资源消耗保持相当稳定。内存峰值最大为堆的70%。

以这种方式从S3中获取执行较差且成本高昂(因为它为每次迭代执行ListObjects(。

一个更好的解决方案是使用AmazonS3事件通知使用自定义的SQS源(AFAIK没有官方的(。下面是一个示例实现。

最新更新