Kafka實現內部機制(持久化和通訊協議)

2021-08-26 23:13:47 字數 2230 閱讀 6921

1.資料持久化:

2.日誌資料持久化特性:

寫操作:通過將資料追加到檔案中實現

讀操作:讀的時候從檔案中讀就好了

3.優勢:

讀操作不會阻塞寫操作和其他操作(因為讀和寫都是追加的形式,都是順序的,不會亂,所以不會發生阻塞),資料大                           小不對效能產生影響;

沒有容量限制(相對於記憶體來說)的硬碟空間建立訊息系統;

線性訪問磁碟,速度快,可以儲存任意一段時間!

4.持久化的具體實現:

5.索引

為資料檔案建索引:

稀疏儲存,每隔一定位元組的資料建立一條索引(這樣的目的是為了減少索引檔案的大小)。

下圖為乙個partition的索引示意圖:

注:

1.現在對6.和8建立了索引,如果要查詢7,則會先查找到8然後,再找到8後的乙個索引6,然後兩個索引之間做二分法,找到7的位置

2.每乙個log檔案中又分為多個segment

注:

1.當生產者將訊息傳送到kafka後,就會去立刻通知zookeeper,會往zookeeper的節點中去掛載,

zookeeper中會watch到相關的動作,當watch到相關的資料變化後,會通知消費者去消費訊息。

2.消費者是主動去pull(拉)kafka中的訊息,這樣可以降低broker的壓力,因為broker中的訊息是無狀態的,broker也不知道哪個訊息是可以消費

3.當消費者消費了一條訊息後,也必須要去通知zookeeper。zookeeper會記錄下消費的資料,這樣但系統出現問題後就可以還原,可以知道哪些訊息已經被消費了

部署圖:

name server集群即zookeeper集群

注:

最重要的是要理解使用crc機制來驗證資料是否傳輸不完整,破損。

其他的了解即可

四.kafka的事務機制

1.kafka的高吞吐量的因素

2.為了防止磁碟爆滿,日誌有兩種策略

持久化機制

redis是乙個支援持久化的記憶體資料庫,也就說redis需要經常將記憶體中的資料同步到硬碟來保證持久化 redis支援兩種持久化方式 1.snapshotting 快照 也是預設方式 將資料存以快照的方式寫入到二進位制檔案中 預設檔名dump.rdb可以通過配置設定自動做快照持久化的方式。我們可以...

Kafka學習 四 Kafka持久化

概述 kafka很大程度上依賴檔案系統來儲存和快取訊息。有一普遍的認識 磁碟很慢。這讓人們懷疑使用磁碟作為持久化的效能。實際上,磁碟是快還是慢完全取決於我們是如何使用它。就目前來說,乙個 six 7200rpm sata raid 5磁碟線性 順序 寫入的效能能達到600mb sec,而任意位置寫 ...

sparkStreaming持久化機制

對於基於視窗的操作,比如reducebywindow reducebykeyandwindow,以及基於狀態的操作,比如updatestatebykey,預設就隱式開啟了持久化機制。即spark streaming預設就會將上述操作產生的dstream中的資料快取到記憶體長,不需要開發人員手動呼叫p...