Kafka 04 架構深入 zookeeper

2021-10-10 04:16:47 字數 1276 閱讀 8814

1)順序寫磁碟

kafka 的 producer 生產資料,要寫入到 log 檔案中,寫的過程是一直追加到檔案末端,為順序寫。官網有資料表明,同樣的磁碟,順序寫能到 600m/s,而隨機寫只有 100k/s。這與磁碟的機械機構有關,順序寫之所以快,是因為其省去了大量磁頭定址的時間。

2)零複製技術

正常的讀取檔案:先將檔案讀進作業系統(kernel space),然後到使用者空間(user space,即**),然後再由使用者空間到作業系統層(**無法直接操作檔案,作業系統底層是由c語言實現的),這樣讀寫速度就比較慢。

零拷貝就是直接將檔案放到作業系統層(kernel space),然後直接由nic讀取。

kafka 集群中有乙個 broker 會被選舉為 controller,負責管理集群 broker 的上下線,所有 topic 的分割槽副本分配leader 選舉等工作。

controller 的管理工作都是依賴於 zookeeper 的。

以下為 partition 的 leader 選舉過程:

kafka 從 0.11 版本開始引入了事務支援。事務可以保證 kafka 在 exactly once 語義的基礎上,生產和消費可以跨分割槽和會話,要麼全部成功,要麼全部失敗。

為了實現跨分割槽跨會話的事務,需要引入乙個全域性唯一的 transaction id,並將 producer獲得的pid 和transaction id 繫結。這樣當producer 重啟後就可以通過正在進行的 transactionid 獲得原來的 pid。

為了管理 transaction,kafka 引入了乙個新的元件 transaction coordinator。producer 就是通過和 transaction coordinator 互動獲得 transaction id 對應的任務狀態。transactioncoordinator 還負責將事務所有寫入 kafka 的乙個內部 topic,這樣即使整個服務重啟,由於事務狀態得到儲存,進行中的事務狀態可以得到恢復,從而繼續進行。

上述事務機制主要是從 producer 方面考慮,對於 consumer 而言,事務的保證就會相對較弱,尤其時無法保證 commit 的資訊被精確消費。這是由於 consumer 可以通過 offset 訪問任意資訊,而且不同的 segment file 生命週期不同,同一事務的訊息可能會出現重啟後被刪除的情況。

kafka學習筆記(二)架構深入

1 kafka的工作流程 kafka 中訊息是以 topic 進行分類的,生產者生產訊息,消費者消費訊息,都是面向 topic的。2 kafka的儲存機制 kafka採取了分片和索引機制,每個partition分為多個segment。每個segment包含 0000 x.index 檔案和 0000...

一 架構基礎

1.1 系統與子系統 系統 一群有關聯的個體,根據某種規則運作,完成單個元件不能單獨完成的工作能力。1.2 模組與元件 模組 從邏輯的角度來拆分得到的單元。劃分模組的目的是職責分離。元件 從物理的角度來拆分得到的單元。劃分的目的是單元復用。1.3 框架與架構 框架 為了實現元件規範,提供規範的基礎功...

flink學習 2 架構

flink 執行時的元件 任務管理器taskmanager flink的工作程序。通常在flink中會有多個taskmanager執行,每乙個taskmanager都包含了一定數量的插槽 slots 插槽的數量限制了taskmanager能夠執行的任務數量。啟動之後,taskmanager會向資源管...