Kafka理論概述和應用場景

2021-08-22 02:38:26 字數 1952 閱讀 6976

kafka是一種高吞吐量的分布式發布訂閱訊息系統,它可以處理消費者規模的**中的所有動作流資料。簡單地說,kafka就相比是乙個郵箱,生產者是傳送郵件的人,消費者是接收郵件的人,kafka就是用來存東西的,只不過它提供了一些處理郵件的機制。

下面做進一步說明:

broker即kafka程式,kafka程式執行於zookeeper之上,zookeeper是乙個分布式的,分布式應用程式的協調服務,其提供的功能包括:配置維護、網域名稱服務、分布式同步、組服務等。在此處,zookeeper協調kafka節點的配置、同步操作等。

topic即主題,kafka中發布訊息、訂閱訊息的物件是topic。我們可以為每類資料建立乙個topic。乙個topic中的訊息資料按照多個partition組織,分割槽是kafka訊息佇列組織的最小單位(並不是物理上的最小單位),乙個分割槽可以看作是乙個fifo( first input first output的縮寫,先進先出佇列)的佇列。如下圖:

例如,在上圖中,乙個topic被分成了3個分割槽(即partition0~2),使用者發布message時,可以指定message所處topic的partition,如果沒有指定,則隨機分布到該topic的partition。發布的訊息(其實是邏輯日誌)將在partition尾部插入。

segment是partition的物理儲存單元,kafka收到message後,會向對應partition的最後乙個segment上新增該訊息,當某個segment上的訊息條數達到配置值或訊息發布時間超過閾值時,segment上的訊息會被儲存到磁碟,只有被儲存到磁碟上的訊息consumer才能消費,segment達到一定的大小後將不會再往該segment寫資料,kafka會建立新的segment。其實,每個partition相當於分配到多個大小相等segment資料檔案中。但每個segment訊息數量不一定相等,這種特性方便無用的segment快速被刪除,segment檔案生命週期由服務端配置引數決定。如下圖:

consumer和consumer group,乙個consumer group包含多個consumer,使用者可以指定consumer的group。各個consumer可以組成乙個group,partition中的每個message只能被乙個group中的乙個consumer消費,如果乙個message想要被多個consumer消費的話,那麼這些consumer必須在不同的group。kafka不支援乙個partition中的message同時由兩個或兩個以上的consumer thread來處理,即便是來自不同的consumer group的也不行。kafka為了保證吞吐量,只允許乙個consumer去訪問乙個partition。如果覺得效率不高,可以加partition的數量來橫向擴充套件,再加新的consumer去消費,充分發揮了橫向的擴充套件性,吞吐量極高。這也就形成了分布式消費的概念。如下圖:

上圖中有兩個伺服器的kafka群集,它們有四個分割槽(p0-p3),其中有兩個group。group a有兩個消費者,group b有四個消費者。p0如果被c1消費後,則c2不能再消費,但是group b的c3或者其它的乙個可以消費p0。

Kafka的應用場景

1 建立實時的資料管道,以可靠地在系統或應用程式之間獲取資料 2 構建實時流應用程式,以轉換或響應資料流 如圖,可以看到 1 producers 可以有很多的應用程式,將訊息資料放到kafka的集群中。2 consumers 可以有很多的應用程式,將訊息資料從kafka集群中拉取出來。3 conne...

kafka核心概念與應用場景

kafka的主要特點 kafka是分布式發布 訂閱訊息系統。它最初由linkedin公司開發,之後成為apache專案的一部分。kafka是乙個分布式的,可劃分的,冗餘備份的永續性的日誌服務,它主要用於處理活躍的流式資料。kafka的架構 kafka的整體架構非常簡單,是顯式分布式架構,produc...

kafka筆記N0 4Kafka應用場景

訊息 kafka更好的替換傳統的訊息系統。kafka有更好的吞吐量,內建分割槽,副本和故障轉移。活動追蹤 使用者活動的追蹤,的活動 網頁瀏覽,搜尋或其他使用者的操作資訊 發布到不同的話題中心,這些訊息可實時處理,實時監測,也可載入到hadoop或離線處理倉庫。指標 kafka也常常用於檢測資料。分布...