kafka入門簡介

2021-07-03 18:36:44 字數 1622 閱讀 2137

1、  概述

kafka是linkedin於2023年12月份開源的訊息系統,它主要用於處理活躍的流式資料。活躍的流式資料在web**應用中非常常見,這些資料報括**的pv、使用者訪問了什麼內容,搜尋了什麼內容等。 這些資料通常以日誌的形式記錄下來,然後每隔一段時間進行一次統計處理。

2、  設計目標

(1)資料在磁碟上訪問代價為o(1)。一般資料在磁碟上是使用btree儲存的,訪問代價為o(lgn)。

(2)高吞吐率。即使在普通的節點上每秒鐘也能處理成百上千的message。

(3)顯式分布式,即所有的producer、broker和consumer都會有多個,均為分布式的。

(4)支援資料並行載入到hadoop中。

3、  kafka部署結構

kafka是顯式分布式架構,producer、broker(kafka)和consumer都可以有多個。kafka的作用類似於快取,即活躍的資料和離線處理系統之間的快取。幾個基本概念:

(1)message(訊息)是通訊的基本單位,每個producer可以向乙個topic(主題)發布一些訊息。如果consumer訂閱了這個主題,那麼新發布的訊息就會廣播給這些consumer。

(2)kafka是顯式分布式的,多個producer、consumer和broker可以執行在乙個大的集群上,作為乙個邏輯整體對外提供服務。對於consumer,多個consumer可以組成乙個group,這個message只能傳輸給某個group中的某乙個consumer.

4、  kafka關鍵技術點

(1)  zero-copy

在kafka上,有兩個原因可能導致低效:1)太多的網路請求 2)過多的位元組拷貝。為了提高效率,kafka把message分成一組一組的,每次請求會把一組message發給相應的consumer。 此外, 為了減少位元組拷貝,採用了sendfile系統呼叫。為了理解sendfile原理,先說一下傳統的利用socket傳送檔案要進行拷貝:

sendfile系統呼叫:

(2) exactly once message transfer

怎樣記錄每個consumer處理的資訊的狀態?在kafka中僅儲存了每個consumer已經處理資料的offset。這樣有兩個好處:1)儲存的資料量少 2)當consumer出錯時,重新啟動consumer處理資料時,只需從最近的offset開始處理資料即可。

(3)push/pull

producer 向kafka(push)推資料,consumer 從kafka 拉(pull)資料。

(4)負載均衡和容錯

producer和broker之間沒有負載均衡機制。

broker和consumer之間利用zookeeper進行負載均衡。所有broker和consumer都會在zookeeper中進行註冊,且zookeeper會儲存他們的一些元資料資訊。如果某個broker和consumer發生了變化,所有其他的broker和consumer都會得到通知。

Kafka入門 1 簡介

了解kafka之前我們先來了解一下訊息佇列 訊息佇列,英文名 message queue,經常縮寫為mq。從字面上來理解,訊息佇列是一種用來儲存訊息的佇列。來看一下下面的 1.建立乙個儲存字串的佇列 queuestringqueue new linkedlist 2.往訊息佇列中放入訊息 strin...

kafka詳解一 Kafka簡介

分類 kafka 2014 08 18 10 45 375人閱讀收藏 舉報 背景 當今社會各種應用系統諸如商業 社交 搜尋 瀏覽等像資訊工廠一樣不斷的生產出各種資訊,在大資料時代,我們面臨如下幾個挑戰 如何收集這些巨大的資訊 如何分析它 如何及時做到如上兩點 以上幾個挑戰形成了乙個業務需求模型,即生...

KAFKA原理簡介

每條訊息在檔案中的位置成為offset 偏移量 offset為long型數字。過後無論是否被消費,都會被清楚。consumer儲存消費資訊的offset。kafka通過partition將日誌內容分散到多個server上,每個partition都會被 當前server儲存,kafka可以配置part...