2023-07-14:讲一讲 Kafka 与 RocketMQ 中存储设计的异同?
2023-07-14:讲一讲 Kafka 与 RocketMQ 中存储设计的异同?
答案 2023-07-14:
在 Kafka 中,文件的布局采用了 Topic/Partition 的方式,每个分区对应一个物理文件夹,且在分区文件级别上实现了顺序写入。然而,当一个 Kafka 集群拥有大量的主题和每个主题拥有数百个分区时,在高并发写入消息的情况下,IO 操作会变得零散。这是因为消息的落盘策略导致磁盘 IO 的竞争变得激烈,成为系统性能的瓶颈。实际上,由于 IO 操作变得随机,所以在消息写入时,Kafka 的 IO 性能会随着主题和分区数量的增加而先上升,然后下降。
RocketMQ 追求在消息写入时实现极致的顺序写。所有的消息都会按顺序写入 commitlog 文件,不论主题或分区的数量增加,都不会影响其顺序性。
在消息的发送和消费共存的场景中,随着 Topic 数量的增加,Kafka 的吞吐量会急剧下降,而 RocketMQ 则能够保持较为稳定的性能表现。因此,Kafka 更适用于少量 Topic 和消费端的业务场景,而 RocketMQ 则更适合于涉及多个 Topic 和多个消费端的业务场景。
版权声明: 本文为 InfoQ 作者【福大大架构师每日一题】的原创文章。
原文链接:【http://xie.infoq.cn/article/07329470f6bb99a780a439da9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论