Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 应用程序实例a';无法使用应用程序实例B删除s状态存储_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Apache kafka 应用程序实例a';无法使用应用程序实例B删除s状态存储

Apache kafka 应用程序实例a';无法使用应用程序实例B删除s状态存储,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,据我所知,状态存储是每个应用程序实例的本地存储(re:partition)。。。。从文件中 因为Kafka Streams对数据进行分区以进行处理,所以应用程序的整个状态分布在应用程序运行实例的本地状态存储中 我有一个用例,其中我只需要有任何包含特定值的任意键(我们称之为value123)。如果接收到另一个keyB/value123消息,并且该value123相同,但之前具有不同的密钥(keyD),则需要删除旧的keyD/value123 问题是,我只收到新的键/值关联。我没有收到旧密钥的“墓碑

据我所知,状态存储是每个应用程序实例的本地存储(re:partition)。。。。从文件中

因为Kafka Streams对数据进行分区以进行处理,所以应用程序的整个状态分布在应用程序运行实例的本地状态存储中

我有一个用例,其中我只需要有任何包含特定值的任意键(我们称之为value123)。如果接收到另一个keyB/value123消息,并且该value123相同,但之前具有不同的密钥(keyD),则需要删除旧的keyD/value123

问题是,我只收到新的键/值关联。我没有收到旧密钥的“墓碑”消息-因此我必须暗示墓碑,因为新密钥刚刚到达主题,具有相同的值。如果密钥/值位于另一个应用程序实例的状态存储中,则无法访问(删除)该密钥/值,因为每个实例的状态都是本地的。我需要逐出旧数据。我怎样才能做到这一点

换个角度来看:


如果带有键a的消息进入转换器,并且该转换器的任务是清理状态,以确保没有其他键具有该值。。。假设键A的值当前与键B“关联”。我需要从KTable/state存储中删除键B,以便键A现在可以是唯一与值关联的对象。我不能保证密钥B被分配到与密钥A相同的分区。如何从密钥A的分区中删除密钥B。Kafka Streams应用程序的实例可以使用RPC-进行通信


您可以通过创建自定义RPC端点和构建逻辑来查询其他实例,以从远程状态存储中删除该值(如果找到)。

Kafka Streams应用程序的实例可以使用RPC-进行通信


您可以通过创建自定义RPC端点并构建逻辑从远程状态存储中删除该值(如果找到)来查询其他实例。

我可以通过将密钥切换到其他数据点并使用新的2.5.0功能通过外键连接2ktables来解决问题。这将控制输出,因为一旦新记录使用相同的键(但不同的外键)进入,我的另一个ktable将不会加入,因为外键已更改

我使用了这两种资源:


我可以通过将密钥切换到其他数据点并使用新的2.5.0功能通过外键连接2kt表来解决问题。这将控制输出,因为一旦新记录使用相同的键(但不同的外键)进入,我的另一个ktable将不会加入,因为外键已更改

我使用了这两种资源:


听起来是一个非常昂贵的解决方案。因为用户正在寻找一个值,所以有必要检查所有其他实例,并进行全表扫描。听起来这是一个非常昂贵的解决方案。因为用户正在寻找一个值,所以有必要检查所有其他实例,并进行全表扫描。