Apache kafka 如何按顺序(按时间戳的顺序)使用多分区卡夫卡主题中的数据

Apache kafka 如何按顺序(按时间戳的顺序)使用多分区卡夫卡主题中的数据,apache-kafka,kafka-consumer-api,kafka-producer-api,Apache Kafka,Kafka Consumer Api,Kafka Producer Api,我知道,当一个主题有多个分区时,Kafka将无法保证数据的顺序。但我的问题是:-我需要一个事件主题(生成事件的用户活动)有多个分区,因为我希望多个使用者组使用该主题中的数据。 但有时我需要引导整个数据,也就是说,从头到尾读取完整的数据,然后根据卡夫卡中的历史信息重建事件图,然后我失去了顺序,这造成了问题。 一种方法可能是在Map-Reduce范式中处理它,在这种范式中,我根据时间对数据进行映射,并对其进行排序和使用。 是否有人遇到过类似的情况/问题,并愿意帮助我找到正确的方法/解决方案 提前感谢

我知道,当一个主题有多个分区时,Kafka将无法保证数据的顺序。但我的问题是:-我需要一个事件主题(生成事件的用户活动)有多个分区,因为我希望多个使用者组使用该主题中的数据。 但有时我需要引导整个数据,也就是说,从头到尾读取完整的数据,然后根据卡夫卡中的历史信息重建事件图,然后我失去了顺序,这造成了问题。 一种方法可能是在Map-Reduce范式中处理它,在这种范式中,我根据时间对数据进行映射,并对其进行排序和使用。 是否有人遇到过类似的情况/问题,并愿意帮助我找到正确的方法/解决方案


提前感谢。

根据kafka文档,不保证整个分区的全局排序,因此您可以创建N个分区和N个使用者。根据数据类型创建分区,即类别A的所有类型的数据都应放在一个分区中,因为分区中维护的消息顺序,您可以在单独的使用者和过程数据中使用这些消息


我浏览了一些博客,它们说缓冲这些消息并对这些消息应用排序逻辑,但这似乎不是一个好的做法,因为其中一个分区可能会很慢,消息在某些情况下会很晚,您需要在每个新消息到达时对消息进行排序

我需要为一个事件主题(生成事件的用户活动)设置多个分区,因为我希望多个使用者组使用该主题中的数据
请注意,不需要设置多个分区来支持使用者组,只有在每个消费者组需要多个消费者时,分区才是必需的。每个分区可以有任意数量的用户组。哦,是的。我当时在想什么。我一定要再看一遍卡夫卡的文档。非常感谢你的帮助!!还有一条评论:卡夫卡订购保证是按偏移量而不是按时间戳。因此,如果时间戳是升序的,则只能读取“按时间戳排序”的数据,但不能保证这一点。默认情况下,生产者为消息设置时间戳,因此,即使您有一个分区但有多个生产者,数据也可能不是按时间戳顺序写入的。如果您需要保证时间戳也是按分区排序的,那么仍然可以将代理/主题设置从
CREATE\u TIME
更改为
LOG\u APPEND\u TIME
,但这当然也会更改时间戳的语义。