我知道当主题有多个分区时,Kafka将无法保证数据的排序。但我的问题是: - 我需要为事件主题(用户活动生成事件)分配多个分区,因为我希望多个使用者组使用主题中的数据。 但有时候我需要引导整个数据,即从头到尾读取完整的数据,并从Kafka中的历史消息重建我的事件图,然后我失去了创建问题的顺序。 一种方法可能是在Map-Reduce范例中处理它,我根据时间映射数据并对其进行排序并使用它。 有没有人遇到类似的情况/问题,谁愿意帮助我找到正确的方法/解决方案。
提前致谢。
答案 0 :(得分:0)
根据kafka文档,不保证整个分区的全局排序,因此您可以创建具有N个使用者的N个分区。根据数据类型创建分区,即类别A的所有类型的数据都应放在一个分区中,因为在分区内维护的消息顺序可以在单独的使用者和过程数据中使用这些消息。
我浏览了一些博客,其中说缓冲这些消息并在这些消息上应用排序逻辑,但这似乎不是一个好习惯,因为分区之一可能是很慢的消息,在某些情况下消息延迟了,您需要进行排序当每条新消息到达时您的消息。