同步消费群体

9o685dep  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(309)

我试图让我的头Kafka消费者,我想知道,如果下面的用例可以解决使用Kafka。
我的用例基本上是这样的:
我有一个流,我想被几个消费者同步消费。换句话说,我有第一个消费者开始消费流,然后另一个消费者稍后到达。我希望第二个消费者开始消费当前第一个消费者所在偏移量处的流。
我知道我需要把消费者分成两个不同的群体。但我不清楚:
关于如何或是否可能协调组偏移
如果我希望这样的协调任务会有延迟

hjqgdpho

hjqgdpho1#

这不是Kafka直接处理的问题(使用者组是在成员之间分配分区,而不是属性相同的偏移量),但是您可以为此做一些事情。您可以简单地创建另一个主题,在这个主题中,consumer1将发布消息读取的偏移量或副本(因此您需要bth consumer和producer),而您的另一个同步consumer将对此做出React—当然,这会有一些延迟。
你的用例是什么?为什么不能在不同的偏移量下消费呢?您难道不希望有一个使用者,然后将读取的消息发送到不同的进程,以便它们确实是同步的吗(无延迟)
你所说的同步是什么意思:consumer2(以及3个或更多)是否应该只使用与consumer1相同的消息(即不能使用更快的消息,我在前面的两个解决方案中都假设了这一点)虽然这是可能的,但最好知道这背后的原因,也许有更好的方法来处理数据

oxf4rvwz

oxf4rvwz2#

您不需要两个不同的组,所有消费者都可以查看一个主题。或者他们喜欢多少就多少。
抵消
消息通常由它们的到达日期来标识,因此所有的客户都需要告诉制作人“我上次访问是在10:00,给我所有新消息”。所以每个客户都需要跟踪的是最后检查哪个主题的时间。
延迟
在这一点上,这是一种“范围”。当然会有延迟,但这取决于环境,比如“有多少消费者”、“有多少主题”、“消息格式”等等。
那么你的用例可以用Kafka来解决吗
简而言之:是的。”一个消费者是否可以在另一个消费者离开的地方继续”,消费者之间可以交换最新的索引,当然这需要一些内部同步。Kafka本身并不关心消费者,因此它不会跟踪自己的最新指数。你需要做这项工作。另一种可能是实际使用消息(例如,一旦使用消息,就将其从队列中删除),因此每次另一个使用者访问队列时,都会保证收到另一个使用者留下的消息。当然,这取决于你的用例,你真的能从队列中删除你的消息吗。

相关问题