消息队列服务RabbitMQ 和Kafka对比

业界对于消息的传递有多种方案和产品,本文就比较有表明性的两个MQ(rabbitMQ,kafka)进行阐述和作简单的对比。 架构

1.应用场景

  • RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。并发

  • kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。负载均衡

2.在架构模型

  • 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数据;无消息确认机制。大数据

3.吞吐量

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

  • rabbitMQ在吞吐量方面稍逊于kafka,他们的出发点不同,rabbitMQ支持对消息的可靠的传递,支持事务,不支持批量的操做;基于存储的可靠性的要求存储能够采用内存或者硬盘。 server

4.可用性

  • rabbitMQ支持miror的queue,主queue失效,miror queue接管。blog

  • kafka的broker支持主备模式。事务

5.集群负载均衡

  • kafka采用zookeeper对集群中的broker、consumer进行管理,能够注册topic到zookeeper上;经过zookeeper的协调机制,producer保存对应topic的broker信息,能够随机或者轮询发送到broker上;而且producer能够基于语义指定分片,消息发送到broker的某分片上。
  • rabbitMQ的负载均衡须要单独的loadbalancer进行支持。
相关文章
相关标签/搜索