3年前 (2021-07-30)  相关技术 |   抢沙发  232 
文章评分 0 次,平均分 0.0

什么是RabbitMQ

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

什么是Apache Kafka

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

Kafka与RabbitMQ的区别

Apache Kafka Vs 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

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册