apache-kafka - pulsar和kafka在消费方面有什么区别?

标签 apache-kafka kafka-consumer-api apache-pulsar

为了消费来自 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/

相关文章:

apache-spark - 将数据帧写入kafka pyspark

apache-kafka - Kafka-是否可以更改Topic的分区数,同时保持对生产者和消费者透明的更改?

apache-kafka - 具有仲裁者/证人/观察者的多 DC 中的 Kafka 领导者选举

hazelcast-jet - Apache Pulsar 的 Hazelcast Jet 连接器作为源

java - 在嵌入式独立环境中测试 apache pulsar 功能

java - 将 BlockingQueue 传递给 Spring KafkaListener

java - 多个主题的 Kafka 消费者

apache-kafka - Kafka 消费者(组)触发再平衡的条件

java - Kafka 主题与分区主题

python - 无法安装 pulsar-client