没有数据接收器的 Flink 管道,打开了检查点



我正在研究构建一个没有数据接收器的 flink 管道。 即我的管道在成功调用数据存储时结束。

在这种情况下,如果我们不使用接收器运算符 检查点将如何工作?

由于检查点基于检查点前纪元(在状态中持久化或发出到接收器中的所有事件)和检查点后纪元的概念。flink 管道是否需要接收器?

是的,作为 Flink 执行模型的一部分,需要 sink:

Flink 中的数据流程序是实现的常规程序 数据流上的转换(例如,过滤、更新状态、 定义窗口,聚合)。数据流最初创建 来自各种来源(例如,消息队列、套接字流、文件)。结果通过接收器返回,例如接收器可以写入数据 到文件或标准输出(例如命令行) 终端)

有人可能会争辩说,对数据存储的调用是您可以使用的实际接收器实现。您可以定义自己的接收器并在那里执行数据存储调用。

我并不热衷于数据存储的详细信息,但可以假设您正在序列化这些事件并以某种方式将它们发送到数据存储。在这种情况下,您可以将所有元素流向接收器操作员,并将每个元素存储在可以连续卸载和发送的某个ListState中。这样,如果您的应用程序需要升级,飞行记录将不会丢失,并且将在作业恢复后恢复并发送。

最新更新