卡夫卡:同一群体中的多个消费者

时间:2018-02-01 15:31:48

标签: apache-kafka kafka-consumer-api

我们假设我有一个Kafka群集,其中有几个主题分布在多个分区上。此外,我有一组应用程序充当Kafka的客户端。该集群中的每个应用程序都有一个订阅同一组主题的客户端,这些主题在整个集群中是相同的。此外,每个客户端共享相同的Kafka组ID。

现在,谈谈提交模式。我真的不想手动指定偏移量,但我也不想使用自动提交,因为我需要在从Kafka接收数据后进行一些处理。

通过这个解决方案,我希望发生不同消费者收到的相同数据"问题,因为我在阅读(消费)之前没有指定偏移量,而且我从不同的客户端同时读取数据。

现在,我的问题是:什么是摆脱多次读取的解决方案?我想到了几个选项:

1)独家(顺序)Kafka访问。在一个消费者承诺阅读之前,没有其他消费者访问Kafka。 2)以某种方式在每次读取之前指定偏移量。假设读取可能失败(并且不会提交偏移量),我甚至不知道如何做到这一点 - 我们需要一些复杂的分布式偏移存储。

我想请有经验的卡夫卡人推荐一些能够实现我需要的行为。

1 个答案:

答案 0 :(得分:0)

每个分区仅由一个客户端使用 - 具有相同组ID的另一个客户端无法访问该分区,因此并发读取不会发生...