新kafka消费api的java优化多线程模型选择

ny6fqffe  于 2021-06-07  发布在  Kafka
关注(0)|答案(0)|浏览(221)

首先让我描述一下我的用例。
我有主题[t1。。。Kafka消费者需要订阅的。对于每个主题,通过它传递的所有数据在逻辑上都是相似的。假设不同主题中的数据没有任何相关性。但是一旦被消费,所有的数据不管主题是什么都会得到相同的处理,即使用bulkprocessor api将它们提供给elasticsearch。es被设置为多节点集群。
kafka消费者javadoc提到了两种不同的多线程方法。我倾向于第一种方法,即每个线程一个消费者模型。假设#partitions/topic=p,每个主题将有p个使用者线程。所以,总共会有n.p线程。如果每个线程都有独立的bulkprocessor,那么我可以选择手动控制提交的位置。万一处理器出故障,它会使我免于数据丢失。但缺点是,大容量处理器的数量可能过高,这可能会减慢elasticsearch的接收速度。
我在想的另一种方法是,每个主题只有一个线程,因此每个线程侦听p个分区并向一个大容量处理器写入。在这种情况下,我必须对偏移量使用auto-commit,并且可能会因为处理器故障而丢失数据。
我想知道哪种方法更好,或者有第三种方法,比这两种方法都好吗?
Kafkav0.9.0.x和es v2.3.x

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题