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

Kafka流:从具有多个分区的主题读取

孙和安
2023-03-14

我有一个带有2个分区的源主题,我正在用同一个应用程序启动2个kafka streams应用程序。id,但不同的接收器主题。

1) 这两个应用程序实例是否会从不同的分区接收数据?

2)如果其中一个应用程序被杀死,另一个实例会自动从两个实例中消耗吗?

3) 我如何证明上述情况?

共有2个答案

汤乐家
2023-03-14

1) 这两个应用程序实例是否会从不同的分区接收数据?

2)如果其中一个应用程序被杀死,另一个实例会自动从两个实例中消耗吗?

对(但请记住,其他实例现在可能会将输出数据发送到自己的实例,而不是原始实例的输出主题。)

3) 我如何证明上述情况?

您可以检查应用程序的日志(Kafka Streams将记录关于每个实例的主题/分区/流任务的信息),您可以运行集成测试等。

颛孙麻雀
2023-03-14

Kafka Streams使用相同的使用者库,因此行为应该与您描述的相匹配-如果您有两个应用程序,则每个应用程序都将使用分配给它的分区,如果一个被终止,则活动应用程序将处理来自所有分区的数据。。。

例如,可以通过运行应用程序来证明这一点——在最简单的情况下,只需为消耗的数据打印不同的前缀,并提交键控值,这样您就可以区分何时将一条消息发送到一个分区,何时将消息发送到另一个分区。。。

 类似资料:
  • 我们希望使用Kafka connect sink连接器将消息从Kafka复制到Mongo DB。在我们的用例中,我们有多个主题,每个主题都有一个分区(主题的名称可以用正则表达式表示,例如topic.XXX.name)。这些主题的数量在不断增加。我想知道Kafka connect架构是否适合这个用例。如果是这样,如何配置它的增益高可缩放性和并行性?任务是什么。最大值?工人数量?

  • 我们使用的是 Kafka 2.5.1 版本集群。最近注意到其中一个主题分区数据大小不均匀。与其余分区相比,一个特定分区的大小增加了 300%。这在群集中造成了不均衡的磁盘利用率。 已验证使用者滞后,看起来像其他分区一样正常 此外,我们使用默认分区程序和设置为默认值的“metadata.max.age.ms”配置,即 300000ms(5 分钟) 我们是如何使分区数据均匀分布的?

  • 我们有一个传入的kafka主题,多个基于Avro模式的消息序列化到其中。 我们需要将Avro格式的消息拆分为多个其他kafka主题,基于某个公共模式属性的值。 想了解如何实现它,同时避免在汇流平台上构建中间客户端来进行这种拆分/路由。

  • 有一个16个分区的Kafka主题 使用给定的消费者组名称,我们目前正在启动单个消费者来阅读该主题。 > 单个消费者是否从该主题的(仅)读取?如果带有消息为空,消费者是否从下一个分区开始读取(...等等)? 我们可以选择启动多个消费者(使用相同的消费者组名称)来读取相同的主题(有16个分区)。为了并行读取多个分区,可以维护多少消费者?

  • 我在Kafka Topic内部有500万条消息。 我必须加入具有相同分区密钥的消息作为单个消息的一部分,并发送给消费者主题[例如:对于密钥1234-Messge1,消费者应该收到单个消息而不是100万消息] Kafka端是否有可用的Kafka API,使用它我可以读取组中具有相同Partition键的所有消息,而不是像传统的spring boot Kafka Listener那样一次读取单个消息。

  • 给定一个将消息发布到两个不同主题的Kafka流拓扑,是否可以保证在这两个分支中执行各个步骤的顺序,或者这些分支是完全分开并并行执行的? 在本例中,是否会在调用< code>mapTwo或向output-topic-two发布消息之前执行< code>mapOne并发布到output-topic-one?换句话说,能否保证在消息发布到output-topic-two之前完成< code>mapOne