网上很多文章拿 rocketmq 与 kafka 比,都说 kafka 在 topic 超过 200 个的时候,性能急速下降,而 RocketMq 性能稳定。
但是都没有说原因,想问问各位大神,这是什么原因造成了 kafka 性能下降,而 RocketMQ 性能稳定呢?
还有,当消息大小超过 2048 的时候,kafka 性能也会下降,RocketMq 性能稳定,这又是什么原因呢?
1
Yuicon 2019-09-12 11:44:08 +08:00
搜索引擎会告诉你答案
|
3
Yuicon 2019-09-12 12:01:09 +08:00
|
4
allen9527 2019-09-12 12:03:07 +08:00
全局看,topic 多会变成随机读,so。。。
|
5
arrow8899 2019-09-12 14:03:35 +08:00
kafka 每个 topic 对应一个 log file,单独的 log file 是磁盘顺序读写的,所以很快;
但是 topic 过多,由于每个 topic 是分开读写的,所以就变成随机读写了; 官方推荐是用大的 topic 来代替过多的小的 topic ; https://cwiki.apache.org/confluence/display/KAFKA/FAQ#FAQ-HowmanytopicscanIhave? |
6
troywinter 2019-09-12 18:06:42 +08:00
RocketMq 和 Kafka 的性能基线就不在一个水准上,Kafka 利用顺序读写已经把一个 MQ 的性能压榨到比较极限的水准了,超高的性能也带来了一些问题,每一个 topic 在硬盘上用一个 logfile 表示,通过顺序读写可以使性能非常高,但当多个 topic 的多个 partition 分布在同一台机器上时,原本的顺序读写就变为随机读写,partition 越多,随机就越严重,apache pulsar 解决了这个问题是使用 bookkeeper 做 store,这样做同时也降低了性能基线,业务需要很高的性能时,用 Kafka 没错,堆机器就行了,没钱堆机器时也不需要那么高的性能。
|