kafka和rabbitmq啥区别,各自适合啥场景?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka和rabbitmq啥区别,各自适合啥场景?相关的知识,希望对你有一定的参考价值。

参考技术A RabbitMQ遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上,适合企业级的消息发送订阅,也是比较受到大家欢迎的。

kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。常用日志采集,数据采集上。

RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到consumer端,consumer循环从输入流读取数据)。rabbitMQ以broker为中心;有消息的确认机制。

kafka遵从一般的MQ结构,producer,broker,consumer,以consumer为中心,消息的消费信息保存的客户端consumer上,consumer根据消费的点,从broker上批量pull数据;无消息确认机制。

kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,具有O(1)的复杂度,消息处理的效率很高。

rabbitMQ在吞吐量方面稍逊于kafka,他们的出发点不一样,rabbitMQ支持对消息的可靠的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬盘。 在可用性方面, rabbitMQ rabbitMQ支持miror的queue,主queue失效,miror queue接管。 kafka kafka的broker支持主备模式。

kafka采用zookeeper对集群中的broker、consumer进行管理,可以注册topic到zookeeper上;通过zookeeper的协调机制,producer保存对应topic的broker信息,可以随机或者轮询发送到broker上;并且producer可以基于语义指定分片,消息发送到broker的某分片上。

rabbitMQ的负载均衡需要单独的loadbalancer进行支持。

activemq消息队列和kafka有啥区别

  能选择三种:
  
  1. ActiveMQ/ApolloMQ
  优点:牌消息队列使用Java语言编写JMS支持采用线程并发资源消耗比较主语言Java重点考虑
  缺点:由于历史悠久历史包袱较版本更新缓慢集群模式需要依赖Zookeeper实现新架构产品命名Apollo号称代ActiveMQ目前案例较少
  
  2. RocketMQ/Kafka
  优点:专海量消息传递打造主张使用拉模式集群、HA、负载均衡支持说句适合适合看没量
  缺点:所谓鱼熊掌兼放弃些消息间件灵性使用场景较窄需关注业务模式否契合否则山寨变相使用别扭除外RocketMQ没.NET客户端用RocketMQ身名门使用者态较毕竟消息量能达种体量公司直接购买阿云消息服务Kafka态完善其代码用Scala语言写靠性比RocketMQ低些
  
  3. RabbitMQ
  优点:态丰富使用者众前面踩坑AMQP协议领导实现支持种场景淘宝MySQL集群内部使用进行通讯OpenStack源云平台通信组件先金融行业运用
  缺点:Erlang代码Hold住? 虽Erlang集群化RabbitMQ高用面做起特别应手别相信广告
参考技术A KafkaRabbitMq通用意图消息代理都布式部署目消息语义模型定义假设非同我"AMQP 更熟"论点持怀疑态度让我用事实说看看用解决案解决问题

以上是关于kafka和rabbitmq啥区别,各自适合啥场景?的主要内容,如果未能解决你的问题,请参考以下文章

activemq消息队列和kafka有啥区别

React 和 Angular 各有啥优缺点,各自又适合啥开发场景

hbase和hive的差别是啥,各自适用在啥场景中

为啥要用kafka?kafka适用啥样的场景?

聊一聊rabbitMQ和kafka的应用场景

日志采集系统flume和kafka有啥区别及联系,它们分别在啥时候