5.5 kafka和rabbitmq全面对比分析

1、功能方面

1)Kafka可以认为是简单的用文件实现了队列的功能, 消息按顺序存储在文件中(写入磁盘), 需要消费者自己去记录当前读取到了哪个位置。

2)Rabbitmq则实现了多种类型的exchange, 多种类型的消息,既可以实现持久化存储(写入磁盘), 又可以实现非持久化存储(写入内存),还有ack机制,支持事务, 还提供了web界面直观的看到各种exchange、queue的情况,及其读写、并发等实时数据。

3)Kafka主要使用pull的方式进行消费,而rabbitmq则pull和push都实现了。

4)正因为kafka功能简单, 而rabbitmq功能复杂强大, 所以kafka更容易上手。

2、性能方面

Kafka的吞吐量更高, 主要有

1)Zero Copy机制,内核copy数据直接copy到网络设备,不必经过内核到用户再到内核的copy,减小了copy次数和上下文切换次数,大大提高了效率。

2)磁盘顺序读写,减少了寻道等等的时间。

3)批量处理机制,服务端批量存储,客户端主动批量pull数据,消息处理效率高。

4)存储具有O(1)的复杂度,读物因为分区和segment,是O(log(n))的复杂度。

3、可靠性方面

Rabbitmq有ack、事务等, 可靠性更高, 而kafka仅仅在消费者端保存了一个offset记录消费情况, 很容易出现多次消费的情况, 需要在逻辑层保证消费的幂等性

4、使用场景

Kafka本身具有较高的吞吐量, 可以对数据进行存储, 适合在对消息可靠性要求不高的场景下做缓冲(比如日志系统)。

Rabbitmq则功能更强大,但是并发和缓冲能力不如kafka, 适合在对可靠性和实时性要求高的情况下使用。另外目前还有不少rpc框架支持rabbitmq(比如直播、转账等) 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值