为了消费来自 Kafka 的数据,我们可以在一个主题上拥有多个消费者,完全解耦。那么,kafka 和 pulsar 之间共享差异的页面( https://streaml.io/blog/pulsar-streaming-queuing )上的无共享消费
是什么意思?
最佳答案
在他的博客中,Sijie 将共享消息称为排队。通过排队消息传递,可以创建多个使用者来接收来自单个主题的消息。哪个消费者收到消息是完全随机的。
使用 Kafka 实现消息传递模式的问题在于 Kafka 消费者标记他们已消费消息的方式。 Kafka 消费者使用所谓的高水位来进行消费者补偿。这意味着消费者只能说“我已经处理到这一点”,而不能说“我已经处理了这条消息”。
考虑这样一种场景:来自同一消费者组的多个 Kafka 消费者正在处理同一主题分区,其中一个消费者由于异常而失败,而另一个消费者则成功。由于 Kafka 没有内置方法来仅确认单个消息,并且仅使用高水位标记,因此失败的消息会被错误地标记为已消耗,而实际上它失败了,需要重新处理或发布到错误队列等。
为了避免这种情况,每个分区只需要一个消费者,这限制了主题的消费吞吐量。这反过来又要求您增加分区数量以满足吞吐量需求。
这个blog post有详细解释
关于apache-kafka - pulsar和kafka在消费方面有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55868587/