kafka簡單介紹

2021-08-21 17:33:48 字數 2217 閱讀 9586

參考資料:

kafka 是乙個訊息系統,原本開發自 linkedin,用作 linkedin 的活動流(activity stream)和運營資料處理管道(pipeline)的基礎

使用kafka的優勢:實現了解耦合

broker:kafka 集群包含乙個或多個伺服器,這種伺服器被稱為 broker。(多個broker解決負載問題,當然也可以只有乙個broker)

topic:每條發布到 kafka 集群的訊息都有乙個類別,這個類別被稱為 topic。(物理上不同 topic 的訊息分開儲存,邏輯上乙個 topic 的訊息雖然儲存於乙個或多個 broker 上,但使用者只需指定訊息的 topic 即可生產或消費資料而不必關心資料存於何處)。

partition:partition 是物理上的概念,每個 topic 包含乙個或多個 partition。

producer:負責發布訊息到 kafka broker。(可以是其他元件也可以是自定義的服務等,只要需要訊息傳遞都可以使用)

consumer:訊息消費者,向 kafka broker 讀取訊息的客戶端。

consumer group:每個 consumer 屬於乙個特定的 consumer group(可為每個 consumer 指定 group name,若不指定 group name 則屬於預設的 group)。

每個kafka server稱為乙個broker,多個borker組成kafka cluster。

乙個機器上可以部署乙個或者多個broker,這多個broker連線到相同的zookeeper就組成了kafka集群。

kafka是乙個發布訂閱訊息系統,它的邏輯結構如下:

topic 就是訊息類別名,乙個topic中通常放置一類訊息。每個topic都有乙個或者多個訂閱者,也就是訊息的消費者consumer。

producer將訊息推送到topic,由訂閱該topic的consumer從topic中拉取訊息。

topic 與broker

乙個broker上可以建立乙個或者多個topic。同乙個topic可以在同一集群下的多個broker中分布。

kafka會為每個topic維護了多個分割槽(partition),每個分割槽會對映到乙個邏輯的日誌(log)檔案:

每當乙個message被發布到乙個topic上的乙個partition,broker應會將該message追加到這個邏輯log檔案的最後乙個segment上。這些segments 會被flush到磁碟上。flush時可以按照時間來進行,也可以按照message 數來執行。

每個partition都是乙個有序的、不可變的結構化的提交日誌記錄的序列。在每個partition中每一條日誌記錄都會被分配乙個序號——通常稱為offset,offset在partition內是唯一的。論點邏輯檔案會被化分為多個檔案segment(每個segment的大小一樣的)。

broker集群將會保留所有已發布的message records,不管這些訊息是否已被消費。保留時間依賴於乙個可配的保留週期。例如:如果設定了保留策略是2day,那麼每一條訊息發布兩天內是被保留的,在這個2day的保留時間內,訊息是可以被消費的。過期後不再保留。

日誌分割槽是分布式的存在於乙個kafka集群的多個broker上。每個partition會被複製多份存在於不同的broker上。這樣做是為了容災。具體會複製幾份,會複製到哪些broker上,都是可以配置的。經過相關的複製策略後,每個topic在每個broker上會駐留一到多個partition。如圖:

如果要了解kafka如何進行partition、replica 分配的,可以參考:

Kafka集群簡單介紹

2 上傳linux並解壓 tar zxvf kafka 2.11 1.0.0.tgz 3 修改server.properties檔案 1 配置kafka儲存位置,要配置為非 tmp目錄 log.dirs 非 tmp目錄 4 修改zookeeper.properties檔案 1 kafka內建了乙個z...

kafka入門介紹

背景 當今社會各種應用系統諸如商業 社交 搜尋 瀏覽等像資訊工廠一樣不斷的生產出各種資訊,在大資料時代,我們面臨如下幾個挑戰 如何收集這些巨大的資訊 如何分析它 如何及時做到如上兩點 以上幾個挑戰形成了乙個業務需求模型,即生產者生產 produce 各種資訊,消費者消費 consume 處理分析 這...

kafka入門介紹

背景 當今社會各種應用系統諸如商業 社交 搜尋 瀏覽等像資訊工廠一樣不斷的生產出各種資訊,在大資料時代,我們面臨如下幾個挑戰 如何收集這些巨大的資訊 如何分析它 如何及時做到如上兩點 以上幾個挑戰形成了乙個業務需求模型,即生產者生產 produce 各種資訊,消費者消費 consume 處理分析 這...