Kafka 与 rabbitmq 对比

   2023-08-28 11:32:21

RabbitMQ

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(比如直播、转账等) 。

相关评论:
admin test
admin test

靡不有初|  当前时间:  |  网站运行时间:  |鲜克有终

今年剩余【农历】:

粤ICP备19080315号