Kafka与RocokeMQ的消息队列对比

原创
2017/06/02 17:22
阅读数 282

消息性能对比:

Kafka和RocketMQ都是磁盘消息队列的模式,对于同一个消费组,一个分区只支持一个消费线程来消费消息。过少的分区,会导致消费速度大大落后于消息的生产速度。所以在实际生产环境中,一个Topic会设置成多分区的模式,来支持多个消费者

Kafka的每个Topic、每个分区都会对应一个物理文件。当Topic数量增加时,消息分散的落盘策略会导致磁盘IO竞争激烈成为瓶颈。而RocketMQ所有的消息是保存在同一个物理文件中的,Topic和分区数对RocketMQ也只是逻辑概念上的划分,所以Topic数的增加对RocketMQ的性能不会造成太大的影响。

在消息发送端,消费端共存的场景下,随着Topic数的增加Kafka吞吐量会急剧下降,而RocketMQ则表现稳定。因此Kafka适合Topic和消费端都比较少的业务场景,而RocketMQ更适合多Topic,多消费端的业务场景。

消费时间对比

Kafka就好像是一个仓库无穷大的物流公司,货物入仓库很快,但是配送多用轮船和汽车,送货速度很慢,比如(某达速运,某通速运)。RocketMQ则像是一个仓库容量有界限的物流公司,货物入库的速度是一定的,但是配送多用飞机和汽车,送货很快(比如某丰速运)
如果公司的业务量非常小,一天中几乎不存在高峰的时段,那么Kafka或RocketMQ都可以。而当消息的处理数量上升后,Kafka累积消息的能力强于RocketMQ,但是把消息投递给消费的能力大幅下降,导致消耗过多的时间(Kafka要133秒,RocketMQ要65秒)。在消息及时性这个场景,RocketMQ完胜Kafka

可靠性:

RocketMQ比Kafka具有更高的单机可靠性。对于普通业务,部署异步刷盘模式可以得到更高的性能;对于丢消息零容忍的业务,则更适用RocketMQ同步刷盘的模式,在享受高可靠性保障的同时,又能拥有较高的吞吐量。

实际上,单机可靠性只是软件可靠性测试的一个环节,Kafka和RocketMQ都提供了主备机模式,来解决服务器的单点故障。这点我们在后续会继续实验摸索,敬请期待接下来的比拼!

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部