Avro对单个Kafka主题的信息进行编码,单个分区。这些消息中的每一条都只能由特定的消费者使用。对于ex,关于这个主题的消息a1、a2、b1和c1,有3个消费者,分别名为A、B和C,每个消费者将获得所有消息,但最终A将使用a1和a2、b1上的B和c1上的C。
我想知道当在Kafka上使用avro时,这是如何典型地解决的:
看来每种选择都有利弊。我想知道是否有一个惯例,人们遵循或有一些其他的方法来解决这个问题。
这要看情况...
如果您只有一个单独的分区主题,唯一的选择是让每个使用者读取所有数据,并筛选使用者感兴趣的数据的客户端。在这种情况下,每个使用者都需要使用不同的group.id
来将使用者彼此隔离开来。
选项2当然是可能的,如果你能控制你正在阅读的输入主题。对于每个使用者,您可能仍然有不同的group.id
s,因为使用者似乎代表不同的应用程序,应该相互隔离。问题仍然是这是否是一个好的模型,因为分区的思想是提供水平扩展和数据并行处理;但是,如果每个应用程序只从一个分区读取,它似乎不符合这个模型。您还需要知道哪些数据进入哪个分区的生产者端和消费者端,以便正确地进行映射。因此,这意味着生产者和消费者之间的“协调”,这似乎是不可取的。
有人能帮我弄清楚这件事吗。 谢了!
在我的Spring Boot Kafka应用程序中,我有以下使用者配置: 消费者: 如果我理解正确的话,现在我有一个消费者的实例。我想增加post消费者的数量,假设有5个消费者将消费来自${kafka.topic.post.send}的不同(不同)消息,以加快消息消费。 它是否像添加工厂一样简单。setConcurrency(5) 至我的PostKafkAlisterContainerFactor
阅读主题中的所有分区: ~bin/kafka-console-consumer.sh--zookeeper localhost:2181--topic myTopic--从头开始 如何使用主题的特定分区?(例如使用分区键13) 以及如何使用特定分区键在分区中生成消息?有可能吗?
我正在用java编写一个简单的Kafka使用者,它被配置为读取多个主题。目前,让我们假设两个主题(topic1和Topic2),并为两个主题设置一个分区。 Kafka用户从topic1和Topic2读取的顺序是什么。如果这两个主题都有,假设已经发布了100条消息。 使用者首先从topic1读取所有消息,然后再从topic2读取? 用户按时间顺序阅读,将来自两个主题的消息混合在一起? 我看了Kafk
有一个16个分区的Kafka主题 使用给定的消费者组名称,我们目前正在启动单个消费者来阅读该主题。 > 单个消费者是否从该主题的(仅)读取?如果带有消息为空,消费者是否从下一个分区开始读取(...等等)? 我们可以选择启动多个消费者(使用相同的消费者组名称)来读取相同的主题(有16个分区)。为了并行读取多个分区,可以维护多少消费者?
生产者发送消息到一个有四个分区的主题。我们有一个消费者在消费来自这个主题的消息。应用程序在工作日一直运行周末例外:它不会在周末期间调用poll方法。 使用者配置:自动提交,自动提交时间为5s(默认)。 应用程序一直运行良好,直到一个星期天,当它重新开始调用poll方法。我们看到有数百万条消息从这个话题中被轮询出来。消费者基本上是轮询来自主题的所有消息。将新的偏移量与它在周末停止之前的偏移量进行比较