关于 Apache Kafka 的说明

Clarifications on Apache Kafka

我对 Apache Kafka 有几个问题。

  1. 能否将一个分区分配给同一组中的多个消费者?
  2. 偏移量存储在哪里?是在partition还是在consumer
  3. 就像生产者总是post将记录发送到主分区,然后记录被复制到其他分区,Kafka消费者是否从主分区读取数据?
  4. 可以说,消费者正在从分区中读取数据,而消费者是 运行 一个漫长的过程。在这种情况下,生产者更新分区的速度将快于消费者从同一分区消费的速度。有没有办法可以加快该分区的消耗?
  5. 我们能否在分区的提交日志中创建一个检查点,以便消费者可以从该特定检查点开始处理?如果我想从特定检查点开始执行审计,这将很有用?

Can a single partition be assigned to more than one consumer from the same group?

不,同一个消费者组中的一个消费者最多可以消费一个分区,如所述here:“这是通过将主题中的分区分配给消费者组中的消费者来实现的,这样每个分区仅由组中的一个消费者使用。"

Where is the offset stored? Is it in the partition or at the consumer.

每个消费者组的偏移量存储在一个名为 __consumer_offsets 的内部 kafka 主题中,如 here 所述:“每个组的协调器是从 的领导者中选出的内部偏移量主题 __consumer_offsets,用于存储提交的偏移量。"

Just like the producer always post the record to the lead partition and the records gets replicated to other partitions, Does Kafka consumer reads the data from the lead partition?

是的。领导分区是唯一的“面向客户端”的分区,如 here 所述:“'leader' 是负责给定分区的所有读写的节点。”。

编辑:

Is there a way we can speed up the consumption from that partition?

加速消费的措施是增加主题的分区,这样你就可以有更多的消费线程从该主题读取数据并并行处理数据。同时您需要确保您的数据在分区之间均匀分布。