分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正“之2
来源:互联网 发布:mysql如何删除主键 编辑:程序博客网 时间:2024/05/17 08:05
在前1篇,我讨论了RocketMQ与Kakfa的对比中,几个不太严谨的地方。本着严谨的精神,不偏袒任何一方,本篇想分析一下RocketMQ在Kafka的基础上,的确做的几个改进。有不对之处,敬请指正。
topic/partion数量对性能的影响
我们知道在Kafka中,是每个topic_partition一个文件。虽然每个文件是顺序IO,但topic或者partition过多,每个文件的顺序IO,表现到磁盘上,还是随机IO。
所以为了改进这个,RocketMQ做了一个存储上的重要改变,就是把所有消息存到一个文件里面,单文件的顺序写。topic、partition(在RocketMQ里面,partition叫做queue),在这里只是一个逻辑上的划分。
关于这个,阿里中间件团队,专门写了一篇博客,测试这个。结论是:topic数量增加到一定程度,kafka性能急剧下降。
http://jm.taobao.org/2016/04/07/kafka-vs-rocketmq-topic-amout/
那么对于一个集群,kafka到底多少个partition合适呢,关于这个,也有一篇文章专门论述。
https://www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka-cluster/
Kafka同步刷盘性能很低
关于这个,阿里中间件团队,也写了一篇博客。结论是:RocketMQ的同步刷盘性能,是Kafka的8倍。
关于这个的原因,有待看源码分析。
http://jm.taobao.org/2016/04/28/kafka-vs-rocktemq-4/
消费并行度
我们知道,Kafka为了保证每个partition的消息顺序,限制每个partition只能1个consumer消费。比如你的topic有8个partition,最多只能有8个consumer消费。
RocketMQ放开了这个限制,可以不保证消费顺序,也即多个consumer消费同1个partition(queue),这会极大提高消费并行度。
- 分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正“之2
- 分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正“之2
- 分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正”
- 分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正”
- 分布式消息队列RocketMQ与Kafka架构上的巨大差异之2 -- CommitLog与ConsumeQueue
- 分布式消息队列RocketMQ与Kafka架构上的巨大差异之2 -- CommitLog与ConsumeQueue
- 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?
- 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?
- 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?
- 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?
- 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?
- 分布式消息队列RocketMQ源码分析之4 -- Consumer负载均衡与Kafka的Consumer负载均衡之不同点
- 分布式消息队列RocketMQ源码分析之4 -- Consumer负载均衡与Kafka的Consumer负载均衡之不同点
- 分布式消息队列RocketMQ源码分析之4 -- Consumer负载均衡与Kafka的Consumer负载均衡之不同点
- 分布式消息队列RocketMQ&Kafka -- 消息的“顺序消费”
- 分布式消息队列RocketMQ源码分析之2 -- Broker与NameServer心跳机制
- 分布式消息队列RocketMQ源码分析之2 -- Broker与NameServer心跳机制
- 分布式消息队列RocketMQ源码分析之2 -- Broker与NameServer心跳机制
- 循环控制语句for while do-while if switch
- 分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正”
- ApiCloud开发的注意事项
- Java通过JNI调用本地C/C++程序
- VC++获取屏幕大小第三篇 物理大小GetDeviceCaps 下
- 分布式消息队列RocketMQ与Kafka的18项差异之“拨乱反正“之2
- 数据提交工具接口开发
- zxing生成二维码
- Memcached启动报错
- POJ-1068
- caffe的solver调参数技巧
- 分布式消息队列RocketMQ--事务消息--解决分布式事务的最佳实践
- Oracle的导入导出(部分)
- UVA