有没有办法在单个消费者的kafka主题的分区之间维护消息排序?

Pra*_*nay 7 streaming apache-kafka kafka-consumer-api

我们正在开发一个基于kafka的流式传输系统,其中生产者将在其主题内生成多个分区,并且单个消费者将从该主题中消费.我知道kafka在分区内维护消息顺序,但我们是否可以在主题内的分区之间维护全局消息顺序?

ser*_*jja 4

简短的回答:不,Kafka 不提供分区之间的任何排序保证。

长答案:我不太明白你的问题。如果您说只有一个消费者在使用您的主题,那么为什么该主题中会有超过 1 个分区,并且要重新发明轮子来维持分区之间的顺序?如果你想为未来的增长留出一些空间,例如添加另一个消费者来消费部分分区,那么你将不得不重新考虑你的“全局消息顺序”想法。

您真的需要按顺序处理所有消息吗?或者也许您可以按客户端/应用程序/任何内容进行分区并维护每个分区的顺序?在大多数情况下,您实际上并不需要全局消息顺序,而只需正确分区数据即可。

维护多个消费者之间的秩序是一个非常难解决的问题,即使正确解决,你也只会忽略 Kafka 的所有好处。