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

我们可以向多个Kafka分区重新发送消息吗

子车俊哲
2023-03-14

我有一个有状态的应用程序,它维护与用户的会话。此应用程序有 5 个实例。

以下是主题:
所有主题都有5个分区。

主题1
topic2

Topic1和topic2分别用于建立州商店和全球故事。这两个主题都使用用户名作为消息键。这些主题中的数据由应用程序实例本身生成。

现在,另一个应用程序使用与消息键相同的用户名向topic3生成数据。

我的期望是它将进入同一个分区,该分区由在其本地状态存储中拥有该用户的实例使用。这是对的吗?

对于每条消息,它也应该由拥有此用户会话的其他实例处理。那么,如果实例找到被其他实例监听的分区并将消息转发到其他分区,这是正确的设计吗?

这是一个可伸缩的设计吗?还是最好将所有的消息广播到所有的分区(diff consumer group)并由实例决定是否处理它

共有1个答案

颛孙俊
2023-03-14

我不确定您是否真的需要将数据发送到多个分区。。。

  1. 如果您有GlobalKTable(或global-store),则每个实例都将读取所有主题分区,从而在本地实现数据的完整副本。(因此,如果您真的使用交互式查询,则不会进行远程调用,因为所有数据都是本地的。)

因此,您剩下两个(常规)输入主题。

 类似资料:
  • 问题内容: 是否可以将Oracle JDK随附的 tools.jar 与依赖于它的商业产品一起分发(即,根据Oracle许可条款,在法律上)?是或否,请提供参考以证实您的答案。 问题答案: 根据我的阅读,是的,但有一些警告: 您必须仅通过“ javac字节码编译器”(包括tools.jar;)重新分发整个Oracle JDK或整个JRE。允许重新分发与您的应用程序捆绑在一起。 重新分发的JDK或J

  • 我有一个应用程序,它定期生成原始JSON消息数组。我能够使用avro-tools将其转换为Avro。我这样做是因为由于Kafka-Connect JDBC接收器的限制,我需要消息包含模式。我可以在记事本上打开这个文件,看到它包括模式和几行数据。 现在,我想将其发送到我的中央Kafka代理,然后使用Kafka Connect JDBC接收器将数据放入数据库。我很难理解我应该如何将这些Avro文件发送

  • 在Kafka文献中: Kafka的处理方式不同。我们的主题被划分为一组完全有序的分区,每个分区在任何给定时间都由一个使用者使用。这意味着消费者在每个分区中的位置只是一个整数,即要消费的下一条消息的偏移量。这使得消耗量的状态非常小,每个分区只有一个数字。这种状态可以定期检查。这使得消息确认的等价物非常便宜。 然而,按照同一份文件中的快速入门指南,我很容易就能: 使用单个分区创建主题 创建一个游戏机制

  • 我是Kafka和quarkus的新手,我想在处理用户请求后向Kafka主题发送消息。 我已经浏览了Quarkus-快速入门中提供的kafka示例。我已经尝试使用KafkaMessage 但我得到了一个结果,那就是不断地向Kafka主题发送消息。 我想知道是否有其他方法或我的代码是否有任何问题。 帮助感谢

  • 我有以下配置: 一个具有 2 个分区的 kafka 主题 一个动物园管理员实例 一个 kafka 实例 具有相同组 ID 的两个使用者 Flink 作业片段: 方案 1: 我在eclipse上写了一个flink job (Producer ),它从一个文件夹中读取一个文件,并在kafka主题上放置msgs。 所以当我使用eclipse运行这段代码时,它工作得很好。 例如:如果我放置一个有100条记

  • 我有一个Kafka系统,看起来像这样(所有消费者都在一个消费者群体中): 在每个消费者中,我轮询消息,然后进行昂贵的计算(从1到60秒)。如果操作成功,我将提交消费者。 在我提交之前,另一个使用者是否会开始处理相同的消息?我需要保证,一旦消息被拾取,它就会被只执行一次 - 除非处理中途失败。