消费者端的并行处理和维护秩序-卡夫卡+骆驼



我有一个用例,我们使用Kafka中的数据。Kafka中的消息将与一个密钥相关联,以维护每个分区中的顺序。现在,当我使用这些消息时,我必须并行处理这些消息,而且我不应该错过按键分组的消息序列。

为了实现并行性,我们可以使用线程,但不能保证排序。在我们的用例中,订购永远不会受到影响。感谢在实现并行性+排序方面提供的任何帮助。

您描述的问题是分布式系统中非常典型的问题。例如,它在JMS中使用消息分组的概念进行处理。基本上,JMS代理提供了一种保证,即属于特定组的任何消息都将始终由一个公共使用者使用,以便(在组内(遵守FIFO顺序。

我不是卡夫卡专家,但我想应该存在类似的机制。

您所描述的内容完全由Confluent的并行消费者(PC(解决——您可以告诉它通过KEY进行处理,只要您想同时处理。通过使用PC,无论需要多长时间,您都可以并行处理所有密钥。它还将确保订单得到维护,并且记录ack被正确地提交回代理。

PC直接解决了这一问题,通过按键对输入分区进行分区,并并行处理每个键。它还跟踪每个记录的确认。看看GitHub上的Parallel Consumer(它是开源的BTW,我是作者(。

最新更新