个性化阅读
专注于IT技术分析

apache kafka和rabbitmq的区别

本文概述

什么是RabbitMQ?

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

什么是Apache Kafka?

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

Apache Kafka vs.RabbitMQ

参量Apache KafkaRabbitMQ
DistributionKafka使用者通过主题分区进行分发。每个使用者一次消耗来自特定分区的消息。每个队列实例都有许多使用者。这些消费者被称为竞争性消费者, 因为他们彼此竞争以消费消息。但是, 该消息只能被处理一次。
High Availability借助zookeeper, 它可以管理Kafka群集的状态并支持高可用性。通过群集和高可用队列, 可以提供高性能的数据复制。因此, 它还提供了高可用性。
Performance它可以用更少的硬件在一秒钟内处理数百万条消息。它也可以在一秒钟内处理数百万条消息, 但是需要更多数量的硬件。
ReplicationKafka中有可用的复制代理, 当主代理关闭时可以使用。在这里, 队列不会自动复制。该配置是强制性的。
Multi subscriber多种使用者类型可以订阅许多消息到Kafka。尽管消息被路由到各种队列, 但是队列中只有一个使用者可以处理消息。
Message ProtocolsApache Kafka支持诸如int8, int16等原语和二进制消息。它支持任何标准队列协议, 例如STOMP, AMQP, HTTP等。
Message Ordering消息排序仅存在于分区内。它保证要么全部失败要么一起失败。它通过单个AMQP通道保持流的顺序。此外, 它还在其队列逻辑内对重发的数据包进行重新排序, 这将防止使用者对缓冲区进行重新排序。
Message lifetime它包含一个日志文件, 可随时阻止所有消息。由于它是一个队列, 因此一旦消耗掉的消息将被删除, 并收到确认。
Architecture高度可扩展的发布/订阅分布式消息传递系统。它在Kafka集群中具有代理, 主题, 分区和主题。通用发布/订阅消息代理。它的结构与Kafka不同, 因为它由队列组成。
Use Cases它主要用于流数据。Web服务器主要使用它来立即响应请求。
Transactions它支持那些表现出“读过程写”的事务。与Kafka主题之间执行的模式。即使事务只放一个队列, 它也不保证原子性。
LanguageApache Kafka是使用JVM用Scala编写的。RabbitMQ用Erlang编写。
Routing Support它支持复杂的路由方案。它不支持复杂的路由方案。
Developer Experience随着高增长, 它带来了良好的经验。但是, 它仅支持Java客户端。RabbitMQ带有成熟的客户端库, 它们支持Java, PHP, Python, Ruby等。

赞(0) 打赏
未经允许不得转载:srcmini » apache kafka和rabbitmq的区别
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏