Kafka入門學習 基礎

2022-02-14 10:50:47 字數 1493 閱讀 4669

kafka是什麼

kafka是最初由linkedin公司開發,是乙個分布式、支援分割槽的(partition)、多副本的(replica),基於zookeeper協調的分布式訊息系統,它的最大的特性就可以實時的處理大量資料以滿足各種需求場景:比如基於hadoop的批處理系統、低延遲的實時系統、storm/spark流式處理引擎,web/nginx日誌、訪問日誌,訊息服等等,用scala語言編寫,linkedin於2023年貢獻給了apache**會並成為頂級開源專案。

kafka原理

producer即生產者,向kafka集**送訊息,在傳送訊息之前,會對訊息進行分類,即topic,上圖展示了兩個producer傳送了分類為topic1的訊息,另外乙個傳送了topic2的訊息。

topic即主題,通過對訊息指定主題可以將訊息分類,消費者可以只關注自己需要的topic中的訊息

consumer即消費者,消費者通過與kafka集群建立長連線的方式,不斷地從集群中拉取訊息,然後可以對這些訊息進行處理。

從上圖中就可以看出同乙個topic下的消費者和生產者的數量並不是對應的。

kafka儲存:

談到kafka的儲存,就不得不提到分割槽,即partitions,建立乙個topic時,同時可以指定分割槽數目,分割槽數越多,其吞吐量也越大,但是需要的資源也越多,同時也會導致更高的不可用性,kafka在接收到生產者傳送的訊息之後,會根據均衡策略將訊息儲存到不同的分割槽中。

kafka與生產者的互動

生產者在向kafka集**送訊息的時候,可以通過指定分割槽來傳送到指定的分割槽中也可以通過指定均衡策略來將訊息傳送到不同的分割槽中

如果不指定,就會採用預設的隨機均衡策略,將訊息隨機的儲存到不同的分割槽中

kafka與消費者的互動

在消費者消費訊息時,kafka使用offset來記錄當前消費的位置

在kafka的設計中,可以有多個不同的group來同時消費同乙個topic下的訊息,如圖,我們有兩個不同的group同時消費,他們的的消費的記錄位置offset各不專案,不互相干擾。

對於乙個group而言,消費者的數量不應該多餘分割槽的數量,因為在乙個group中,每個分割槽至多只能繫結到乙個消費者上,即乙個消費者可以消費多個分割槽,乙個分割槽只能給乙個消費者消費。

kafka入門基礎

分布式訊息系統,由linkedin使用scala編寫,用作linkedin的活動流 activity stream 和運營資料處理管道 pipeline 的基礎。具有高水平擴充套件和高吞吐量.當前由apache開源.整個系統由生產者 broker server和消費者三部分組成,生產者和消費者由開發...

Kafka學習 入門

在進行如下配置前,首先要啟動zookeeper。1.進入kafka解壓目錄 2.啟動kafka bin windows kafka server start config server.properties3.建立topic和檢視機器上topic 4.傳送資料 5.開始消費資料 bin window...

kafka入門學習

為了解決流式處理,也解決原版本較為死板的c通訊檔案,現在引入kafka來進行多併發等問題的處理。2019年03月08日14 19 21 此處解壓到 usr local目錄下 tar zxvf kafka 2.10 0.8.2.2.tgz c usr local cd usr local kafka ...