Kafka Vs RabbitMQ

什么是RabbitMQ?

RabbitMQ 是使用最广泛、通用和开源的消息代理。它于 2007 年发布,是消息传递系统中的主要组件。目前,它用于流式用例。 RabbitMQ 能够处理后台任务或充当微服务之间的消息代理。它帮助 Web 应用程序减少了负载。此外,它减少了那些耗时的任务或资源的服务器交付时间。

什么是 Apache Kafka?

Apache Kafka 也是一个开源分布式发布/订阅消息系统。它于 2011 年发布,用作两个应用程序之间的中间存储。生产者将消息写入并存储在 Kafka 集群中。另一方面,消费者消费来自集群的消息。它还减少了大量消息的缓慢传递。

Kafka 对比 RabbitMQ

Apache Kafka vs RabbitMQ

参数 Apache Kafka RabbitMQ
分布 Kafka 消费者通过主题分区进行分发。每个消费者一次消费来自特定分区的消息。 每个队列实例都有许多消费者。这些消费者被称为竞争消费者,因为他们相互竞争以消费消息。但是,消息只能处理一次。
高可用性 在zookeeper的帮助下,管理Kafka集群的状态,支持高可用。 通过集群和高可用队列提供高性能数据复制。因此,它还提供了高可用性。
性能 它可以用更少的硬件在一秒钟内处理数百万条消息。 它也可以在一秒钟内处理数百万条消息,但需要更多的硬件。
复制 Kafka 中有可用的复制代理,它在主代理宕机时工作。 在这里,队列不会自动复制。配置是强制性的。
多订阅者 多个消费者类型可以向Kafka订阅多条消息。 虽然消息被路由到不同的队列,但只有一个队列中的一个消费者可以处理消息。
消息协议 Apache Kafka 支持 int8、int16 等原语和二进制消息。 这支持任何标准队列协议,例如 STOMP、AMQP、HTTP 等。
消息排序 消息排序仅存在于分区内。它保证要么全部失败,要么一起通过。 它通过单​​个 AMQP 通道维护流的顺序。此外,它还在其队列逻辑内对重传的数据包进行重新排序,以防止消费者对缓冲区重新排序。
消息生命周期 它包含一个日志文件,可以随时阻止所有消息。 由于它是一个队列,一旦被消费的消息就会被移除,并收到确认。
架构 高度可扩展的发布/订阅分布式消息传递系统。它在 Kafka 集群中有代理、主题、分区和主题。 一个通用的发布/订阅消息代理。它的架构与 Kafka 不同,因为它由队列组成。
用例 主要用于流式传输数据。 Web 服务器主要使用它来立即响应请求。
交易 它支持那些表现出"读-处理-写?"的事务。向/从 Kafka 主题执行的模式。 即使事务只占用一个队列,它也不能保证原子性。
语言 Apache Kafka 是用 Scala 和 JVM 编写的。 RabbitMQ 是用 Erlang 编写的。
路由支持 支持复杂的路由场景。 不支持复杂的路由场景。
开发者体验 随着高速增长,它带来了良好的体验。但是,它只支持 Java 客户端。 RabbitMQ 带有成熟的客户端库,支持 Java、PHP、Python、Ruby 等。

下一章:Kafka 对比 Storm

Apache Storm它是一个开源的实时流处理系统。 Apache Storm 主要用于固定传统流程。它可靠地处理无界流。它具有用于以拓扑形式设计风暴应用程序的 spouts 和 bolts。任何编程语言都可 ...