Kafka主題體系架構-複製、故障轉移和並行處理

本文討論了Kafka主題的體系架構,討論瞭如何將分區用於故障轉移和並行處理。

Kafka主題,日誌和分區

Kafka將主題存儲在日誌中。主題日誌分爲多個分區。Kafka將日誌的分區分佈在多個服務器或磁盤上。將主題視爲類別,流名稱或提要。面試

主題自己就是發佈和訂閱樣式的消息傳遞。一個主題能夠有零個或多個名爲使用者組的訂閱戶。爲了速度、可伸縮性和大小,主題被劃分爲多個分區。服務器

Kafka主題分區

Kafka將主題日誌分解爲多個分區。記錄存儲在一個分區上,若是存在該鍵,一般按記錄鍵存儲;若是缺乏該鍵,則按循環存儲(默認行爲)。默認狀況下,記錄鍵決定生產者發送記錄的分區。架構

Kafka使用分區在多個服務器上擴展主題以進行生產者寫入。此外,Kafka還使用分區來促進並行消費者。使用者使用的記錄與分區數並行。佈局

每一個分區保證的順序。若是按鍵進行分區,則密鑰的全部記錄都將位於同一分區上,若是您必須重播日誌,則該分區很是有用。Kafka能夠將分區複製到多個代理以進行故障轉移。學習

Kafka主題日誌分區的排序和基數

Kafka一個分區中維護記錄順序。分區是一個有序的、不變的記錄序列。Kafka使用分區做爲結構化提交日誌連續附加到分區。分區中的記錄被分配了稱爲偏移量的順序ID號。偏移量標識分區中的每一個記錄位置。主題分區容許Kafka日誌擴展超出適合單個服務器的大小。主題分區必須適合承載它的服務器,但主題能夠跨越承載在許多服務器上的多個分區。此外,主題分區是並行性的一個單元——一個分區一次只能由一個使用者組中的一個使用者處理。消費者能夠在本身的進程或線程中運行。若是消費者中止,Kafka將分區分佈在同一消費者組中的剩餘消費者上。線程

Kafka體系架構:主題分區佈局和偏移

Kafka主題分區複製

Kafka能夠跨多個可配置的Kafka服務器複製分區,這些服務器用於容錯。每一個分區都有一個領導服務器和零個或多個追隨服務器。領導處理分區的全部讀寫請求。

追隨者模仿領導者,若是領導者死了,他們就會接管。Kafka還使用分區在組中進行並行消費者處理。Kafka將主題日誌分區分佈在Kafka集羣中的服務器上。每一個服務器經過共享分區領導層來處理其數據和請求的共享。代理

複製:Kafka分區領導者、追隨者和ISR日誌

Kafka使用ZooKeeper選擇一個經紀人分區的副本做爲領導者。orm

具備分區領導的代理處理分區記錄的全部讀寫操做。Kafka將寫操做複製到主分區的後續分區(節點/分區對)。同步的追隨者稱爲ISR(同步副本)。若是分區領導失敗,Kafka選擇一個新的ISR做爲新的領導。cdn

複製到分區0

當分區的全部ISR都寫入其日誌時,該記錄被視爲「已提交」。只有提交的記錄纔可從消費者中讀取。另外一個分區能夠由另外一個Kafka代理的領導者擁有。

複製到分區1

Kafka主題體系結構評論


什麼是ISR?

ISR是同步副本。若是領導者失敗,ISR將被選爲新的領導者。

Kafka如何擴大消費者規模?

Kafka經過分區來擴展消費者,這樣每一個消費者均可以得到分區的份額。消費者能夠有多個分區,但一個分區一次只能由一個使用者組中的一個使用者使用。若是隻有一個分區,那麼只能有一個使用者。

什麼是領導者?追隨者?

領導者執行對特定主題分區的全部讀寫操做。追隨者複製領導者。

Kafka如何爲消費者執行故障轉移?

若是消費者組中的消費者死亡,則分配給該消費者的分區將在該組中的剩餘消費者之間分配。

Kafka如何爲代理執行故障轉移?

若是一個代理死了,那麼Kafka將其主題分區的領導權分配給集羣中的其他代理。


喜歡記得來一個贊!

彩蛋小福利

點擊免費獲取Java學習筆記,面試,文檔以及視頻

部分資料以下:

相關文章
相關標籤/搜索