【发布时间】:2019-06-19 14:34:52
【问题描述】:
我们正在努力使我们的 Kafka 消费者并行化,以处理更多的记录来处理峰值负载。我们已经在做的一种方法是在同一个消费者组中启动尽可能多的消费者。
我们的消费者处理目前为止同步的 API 调用。我们觉得让这个 API 调用异步会使我们的消费者处理更多的负载。因此,我们正在尝试使 API 调用异步,并在其响应中增加偏移量。但是,我们看到了一个问题:
通过使 API 调用异步,我们可能会首先获得最后一条记录的响应,并且到那时之前记录的 API 调用都没有启动或完成。如果我们在收到最后一条记录的响应后立即提交偏移量,则偏移量将更改为最后一条记录。与此同时,如果消费者重新启动或分区重新平衡,我们将不会收到在我们提交偏移量的最后一条记录之前的任何记录。这样一来,我们就会错过未处理的记录。
到目前为止,我们已经有 25 个分区。我们期待了解是否有人在不增加分区的情况下实现了并行化,或者增加分区是实现并行化的唯一方法(以避免偏移问题)。
【问题讨论】:
-
您没有提供足够的信息,您提供了这样一个事实,即记录似乎依赖于首先处理的先前记录,您需要解释数据结构以及为什么它依赖于先前记录,从松散的声音来看,您需要一起处理这些记录,或者建立一个同步该过程的机制。目前问题是太广泛了
标签: parallel-processing apache-kafka kafka-consumer-api consumer