码迷,mamicode.com
首页 > 其他好文 > 详细

RabbitMQ和kafka从几个角度简单的对比

时间:2015-09-11 19:28:56      阅读:400      评论:0      收藏:0      [点我收藏+]

标签:

RabbitMQkafka从几个角度简单的对比

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

1应用场景

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

kafkaLinkedin201012月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。

2架构模型

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

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

3吞吐量

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

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

4可用性

rabbitMQ支持mirorqueue,主queue失效,miror queue接管。

kafkabroker支持主备模式。

5集群负载均衡

 

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

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


RabbitMQ和kafka从几个角度简单的对比

标签:

原文地址:http://my.oschina.net/u/2329222/blog/505054

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!