天天看點

【硬剛Kafka】KAFKA基礎(三):Kafka架構深入(1) Kafka工作流程及檔案存儲機制

本文是對《【硬剛大資料之學習路線篇】從零到大資料專家的學習指南(全面更新版)》的Kafka部分補充。

【硬剛Kafka】KAFKA基礎(三):Kafka架構深入(1) Kafka工作流程及檔案存儲機制

  Kafka 中消息是以 topic 進行分類的,生産者生産消息,消費者消費消息,都是面向 topic的。

  topic 是邏輯上的概念,而 partition 是實體上的概念,每個 partition 對應于一個 log 檔案,該 log 檔案中存儲的就是 producer 生産的資料。

  Producer 生産的資料會被不斷追加到該log 檔案末端,且每條資料都有自己的 offset。

  消費者組中的每個消費者,都會實時記錄自己消費到了哪個 offset,以便出錯恢複時,從上次的位置繼續消費。

【硬剛Kafka】KAFKA基礎(三):Kafka架構深入(1) Kafka工作流程及檔案存儲機制

  由于生産者生産的消息會不斷追加到log檔案末尾,為防止log檔案過大導緻資料定位效率低下,Kafka采取了分片和索引機制,将每個partition分為多個segment。每個segment對應兩個檔案——“.index”檔案和“.log”檔案。這些檔案位于一個檔案夾下,該檔案夾的命名規則為:topic名稱+分區序号。例如,first這個topic有三個分區,則其對應的檔案夾為first-0,first-1,first-2。

index和log檔案以目前segment的第一條消息的offset命名。下圖為index檔案和log檔案的結構示意圖。

【硬剛Kafka】KAFKA基礎(三):Kafka架構深入(1) Kafka工作流程及檔案存儲機制