【发布时间】:2019-05-18 00:28:49
【问题描述】:
我有一个 Kafka 主题和该主题的五个分区。将有5个消费群体。每个消费者组都有一个使用该主题的服务实例。
对于 Kafka 中的同一条记录,每个消费者的偏移量是否相同?
【问题讨论】:
标签: apache-kafka kafka-consumer-api
我有一个 Kafka 主题和该主题的五个分区。将有5个消费群体。每个消费者组都有一个使用该主题的服务实例。
对于 Kafka 中的同一条记录,每个消费者的偏移量是否相同?
【问题讨论】:
标签: apache-kafka kafka-consumer-api
偏移量是消息进入分区时由代理分配的,因此它是唯一的,并且与消费者(和消费者组)无关。它标识记录在分区内的唯一位置。 另一方面,从特定分区读取的每个消费者(在消费者组中)将跟踪自己的偏移量,这将不同于消费者(在其他消费者组中);在这种情况下,偏移量概念用于跟踪分区内从中读取消息的位置。当然它总是一个消息偏移量。
【讨论】:
offset 在生产者上下文和消费者上下文中是不同的吗?假设生产者为消息提供了偏移量5。当消费者读取该消息时,它只是将偏移量 5 标记为已读。它们有何不同?
如果您指的是消息的顺序,那么通过偏移量,是的。对于所有消费者来说都是一样的,因为排序是由生产者和经纪人决定的。因此,如果主题中有 msg-1、msg-2、...、msg-1000,那么所有 5 个消费者都会以特定顺序消费那些。但消费速度可能会有所不同。它有很多决定消费率的变量(例如网络延迟、网络拓扑、消费者逻辑等)。
【讨论】: