当前位置: 首页 > 知识库问答 >
问题:

Flink和recovery中事件处理的顺序

百里业
2023-03-14

我研究Flink已经一个多星期了。我们正在从Kafka消费事件,我们希望事件属于一个特定的对象id需要按照事件时间的顺序进行处理。到目前为止,我的研究告诉我,我应该使用keyby和timewinds,我的理解是正确的吗?

另一个问题是,当一个任务管理器关闭时,只有属于该任务管理器的事件才会被停止处理,直到该任务管理器启动?检查点机制是否知道未被处理的事件,它将如何请求Kafka关于这些事件?

下面用例中的问题

在具有并行进程的Flink集群中,我们不应该以一个agent的坏状态结束对不同分区/任务槽中的agent信息的处理。我的问题是keyBy agentId会将流划分为子流,并始终在指定的分区中处理它们,这样可以保持事件处理的顺序。

另外,另一个问题是,如果处理特定代理数据的分区出现异常/任务管理器,那么Flink如何知道在恢复后只请求那些代理事件。

共有1个答案

长孙智刚
2023-03-14

您将希望使用keyBy(objectId)按对象ID对流进行分区。

如果必须按事件时间对流进行排序,则有两个选项。可以使用windows创建在ProcessWindowFunction中排序(逐批)的事件批,也可以使用KeyedProcessFunction创建连续有序流。这里有一个例子。

Flink中的检查点是全局的。它们包括Kafka中的偏移量,以及分布式集群中的所有状态,这些状态是由于摄入了直到这些偏移量为止的输入而产生的。恢复包括重新启动集群、恢复集群的状态、将Kafka使用者重绕到检查点中记录的偏移量,以及从该点重播事件。注意,如果您的接收器不是事务性的,这可能会导致写入重复的结果。

至于第二个问题,如果只有一个任务管理器宕机也没关系。所有的任务管理器都将重新启动,并且它们都将从存储在最近的检查点中的偏移量倒带并恢复处理。检查点是全局的,覆盖整个集群--不支持部分恢复。

 类似资料:
  • 总之,我希望flatMap1()和flatMap2()按照我在事件中设置的时间戳的顺序被调用。但那不是真的。

  • 我有一个flink cep代码,可以从套接字读取数据并检测模式。假设模式(单词)为“警报”。如果单词alert出现五次或五次以上,则应创建一个警报。但我得到了一个输入不匹配错误。Flink版本为1.3.0。提前谢谢!!

  • 我们正在努力计算 1 分钟翻滚时间窗口内不同类型的事件的最大并发计数。 这些事件就像传感器数据,这些数据是从我们的桌面代理每分钟收集的,然而,一些代理得到了一个错误的时间戳,比如说,它甚至比现在晚了几个小时。 所以,我的问题是如何处理/删除这些事件,目前我只是应用过滤器(s = 我的第一个问题是,如果我不这样做,我怀疑这个坏的“未来”事件会触发窗口计算,即使是那些不完整的数据窗口 第二个问题是,我

  • 我正在尝试了解Apache Flink CEP程序,该程序用于监控数据中心中的机架温度,如Flink官方文档所述。但是当我按照步骤使用mvn clean package创建jar并尝试使用命令执行包时 但我有以下错误, 我尝试了给出这里描述的类路径的不同变体,但得到了相同的错误。有人能指出我在运行程序时的错误吗?

  • 我是Flink的新手,已经通过网站/示例/博客开始学习。我正在努力正确使用操作符。基本上我有两个问题 问题1:Flink是否支持声明性异常处理,我需要处理解析/验证/。。。错误? 我可以使用组织吗。阿帕奇。Flink。运行时。操作员。分类ExceptionHandler或类似的程序来处理错误 还是Rich/FlatMap功能是我的最佳选择?如果Rich/FlatMap是唯一的选项,那么是否有办法在

  • 我可以在Axon中顺序处理的两个事件之间放置一个序列(或以一定的时间间隔执行)。这两个事件同时创建。下面是示例事件。 因为我的第二个事件取决于第一个事件的执行结果。我正在使用RabbitMq发布消息。