apache-kafka - 消费者偏移是在消费者组级别还是在该消费者组内的单个消费者管理?
问题描述
我试图找出在消费者群体层面是否也有任何抵消。Consumer Offset 是在消费者组级别还是在 Kafka 中该消费者组内的单个消费者?
解决方案
在 ConsumerGroup 级别跟踪偏移量。
想象一下,您在一个 ConsumerGroup 中有 4 个消费者线程从一个具有 4 个分区的主题中消费。如果您现在停止所有 4 个线程并仅重新启动具有相同组的单个线程,则一个线程将知道所有 4 个线程停止消耗的位置并从那里继续。
“你是说一个偏移量(基本上是一个共享的 int/long 值)将由一个消费者组中的所有消费者共享/更新?”
是的,这是正确的。请记住,主题的单个分区只能由组中的一个消费者线程读取。同一个 ConsumerGroup 的两个消费者线程永远不会同时消费一个主题分区。消费者组的偏移量存储在名为 的内部 Kafka 主题中__consumer_offsets
。在本主题中,您基本上有一个键/值对,其中您的键基本上是
- 消费者组
- 话题
- 主题内的分区
你的价值就是偏移量。此内部__consumer_offsets
主题可供所有消费者使用,因此信息是共享的。
推荐阅读
- objective-c - 如何通过 macOS 命令行工具使用 Apple 的 GameController 框架?
- java - 确定方法是否需要是静态的、私有的或非静态的
- python - 如何从链接获取文件大小而不用 python 下载?
- javascript - JavaScript 对象是空的
- ruby-on-rails - Rails 中的 PDF 发票和邮件程序
- go - 重用来自 OpenSSH 客户端创建的套接字的连接
- c# - 如何使用循环创建轮播 Microsoft Bot Framework
- java - 检查后的空对象引用!= null
- javascript - 我可以从变量中导出默认值吗?
- python - 新的 Pandas 文件显示旧 pandas 的索引