Kafka 2.0課程 2 Kafka理論

Kafka特殊名詞解釋

ZONGRU Li
Dec 9, 2019

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. 範例1,一個分成3個partition的Topic-A
  2. 範例2,一個分成2個partition的Topic-B
NOTE: Broker 103不具有Topic-B的任何data

Topic 複製係數(replication factor)

  1. Topic通常具有大於1的複製係數(通常是2或3)
  2. 當某一broker掛掉,其他broker仍可以繼續處理data
  3. 範例圖為有兩個partition的Topic-A,有複製係數2
  1. 範例,當失去了Broker 102
  2. 結果:Broker 101與103仍然可以處理資料

Partition Leader概念

  1. 任何時候針對特定partition只會有一個帶頭(Leader)的broker
  2. 只有這個帶頭的broker可以負責接收與處理這個partition

(其他broker只會同步化data)

(因此每一個partititon只會有一個Leader,與多個ISR(in-sync replica))

當broker 101掛掉,broker 102的Partition 0 Topic-A(ISR)將成為Leader,當broker101恢復,將再次成為Leader

偵測Leader與ISR狀態的為Zookeeper

參考課程

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet