14 |性能之道:RocketMQ与Kafka高性能设计对比
文件布局
- 深入了解
- 翻译
- 解释
- 总结
RocketMQ和Kafka是当前最主流的两款消息中间件,它们在文件布局、数据写入方式和消息发送客户端等方面存在差异。Kafka以Topic/partition为主,实现文件顺序写,而RocketMQ追求极致的顺序写,不受topic和分区数量影响。在数据写入方式上,Kafka服务端采用FileChannel的transferTo方法,而RocketMQ支持内存映射与FileChannel两种写入方式。在消息发送方面,Kafka引入了批处理思想,节约了Broker端的CPU压力,但可能增加消息丢失的可能性。相比之下,RocketMQ在服务端进行消息组织和持久化操作。总的来说,Kafka追求批处理,提高吞吐量,但可能延长响应时间和增加消息丢失的可能性;而RocketMQ追求极致的顺序写,运维成本相对较低。文章通过对比两者在不同方面的设计和性能特点,帮助读者了解了它们的差异和适用场景。综合对比来看,在同等硬件配置下,Kafka的综合性能要比RocketMQ更为强劲。RocketMQ还有很大的进步空间,可以考虑优化顺序写机制以提高磁盘性能,以及优化消息发送方面以提高吞吐率。
《中间件核心技术与实战》,新⼈⾸单¥59
全部留言(6)
- 最新
- 精选
- Y a n g文件布局:更改commitlog副本为分区维度,充分利用磁盘性能。 数据写入方式:FileChannel调用transferTo而不是wirte,发挥块设备优势 客户端消息发送:加入缓存队列,存储格式的数据组装放在客户端,引入批处理思想
作者回复: 总结的非常到位👍
2022-07-28归属地:上海2 - xueerfei007又来催更了
作者回复: 求知欲太强了,我们一起加油
2022-12-15归属地:浙江 - 在路上事务消息方面,老师可以补充下吗
作者回复: 抱歉,kafka的事务消息我还没深入研究,感觉实现的非常复杂,里面还有类似读未提交等类似mysql那种事务隔离级别。但RocketMQ的事务消息,我比较熟悉,建议看一下我写的文章:https://mp.weixin.qq.com/s/9sIjic10mTzdTLaAnd4ckA
2022-11-29归属地:北京 - syz老师求助个问题, 在window server 2012下使用RocketMQ,日志清理时会宕机吗,谢谢 问题:历史项目在win下运行,运行一段时间kafka后日志清理时宕机 方案:win中装centos、使用网上kafka补丁版本、换RocketMQ
作者回复: 你好,这个问题我无法直接回答你,我目前的所有经验都是部署在centors中。但既然发生了,那说明某一个环节一定存在问题,这个时候,我们首先要拉取相关的日志。 rocketmq的日志,默认在用户的主目录下。{user_home}/logs/rocketmqlogs。 如果有日志,麻烦发我一下,我们可以继续探讨一下。
2022-08-04归属地:上海 - 麻婆豆腐首先文件组织方式可以考虑更多的利用磁盘的IO。 数据写入采用零拷贝。 数据发送可以客户端组织数据来提高吞吐。
作者回复: 嗯,对的,我也有一个想法,我的想法是希望对commitlog进行分组,不同的分组,地位平等,一个主题申请后,就会对应一个分组,而且不可更改,这样对整个rockemq的存储体系不会有大的改变,只需要对外面进行包一层,我们就可以通过调整分组,来提高commitlog的并发写入,重复发挥出磁盘IO的优势。
2022-07-23归属地:上海3 - 芋头rocketmq如何通过commitlog构建队列文件的?本文漏了对比消费端的情况2023-05-29归属地:广东