Kafka 爲什麼比其它的消息系統快?

Kafka的消息是保存或緩存在磁盤上的,你可能會認爲:在磁盤上讀寫數據是會降低性能的,因爲尋址會比較消耗時間。事實上,磁盤讀寫的快慢取決於你怎麼使用它了(順序讀寫、隨機讀寫)。

Kafka的設計目標是高吞吐量,它比其它消息系統快的原因體現在以下幾方面:

1、Kafka操作的是序列文件I / O(序列文件的特徵是按順序寫,按順序讀),爲保證順序,Kafka強制點對點的按順序傳遞消息,這意味着,一個consumer在消息流(或分區)中只有一個位置。

2、Kafka不保存消息的狀態,即消息是否被“消費”。一般的消息系統需要保存消息的狀態,並且還需要以隨機訪問的形式更新消息的狀態。而Kafka 的做法是保存Consumer在Topic分區中的位置offset,在offset之前的消息是已被“消費”的,在offset之後則爲未“消費”的,並且offset是可以任意移動的,這樣就消除了大部分的隨機IO。

3、Kafka支持點對點的批量消息傳遞。

4、Kafka的消息存儲在OS pagecache(頁緩存,page cache的大小爲一頁,通常爲4K,在linux讀寫文件時,它用於緩存文件的邏輯內容,從而加快對磁盤上映像和數據的訪問)。


參考自:https://www.quora.com/Kafka-writes-every-message-to-broker-disk-Still-performance-wise-it-is-better-than-some-of-the-in-memory-message-storing-message-queues-Why-is-that

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章