Kafka 2.0課程 2 Kafka理論
Topics:特定的數據流
1.類似DB內的table(無限制)
2.可擁有多個Topics
3.單一topic由name識別
Topics可分拆為partitions
1.每一個partition是有序的
2.每一個partition內包裹的訊息皆有一個遞增的id被稱為offset
Topic範例:truck_gps
複數台卡車,每一台回傳GPS相關資料(卡車ID、位置)給Kafka
命名為truck_gps的topic資料包含了所有卡車的gps資料
將此topic分為10個partitions(隨意數字)
1.offset只在特定的partition內有意義
2.排序只存在單一個partition內(無法跨partition)
3.資料只保留一段特定的時間(預設為1週)
4.當資料寫到partition內,該資料將無法改變
(例如在partition 1內寫入offset6後,就無法變更
當再寫入新的data進partition1,將從後面位置填入,如上圖從8之後)
Brokers
1.Kafka cluster由多個brokers(server)組成
2.每一個broker有各自的ID(Integer)
3.每一個broker只擁有部分的data,而非全部的data
4.當連線至任意個broker(稱為boostrap broker),將連接整個cluster
5.較佳的broker配置至少3台,大型cluster可能超過100個
6.範例中將只使用3個borker,只是ID由101開始
Brokers 與topic
- 範例1,一個分成3個partition的Topic-A
- 範例2,一個分成2個partition的Topic-B
Topic 複製係數(replication factor)
- Topic通常具有大於1的複製係數(通常是2或3)
- 當某一broker掛掉,其他broker仍可以繼續處理data
- 範例圖為有兩個partition的Topic-A,有複製係數2
- 範例,當失去了Broker 102
- 結果:Broker 101與103仍然可以處理資料
Partition Leader概念
- 任何時候針對特定partition只會有一個帶頭(Leader)的broker
- 只有這個帶頭的broker可以負責接收與處理這個partition
(其他broker只會同步化data)
(因此每一個partititon只會有一個Leader,與多個ISR(in-sync replica))
偵測Leader與ISR狀態的為Zookeeper