【发布时间】:2019-03-21 08:14:08
【问题描述】:
我们有相关的消息。例如。假设我们有4条消息M1,M2,M1_update1,(应该在M1处理完后处理),M3(应该在M1,M2处理完后处理)。
在这个例子中,只有 M1 和 M2 可以并行处理,其他的必须是顺序的。我知道 Kafka 主题的一个分区中的消息是按顺序处理的。但是我怎么知道 M1,M2 已处理,现在是时候将 M1_update1 和 M3 消息推送到主题了? Kafka 是这种用例的正确选择吗?任何见解表示赞赏!
【问题讨论】:
-
这是一个有趣的问题。我们有一个类似的用例,其中消息分为两个语义组。组内的顺序无关紧要,但组之间存在顺序依赖关系,具体取决于实际消息。我认为从可扩展性的计算角度来看,我们如何将消息分成两组可能是一个糟糕的设计决策。我们试图对我们的问题找到更好的看法,以便我们可以利用流来实现可伸缩性。这意味着生产者必须决定哪些消息需要严格排序,并且这些消息必须推送到同一个分区。
-
然而..这个决定是计算密集型的,我们还不知道如何扩大规模。
标签: java spring apache-kafka kafka-consumer-api