文章评分
次,平均分 :
[收起]
文章目录
什么是RabbitMQ?
RabbitMQ是应用最广泛的通用开源消息代理。它于2007年发布,是消息传递系统的主要组件。目前,它用于流式处理用例。RabbitMQ能够处理后台任务或充当微服务之间的消息代理。它帮助web应用程序减少了负载。此外,它还减少了服务器对那些耗时的任务或资源的交付时间。
什么是Apache Kafka?
Apache Kafka也是一个开源的分布式发布/订阅消息系统。它于2011年发布,作为两个应用程序之间的中间存储。生产者将消息写入并存储在Kafka集群中。另一方面,使用者使用来自集群的消息。它还减少了重消息的缓慢传递。
Kafka与RabbitMQ的区别
参数 | Kafka | RabbitMQ |
分发 | Kafka消费者通过主题分区进行分发。每个使用者每次都使用来自特定分区的消息。每个队列实例都有多个使用者。 | 这些消费者被称为竞争性消费者,因为他们为了消费信息而相互竞争。但是,消息只能处理一次。 |
高可用性 | 借助zookeeper,管理Kafka集群的状态,支持高可用性 | 通过集群和高可用队列提供高性能的数据复制。因此,它还提供了高可用性。 |
性能 | 可以用更少的硬件在一秒钟内处理数百万条消息 | 也可以在一秒钟内处理数百万条消息,但它需要更多的硬件。 |
复制 | Kafka中有可用的复制代理,当主代理关闭时可以工作 | 在这里,队列不会自动复制。配置是必需的。 |
多订户 | 多个使用者类型可以向Kafka订阅多条消息 | 虽然消息路由到不同的队列,但队列中只有一个使用者可以处理消息 |
消息协议 | ApacheKafka支持原语(如int8、int16等)和二进制消息 | 这支持任何标准队列协议(如STOMP、AMQP、HTTP等) |
消息排序 | 消息排序只存在于分区内。它保证所有的数据流要么失败,要么一起通过,它通过一个AMQP通道维持数据流的顺序 | 它会在其队列逻辑中重新排列重传的数据包,这将防止使用者对缓冲区重新排序。 |
消息生存期 | 它包含一个日志文件,可以阻止任何时候的所有消息 | 由于它是一个队列,消息一旦被使用就会被删除,并接收到确认 |
架构 | 高度可扩展的发布/订阅分布式消息系统。它在Kafka集群中有代理、主题、分区和主题 | 一个通用的发布/订阅消息代理。它的体系结构不同于卡夫卡,因为它由队列组成 |
用例 | 主要用于流式传输数据 | web服务器主要用于对请求的即时响应 |
事务 | 支持那些显示读写过程的事务,对Kafka主题执行的模式 | 即使事务只允许单个队列,也不能保证原子性 |
语言 | Apache Kafka是用Scala和JVM编写的 | RabbitMQ是用Erlang编写的 |
路由 | 支持它支持复杂的路由方案 | 它不支持复杂的路由方案 |
开发经验 | 随着高速增长,它带来了良好的体验。但是,它只支持Java客户机。 | RabbitMQ拥有成熟的客户机库,支持Java、PHP、Python、Ruby等。 |
除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2177.html
暂无评论