2023-07-14:講一講Kafka與RocketMQ中存儲設(shè)計的異同?
2023-07-14 21:15 作者:福大大架構(gòu)師每日一題 | 我要投稿
2023-07-14:講一講Kafka與RocketMQ中存儲設(shè)計的異同?
答案2023-07-14:

在Kafka中,文件的布局采用了Topic/Partition的方式,每個分區(qū)對應(yīng)一個物理文件夾,且在分區(qū)文件級別上實現(xiàn)了順序?qū)懭?。然而,?dāng)一個Kafka集群擁有大量的主題和每個主題擁有數(shù)百個分區(qū)時,在高并發(fā)寫入消息的情況下,IO操作會變得零散。這是因為消息的落盤策略導(dǎo)致磁盤IO的競爭變得激烈,成為系統(tǒng)性能的瓶頸。實際上,由于IO操作變得隨機,所以在消息寫入時,Kafka的IO性能會隨著主題和分區(qū)數(shù)量的增加而先上升,然后下降。
RocketMQ追求在消息寫入時實現(xiàn)極致的順序?qū)?。所有的消息都會按順序?qū)懭隿ommitlog文件,不論主題或分區(qū)的數(shù)量增加,都不會影響其順序性。
在消息的發(fā)送和消費共存的場景中,隨著Topic數(shù)量的增加,Kafka的吞吐量會急劇下降,而RocketMQ則能夠保持較為穩(wěn)定的性能表現(xiàn)。因此,Kafka更適用于少量Topic和消費端的業(yè)務(wù)場景,而RocketMQ則更適合于涉及多個Topic和多個消費端的業(yè)務(wù)場景。

標簽: