kafka消息顺序并发处理问题

开拓者 发表于: 2019-09-05   最后更新时间: 2019-09-05 13:59:14   2,107 游览

kafka入门中有这么一句话:

用过传统的消息系统的同学肯定清楚,消息的顺序处理很让人头痛。如果只让一个消费者处理消息,又违背了并行处理的初衷。 在这一点上Kafka做的更好,尽管并没有完全解决上述问题。 Kafka采用了一种分而治之的策略:分区。 因为Topic分区中消息只能由消费者组中的唯一一个消费者处理,所以消息肯定是按照先后顺序进行处理的。但是它也仅仅是保证Topic的一个分区顺序处理,不能保证跨分区的消息先后处理顺序。 所以,如果你想要顺序的处理Topic的所有消息,那就只提供一个分区。

我想问:kafka要保证顺序,就只提供一个分区,那就只有一个消费者,不是也没有并行吗?哪里做到更好了?

发表于 2019-09-05

其实官方想表达的意思是,每个分区都是保证顺序的,通过业务属性把消息分到不同的分区之中。
并行顺序的硬伤是消费者的能力参差不齐,有的处理的快,有的慢,最终导致了消息无法有序。

你的答案

查看kafka相关的其他问题或提一个您自己的问题