rabbitmq vs kafka


RabbitMQ是一个可靠的、通用的消息中间件,支持多种协议如:AMQP, MQTT, STOMP, 等。执行后台或者长期任务是rabbitmq常见的使用方式;也可以用于微服务之间通信,避免传递消息的瓶颈。

kafka是一个消息总线,特点是能高吞吐量的接收数据流和重放。常用于需要迁移、处理或者分析大数据量的数据场景。例如:需要跟踪网站用户活跃度用于广告推送。另一个是用于数据迁移、转换等。

kafka可以看做是一个持久化的消息中间件,应用可以重复处理数据。kafka的路由规则比较简单。对于复杂的消息路由规则,rabbitmq是一个更好的选择。如果需要支持消费者离线或者消息低延迟,可使用kafka。

rabbitmq消息一旦确认后,就会从队列中删除。rabbitmq的队列在空的时候是处理最快的,而kafka及时保存了大量数据也仅消耗较低的负载。
kafka被设计用于持有和分发大量消息。
kafka支持水平扩容,而rabbitmq更多的是垂直扩容。
rabbitmq有良好的用户交互UI。


kafka为什么那么快
1.顺序读写,kafka的消息写后不需要更新,适合顺序写。
2.大量使用操作系统本身的缓存,使用系统缓存就不会存在GC问题,通过操作系统的Page Cache,Kafka的读写操作基本上是基于内存的,读写速度得到了极大的提升。
3.零拷贝, 使用了sendfile方法,允许操作系统将数据从Page Cache 直接发送到网络,只需要最后一步的copy操作将数据复制到 NIC 缓冲区, 这样避免重新复制数据。
通过这种 “零拷贝” 的机制,Page Cache 结合 sendfile 方法,Kafka消费端的性能也大幅提升。
这也是为什么有时候消费端在不断消费数据时,我们并没有看到磁盘io比较高,此刻正是操作系统缓存在提供数据。
4.分区分段+索引
5.批量读写
6.批量压缩

 

RabbitMQ 推模式(默认)和拉模式都支持

push更关注实时性,pull更关注消费者消费能力

kafka 拉模式,broker保存数据,数据量大,适合拉模式

参考链接

【RabbitMQ-4】拉模式和推模式——https://blog.csdn.net/qq_29595463/article/details/107859140

消息队列之推还是拉,RocketMQ 和 Kafka 是如何做的?——https://xie.infoq.cn/article/ce0507f41cfbe82baec09b128

posted @   sahara-随笔  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示