Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 72.6MB ·虚拟内存 1299.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
RabbitMQ 是使用最广泛、通用和开源的消息代理。它于 2007 年发布,是消息传递系统中的主要组件。目前,它用于流式用例。 RabbitMQ 能够处理后台任务或充当微服务之间的消息代理。它帮助 Web 应用程序减少了负载。此外,它减少了那些耗时的任务或资源的服务器交付时间。
Apache Kafka 也是一个开源分布式发布/订阅消息系统。它于 2011 年发布,用作两个应用程序之间的中间存储。生产者将消息写入并存储在 Kafka 集群中。另一方面,消费者消费来自集群的消息。它还减少了大量消息的缓慢传递。
参数 | 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 等。 |
Apache Storm它是一个开源的实时流处理系统。 Apache Storm 主要用于固定传统流程。它可靠地处理无界流。它具有用于以拓扑形式设计风暴应用程序的 spouts 和 bolts。任何编程语言都可 ...