Flink 保存点之回溯时间

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 保存点之回溯时间相关的知识,希望对你有一定的参考价值。

流处理通常被大家与动态数据关联起来,相应的系统差不多会在数据被创造出来的那一刻就立刻对其进行处理或响应。像延迟、吞吐量、水位线以及处理迟到的数据等等都是大家讨论得最多的流处理话题。可在实际项目中,却有许多种场景需要你的流处理程序把以前处理过的数据再重新处理一遍,比如:

  • 为你的程序部署一个新版本,可能是有新功能、修复了 BUG、或者采用了更好的机器学习模型;
  • 使用相同的源数据流对应用程序的不同版本进行 A/B 测试,两边都从同一个点开始测试,这样就不会牺牲之前的状态;
  • 评估或开展将应用程序迁移到更新版本的处理框架上,或是一个不同的集群上;

Apache Flink 的保存点(Savepoint)功能可以支持上面的所有场景,这样也是 Flink 和其它分布式开源流处理器显著不同的一点。在本文中,我们会讲述如何使用保存点功能来重新处理数据,并一定程度地深入底层,讲述这个功能在 Flink 中是怎么实现的。

1. "重新处理"到底是什么意思?

为了保证大家对重新处理数据的理解是一致的,我们先讨论一个你可能需要重新处理数据的业务例子。想像一个社交媒体公司,她除了基本的发贴功能之外,还发布了一种付费的或者说是推广发贴的功能。公司的用户可以访问一个简单的、基于 Flink 实现的仪表板,显示他们所有文章(不管是普通的还是付费的)被大家查看、点击等等的次数。几个星期之后,从用户的反馈中了解到用户希望把普通的发贴数据和付费的发贴数据区别开来。要实现这个功能,就有必要返回到付费发贴功能最初发布的那个时刻,然后从那个时刻开始,把所有数据全都重新处理一遍。这一次要把付费贴和普通贴的展示和交互全都拆开来。如

以上是关于Flink 保存点之回溯时间的主要内容,如果未能解决你的问题,请参考以下文章

flink 时间语义水位线(Watermark)生成水位线水位线的传递

Flink学习(十四) Flink 窗口时间和水位线

几分钟明白Flink水位线

Flink 中的时间和窗口

Flink-水位线的设置以及传递

Flink 水位线机制WaterMark实践 处理乱序消息