Kafka 簡介及基本概念

2021-09-24 15:13:03 字數 3757 閱讀 4933

6. other

kafka 是乙個分布式流平台(apache kafka® is a distributed streaming platform)功能

應用

幾個認識

1. zookeeper (註冊中心)

zookeeper 乙個 分布式協調框架;

管理 kafka 集群中的 broker 節點;

bin/zookeeper-server-start.sh config/zookeeper.properties

2. broker (核心節點)

broker ,即 kafka 服務 部署的乙個節點;

一般乙個 kafka 集群( kafka cluster )會有多個節點(broker);

bin/kafka-server-start.sh config/server.properties

3. topic (話題)

主題 是一種分類或發布的一系列記錄的名義上的名字;

partition (分割槽)

乙個 topic 可以設定為對應多個partition(分割槽),即將該主圖的記錄拆分成 n 個分割槽進行儲存;

bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --partitions 3 --topic [topicname]

如上:定義乙個主圖(命名 topicname),有 3 個分割槽;

每個分割槽是乙個有序的不可變的訊息序列,新的訊息不斷追加到這個有組織的***的日誌上。分割槽會給每個訊息記錄分配乙個順序id號偏移量, 能夠唯一地標識該分割槽中的每個記錄。

kafka 集群保留所有發布的記錄,不管這個記錄有沒有被消費過;kafka提供可配置的保留策略去刪除舊資料(還有一種策略根據分割槽大小刪除資料)。例如,如果將保留策略設定為兩天,在記錄公布後兩天,它可用於消費,之後它將被丟棄以騰出空間。kafka的效能跟儲存的資料量的大小無關, 所以將資料儲存很長一段時間是沒有問題的。

資料日誌的分割槽,一舉數得。

首先,它們允許資料能夠擴充套件到更多的伺服器上去。每個單獨的分割槽的大小受到承載它的伺服器的限制,但乙個話題可能有很多分割槽,以便它能夠支援海量的的資料。

其次,更重要的意義是分割槽是進行並行處理的基礎單元。

replication (副本)

乙個 partition 可以設定為對應多個replication(副本),即備份資料,具有容災功能;

bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --partitions 3 --replication-factor 2 --topic [topicname]

如上:定義乙個主圖(命名 topicname),有 2 個 replication;

日誌的分割槽會跨伺服器的分布在 kafka 集群中,每個伺服器會共享分割槽進行資料請求的處理。每個分割槽可以配置一定數量的副本分割槽提供容錯能力

每個分割槽都有乙個伺服器充當「leader」和零個或多個伺服器充當「followers」。

leader 處理所有的讀取和寫入分割槽的請求,而 followers 被動的從 領導者 那裡拷貝資料。

如果 leader 失敗了,followers 之一將自動成為新的領導者。

每個伺服器可能充當一些分割槽的leader和其他分割槽的follower,這樣的負載就會在集群內很好的均衡分配。

spring 繼承 kafka 時 定義主圖

@bean

public newtopic topicname()

4. producer (生產者)

允許應用程式發布記錄流至乙個多個kafka 的topic

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic [topicname]

生產者發布資料到他們所選擇的主題。生產者負責選擇把記錄分配到主題中的哪個分割槽。這可以使用輪詢演算法( round-robin)進行簡單地平衡負載,也可以根據一些更複雜的語義分割槽演算法(比如基於記錄一些鍵值)來完成。

5. consumer (消費者)

允許應用程式訂閱乙個多個topic(主題),並處理這些主題接收到的記錄流。

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic [topicname] --from-beginning

消費者以消費群(consumer group)的名稱來標識自己,每個發布到主題的訊息都會傳送給訂閱了這個主題的消費群裡面的乙個消費者的乙個例項。消費者的例項可以在單獨的程序或單獨的機器上。

如果所有的消費者例項都屬於相同的消費群,那麼記錄將有效地被均衡到每個消費者例項。

如果所有的消費者例項有不同的消費群,那麼每個訊息將被廣播到所有的消費者程序。

兩個伺服器的kafka集群具有四個分割槽(p0-p3)和兩個消費群。a消費群有兩個消費者,b群有四個。

更常見的是,我們會發現主題有少量的消費群,每乙個都是「邏輯上的訂閱者」。每組都是由很多消費者例項組成,從而實現可擴充套件性和容錯性。這只不過是發布 – 訂閱模式的再現,區別是這裡的訂閱者是一組消費者而不是乙個單一的程序的消費者。

kafka消費群的實現方式是通過分割日誌的分割槽,分給每個consumer例項,使每個例項在任何時間點的都可以「公平分享」獨佔的分割槽。維持消費群中的成員關係的這個過程是通過kafka動態協議處理。如果新的例項加入該組,他將接管該組的其他成員的一些分割槽; 如果乙個例項死亡,其分割槽將被分配到剩餘的例項。

kafka只保證乙個分區內的訊息有序,不能保證乙個主題的不同分割槽之間的訊息有序。分割槽的訊息有序與依靠主鍵進行資料分割槽的能力相結合足以滿足大多數應用的要求。但是,如果你想要保證所有的訊息都絕對有序可以只為乙個主題分配乙個分割槽,雖然這將意味著每個消費群同時只能有乙個消費程序在消費。

高可用

6. other

imooc kafka流處理平台

3-1 kafka基本概念

3-2 概念延伸

partition

replication

3-3 kafka訊息結構

kafka基本概念簡介

按照官方的說法,kafka是乙個分布式流平台。實際使用中kafak主要作為乙個中間人,提供資料非同步處理的能力,同時可以對資料進行不同的處理。比如不同的消費者,對資料進行不一樣的邏輯處理 topic 主題 就是同一類訊息的名稱,例如資料庫的乙個表裡面儲存了同一種型別的資料,同乙個主題處理的也是同一類...

kafka基本概念

kafka 1 是一種高吞吐量 2 的分布式發布訂閱訊息系統,有如下特性 kafka基本概念 消費模式 1 分割槽消費模式 vs 組消費模式 分割槽的日誌被分發到集群內的伺服器上,每台伺服器負責處理一些分割槽和對這些分割槽的讀寫請求。為滿足容錯需求,各分割槽的資料都按乙個可配置的量被複製到集群的其他...

kafka基本概念

1.topics 主題 屬於特定類別的訊息流成為主題。資料儲存在topics中,topics被拆分為分割槽。對於每個主題,kafka儲存乙個分割槽的資料 每個這樣的分割槽包含不可變有序序列的訊息。分割槽被實現為具有相等大小的一組分段檔案。2.partition 分割槽 主題可能有許多分割槽,因此它可...