Apache kafka 流-如何增量处理RDBMS更新和删除事件

Apache kafka 流-如何增量处理RDBMS更新和删除事件,apache-kafka,spark-streaming,google-cloud-dataflow,flink-streaming,apache-beam,Apache Kafka,Spark Streaming,Google Cloud Dataflow,Flink Streaming,Apache Beam,我们正在尝试重新设计当前的数据管道,并考虑流媒体是否可以作为数据移动的替代方案。RDBMS事件包括插入、更新和删除现有数据以及历史数据。所有这些事件都可以具有唯一标识它们的键。在处理这些事件时,正确性和完整性非常重要,在某种程度上可能会牺牲延迟。i、 e.我们需要基于某些键在微批次中处理事件,并且我们需要确保该键不再有延迟事件(近似、启发式等都可以)。此外,此事件没有顺序。i、 e.键1、键2数据可以同时到达。在某一点上,键1的所有记录都将到达,而在另一点上,键2的所有数据都将到达。问题是如何以

我们正在尝试重新设计当前的数据管道,并考虑流媒体是否可以作为数据移动的替代方案。RDBMS事件包括插入、更新和删除现有数据以及历史数据。所有这些事件都可以具有唯一标识它们的键。在处理这些事件时,正确性和完整性非常重要,在某种程度上可能会牺牲延迟。i、 e.我们需要基于某些键在微批次中处理事件,并且我们需要确保该键不再有延迟事件(近似、启发式等都可以)。此外,此事件没有顺序。i、 e.键1、键2数据可以同时到达。在某一点上,键1的所有记录都将到达,而在另一点上,键2的所有数据都将到达。问题是如何以有意义的方式处理键控数据。完整性同样重要。我们可以按增量累加结果,但在获得给定密钥的完整数据之前,它不会有用

我可以想到的一种方法是使用no-sql存储来存储此事件,使用主键作为行键,并在no-sql存储上执行幂等更新。但我认为它还必须保持关键数据更改的状态,并使下游用户可以使用这些数据,以便他们知道更改了哪些数据。他们现在可以从任何sql存储中读取这些数据。但现在的问题是,并没有sql存储是易变的,所以下游可能会处理不一致的数据

另一种方法是不依赖非sql,而是以某种方式处理流外数据。我正在阅读一些流处理的概念,如固定滑动窗口、会话窗口、水印。但我看不出这些措施是否能解决眼前的问题。可能是我需要基于数据(键)和
publisher发出了一些信号,表明每一批事件都已完成?

我把这个项目放在一边,但我查阅了很多关于googledataflow、spark streaming和apachebeam的文档。风暴和顶点在这一点上似乎太复杂了


有一些概念,如
水印
触发器
,看起来很有希望告诉您窗口何时完成以及何时开始处理。我可以不断累积事件,直到我收到每个流的水印事件,告诉我开始处理。您可能需要更改这些事件的数据源或发布者以发送此“事件完成”事件。这可能只是谜题的第一部分。一旦有了定制的事件窗口,在开始处理或更新/删除数据存储中的条目之前,您可能需要查看这些事件并从数据存储(hbase、cassandra)中提取其他数据;此外,如果您有更多的下游用户,那么您必须向下游传达自定义窗口或上游处理中完成的更改,因为您已经有了该事件,因此任何下游都不难访问这些更改。您可能只需要对这些事件制定某种标准,以便在多个消费者中识别它们,如客户id、事务id、时间段等下游消费者。

我已经将此项目放在一边,但我查阅了大量有关google数据流、spark流和apache beam的文档。风暴和顶点在这一点上似乎太复杂了


有一些概念,如
水印
触发器
,看起来很有希望告诉您窗口何时完成以及何时开始处理。我可以不断累积事件,直到我收到每个流的水印事件,告诉我开始处理。您可能需要更改这些事件的数据源或发布者以发送此“事件完成”事件。这可能只是谜题的第一部分。一旦有了定制的事件窗口,在开始处理或更新/删除数据存储中的条目之前,您可能需要查看这些事件并从数据存储(hbase、cassandra)中提取其他数据;此外,如果您有更多的下游用户,那么您必须向下游传达自定义窗口或上游处理中完成的更改,因为您已经有了该事件,因此任何下游都不难访问这些更改。您可能只需要在这些事件上使用某种标准来跨多个消费者识别它们,如客户id、事务id、时间段等下游消费者。

您是否尝试过任何流媒体引擎,如@apache apex:?我还没有。看看spark流媒体和google数据流。我已经更新了我的问题来解释用例。你知道apex实现的任何特定概念对我的用例有帮助吗?你有没有尝试过像@ApacheApex:这样的流媒体引擎?我还没有。看看spark流媒体和google数据流。我已经更新了我的问题来解释用例。您知道apex实施的任何具体概念对我的用例有帮助吗?