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

Kafka分割和生产者关系

阴波峻
2023-03-14

我有一个kafka集群,有三个代理和一个主题,复制因子为三个分区和三个分区。我可以看到,每个代理都有相同大小的所有分区的日志副本。这个主题有两位制作人。

有一天,我把一个制片人的写作量减少了一半。然后我发现所有三个代理的入站流量都减少了,这是意料之中的,但只有分区1的领导节点的出站流量减少了,我不明白。

由于复制,分区主管的出站流量减少。但是每个代理都是一个分区的领导者,为什么只有一个领导者的出站流量减少了呢?是否有可能创建者仅将内容写入一个分区?虽然我不这么认为。

共有1个答案

章宏恺
2023-03-14

假设您正在为KafkaProducer使用Default Partitioner,这意味着具有相同密钥的两个事件将被发送到同一个分区。

来自 Kafka文档

所有的读写操作都由分区的领导者完成,而追随者则像普通的Kafka消费者一样消费来自领导者的消息,并将它们应用到自己的日志中。

您可以通过跳过特定的键或键集来减少(来自生产者的)数据,这可能意味着特定分区没有数据。

这就解释了为什么领导者的出站流量减少(没有记录供关注者使用)

 类似资料:
  • 我有一个kafka streams应用程序 或 这是一个类,用于将消息分发到不同的分区,即使在kafka 2.4版本中使用相同的键 RoundRobinPartitioner具有以下实现: 我的分区器由完全相同的代码组成,但分区方法实现不同,我的代码块是: 当我这样配置时,消息在两种实现中都被分发到不同的分区,但决不使用某些分区。 我有50个分区,而分区14和34从未收到消息。我的分区不是没有价值

  • 我正在创建一个系统,其中前端服务将消息推送到Kafka请求主题,并为一些下游后端消费者(实际上是一个最终推送回Kafka的复杂系统)监听另一个响应主题,以处理请求消息并最终推进到“回应”话题。 我试图找出最优雅的方法来确保消费者监听适当的分区并收到响应,并且后端推送到前端消费者正在监听的分区。我们总是需要确保响应到达产生初始消息的同一个消费者。 到目前为止,我有两种解决方案,但都不是特别令人满意的

  • 在这种情况下,我是否需要求助于Kafka事务API来在消费者轮询循环中创建事务生产者,在该循环中,我在事务中执行:(1)处理消耗的记录和(2)在关闭事务之前提交它们的偏移量。在这种情况下,普通的commitsync/commitasync是否有效?

  • 一、生产者发送消息的过程 首先介绍一下 Kafka 生产者发送消息的过程: Kafka 会将发送消息包装为 ProducerRecord 对象, ProducerRecord 对象包含了目标主题和要发送的内容,同时还可以指定键和分区。在发送 ProducerRecord 对象前,生产者会先把键和值对象序列化成字节数组,这样它们才能够在网络上传输。 接下来,数据被传给分区器。如果之前已经在 Prod

  • Kafka文件说,幂等生产者是可能的,与相同的生产者会话,我无法理解这一点。 比方说,Kafka为每条消息添加序列号,最后一个序列号在Kafka中维护(不确定它维护在哪里)。 它是如何生成序列号的,它保存在哪里? 为什么当制作人崩溃并再次出现时,它不能保持序列? 我怎样才能使它在制作人会话之间真正幂等?

  • Kafka为每条消息生成偏移量。假设,我正在生成消息5,偏移量将从1到5。 但是,在事务生产者中,比如说,我产生了5条消息并提交,然后是5条消息但中止,然后是5条消息提交。 > 那么,最后提交的5条消息的偏移量是6到10还是11到15? 如果我不放弃或不promise呢。这些信息还会被发布吗? Kafka是如何忽略未promise的补偿的?因此,kafka提交日志是基于偏移量的。它是否使用事务使用