Kafaka与RabbitMQ之间最大的区别

239 阅读2分钟
  • Kafka 最适合用于从 A 到 B 的、中间没有复杂路由的流式传输,可达到最大的吞吐量。

它是事件溯源、流处理和将系统状态变更作为事件序列执行的理想选择。Kafka 也适用于处理多级流水线中的数据。

  • 而RabbitMQ 往往被用来处理高吞吐量和可靠的后台作业,以及应用程序之间和应用程序内部的集成和相互通信。

各项指标对比

RabbitMQKafka
性能每秒 4K-10K 条消息每秒 100 万条消息
消息持久化基于确认基于策略(例如,30 天)
数据事务性事务性的(需要额外的业务逻辑支持)
拓扑结构直接、扇出、主题订阅、基于标头基于发布/订阅
有效载荷大小没有限制默认 1MB 限制

另外,

数据流

RabbitMQ 使用独特的、有界的数据流。Apache Kafka 使用无界数据流,键值对不断流向分配的主题。

可扩展性和冗余

RabbitMQ 使用循环队列来重复消息。为了提高吞吐量和平衡负载,消息在队列之间分配。此外,它使众多消费者能够同时读取来自不同队列的消息。

Kafka 使用分区机制提供可扩展性和冗余。该分区在众多broker中被复制。如果其中一位broker挂了,客户端仍可由另一broker提供服务。

消息优先级

RabbitMQ 中具有优先级队列的概念,可以为消息赋予优先级。

在 Kafka 中,所有消息都具有相同的优先级,不能更改。


在 Kafka 和 RabbitMQ 之间做出决定可能会很棘手,尤其是当这两个平台每天都在改进并且优势越来越小的时候。

总的来说

Kafka 最适合需要最佳吞吐量的大数据用例,但 RabbitMQ 非常适合低延迟消息传递和复杂路由的情况。