截至目前,我們已經了解了Kafka的核心概念。 現在讓我們來看看Kafka的工作流程。
Kafka只是分成一個或多個分割區的主題集合。 Kafka分割區是訊息的線性排序序列,每個訊息由其索引標識(稱為偏移量)。 Kafka叢集中的所有資料都是不相關的分割區聯合。 傳入訊息寫在分割區的末尾,消費者依次讀取訊息。 通過將訊息複製到不同的經紀人來提供永續性。
Kafka以快速,可靠,持久的容錯和零停機方式提供基於發佈訂閱和佇列的訊息傳遞系統。 在這兩種情況下,生產者只需將訊息傳送到一個主題,消費者就可以根據他們的需要選擇任何一種訊息傳遞系統。 可通過下一節中的步驟來了解消費者如何選擇它們的訊息系統。
以下是發布訂閱訊息工作流程的步驟 -
在佇列訊息系統(不是單個消費者)中,具有相同組ID的一組消費者將訂閱主題。 簡而言之,訂閱具有相同組ID的主題的消費者被視為單個組,並且訊息在他們之間共用。 讓我們來看看一下這個系統的實際工作流程。
Apache Kafka的關鍵依賴是Apache Zookeeper,它是一個分散式組態和同步服務。 Zookeeper作為Kafka經紀人和消費者之間的協調介面。 Kafka伺服器通過Zookeeper叢集共用資訊。 Kafka在Zookeeper中儲存基本後設資料,例如有關主題,經紀人,消費者偏移量(佇列讀取器)等的資訊。
由於所有關鍵資訊都儲存在Zookeeper中,並且它通常在整個叢集中複製這些資料,所以Kafka broker/Zookeeper的故障不會影響Kafka叢集的狀態。當Zookeeper重新啟動,Kafka將恢復狀態。 這給Kafka帶來零停機時間。 Kafka經紀人之間的領導者選舉也是通過在領導者失敗的情況下,使用Zookeeper來完成的。
要了解Zookeeper的更多資訊,請參閱zookeeper教學。
讓我們繼續,在下一章中學習如何安裝Java,ZooKeeper和Kafka。