Kafka 為什麼效能這麼好

2021-10-05 09:26:41 字數 821 閱讀 7806

1、利用partition可以實現並行處理

乙個topic的不同partition 不僅可以分配到不同的節點上,而且在同一節點上還可以置於不同的磁碟上。

2、 isr 實現 cap 中可用性於資料一致性的動態平衡

每個 topic 的每個 partition 都會有乙個 leader,和 follower。客戶端其實是和這個leader請求資料的。

isr,in-sync-replica,leader 會維護這樣乙個列表,其中包含了所有與之同步的 replica。每次寫入資料時,只有 isr 中的所有 replica 都複製完,leader 才將這條資料置為 commit,才能被 consumer 消費到。

但是 isr 是被leader 動態維護的,如果 follower 未在 replica.lag.time.max.ms 這個時間內跟上的話,就會被從 isr 中移除。

相關配置:

min.insync.replicas

acks(生產者客戶端):

預設是1,也就是leader資料寫入磁碟,就算成功了

為0的時候,只要客戶端訊息發出去了,不管leader有沒有寫成功,都算成功了

為all的時候,等到leader和所有的副本都寫成功,才算成功。

順序寫磁碟

充分利用 pagecache

會將連續的小塊寫,變成大塊的物理寫,提高效能

會將寫操作排列好,減少磁碟移動

讀操作可以直接在 頁快取中進行。如果消費者和生產者速度相當,甚至可以不經過磁碟。

零拷貝減少網路開銷。客戶端實現批量傳送

資料壓縮

高效的序列化方式

關於零拷貝技術

kafka高吞吐量,為什麼這麼快!

kafka有個很重要的特性,高速的傳送和接收訊息,超高的吞吐量。這裡來討論一下kafka超高的吞吐量原理 1.寫 頁面快取,順序寫入磁碟。producer 生產訊息 broker 會先將資料先寫入到頁面快取 page cache 基於mmap 刷盤 順序寫入到磁碟 順序寫入比隨機的ssd更快 bro...

kafka 為什麼快

一般的 mq 每個訊息都有乙個狀態,這樣每個訊息狀態改變都要更新,增加了很多隨機讀寫。kafka 對每個 partition 只有乙個指標,而不是儲存每個訊息的狀態,所有在指標後面的訊息都是被消費過的訊息。這就去掉了很多 確認訊息 動作的隨機讀寫,通過一次移動指標,來確認多個訊息。很多訊息中介軟體,...

我為什麼這麼累?

我為什麼這麼累?工作後,我常感到疲憊不堪,為此我的解釋是睡眠不足。可最近,看了一組資料之後才知道,我不是缺乏睡眠,而是工作過度 中國一共有12億人口,其中有三億退休,那就只剩下9億人工作了 8億人在農村,那就只剩下一億人在工作 二千萬是學生,那只剩下八千萬人在工作 這八千萬當中有四千萬是 工作人員,...