我有一个kafka用户,该用户正在使用多个主题(30+)和每个主题6个分区。我想学习单个消费者如何从多个主题(和分区)中消费,以及如何安排要消费哪个主题,分区,偏移量?
我正面临消费者滞后的问题,并想从多个主题中详细了解消费者的消费方式。
Will it start multiple threads ?
Will it schedule itself between partitions ?
What kind of scheduling it will use
我的问题与单个消费者从多个主题中消费有关。假设所有主题均加载了1M条记录,而单个使用者必须处理这些记录。它将以什么顺序从主题中读取内容(我是指首先选择哪个主题/分区,等等)
任何指向kafka内部构件的链接都会有所帮助吗?
答案 0 :(得分:0)
它将启动多个线程吗?
对于Java Consumer API,否。仅创建一个线程(心跳线程除外)来获取记录。
它会在分区之间调度自己吗?
提取程序按主题分区进行批处理。假设您有三个主题:t1,t2和t3,每个主题都有两个分区。它可能最终会像t3-1,t3-0,t2-0,t2-1,t1-0,t1-1之类。
它将使用哪种计划
基本上,它使用循环策略来确保公平。
似乎没有内部链接公开它们。有关详细信息,请参见SubscriptionState和PartitionStates。