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

2022-07-17 09:06:11 字數 1684 閱讀 2182

本文討論了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選擇乙個經紀人分割槽的副本作為領導者。

具有分割槽領導的**處理分割槽記錄的所有讀寫操作。kafka將寫操作複製到主分割槽的後續分割槽(節點/分割槽對)。同步的追隨者稱為isr(同步副本)。如果分割槽領導失敗,kafka選擇乙個新的isr作為新的領導。

複製到分割槽0

當分割槽的所有isr都寫入其日誌時,該記錄被視為「已提交」。只有提交的記錄才可從消費者中讀取。另乙個分割槽可以由另乙個kafka**的領導者擁有。

複製到分割槽1

什麼是isr?

isr是同步副本。如果領導者失敗,isr將被選為新的領導者。

kafka如何擴大消費者規模?

kafka通過分割槽來擴充套件消費者,這樣每個消費者都可以獲得分割槽的份額。消費者可以有多個分割槽,但乙個分割槽一次只能由乙個使用者組中的乙個使用者使用。如果只有乙個分割槽,那麼只能有乙個使用者。

什麼是領導者?追隨者?

領導者執行對特定主題分割槽的所有讀寫操作。追隨者複製領導者。

kafka如何為消費者執行故障轉移?

如果消費者組中的消費者死亡,則分配給該消費者的分割槽將在該組中的剩餘消費者之間分配。

kafka如何為**執行故障轉移?

如果乙個**死了,那麼kafka將其主題分割槽的領導權分配給集群中的其餘**。

趙渝強老師 Kafka的體系架構

資料工程中最具挑戰性的部分之一是如何從不同點收集和傳輸大量資料到分布式系統進行處理和分析。需要通過訊息佇列正確地分離大量資料,因為如果一部分資料無法傳送,則可以在系統恢復時傳輸和分析其他資料。有兩種訊息排隊,對於上述目的,它們都是可靠的和非同步的。點對點 point to point 和發布者 訂閱...

kafka自動建立主題

kafka集群環境搭建完成後,整合到專案開發中,我需要給某個topic傳送訊息,以及監聽消費該topic中的訊息,難道我需要事先用kafka命令先去伺服器建立乙個topic,然後再供專案使用嗎?有沒有我在專案配置檔案裡指定kafka的topic 然後啟動服務的時候,kafka就可以自動幫我建立好呢?...

Kafka刪除主題詳解

在kafka的使用 測試過程中,可能老是會遇到想要刪除某個主題的需求,但是由於對其內部機制不夠了解,總是無法有效的刪除主題。今天這篇文章詳細討論如何徹底的刪除乙個主題。在kafka的broker端的配置引數中有這樣乙個引數 delete.topic.enable,必須將它設定為true才能夠刪除ka...