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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本