Kafka 學習筆記一:基本概念

  1. zookeeper: 負責集羣元數據管理、控制器的選舉等操作
  2. producer: 將消息發送到 broker
  3. broker: 將收到的消息存儲到磁盤中
  4. consumer: 負責從 broker 訂閱並消費消息
  5. topic: 消息主題(邏輯概念),生產者和消費者都以 topic 爲單位進行生產和消費
  6. partition: 分區(也稱作 topic-partition 主題分區,topic 的物理概念),同一個 topic 可以分爲多個 partition,一個 partition 只屬於單個 topic。分區在存儲層面可以看做一個可追加的日誌文件,消息在被追加到分區日誌文件的時候都會分配一個特定的偏移量(offset)。offset 是消息在分區中的唯一標識,kafka 通過它來保證消息在分區內的順序性,不過 offset 並不跨越分區,kafka 保證的是分區有序而不是主題有序。

分區的副本機制

一個分區可以有多個副本,一主多從,leader 副本負責處理讀寫請求,follower 副本只負責與 leader 副本的消息同步。多個副本處於不同的 broker 中,當某個 broker 失效後仍能保證服務可用。

不同分區的同步速度不一致,kafka 把同步程度不同的副本做了區分:

  1. AR (Assigned Replicas): 所有副本的統稱。AR = ISR + OSR。
  2. ISR (In-Sync Replicas): 與 leader 保持一定程度同步的副本。當 leader 故障時,只有在 ISR 集合中的副本纔有資格被選舉爲新的 leader
  3. OSR (Out-of-Sync Replicas): 與 leader 同步滯後過多的副本。

偏移量的一些概念與 ISR 的關係:

  1. HW (High Watermark) 高水位:一個特定的 offset,消費者只能拉取到這個 offset 之前的消息(消息可見性)。
  2. LEO (Log End Offset): 當前日誌文件中下一條待寫入消息的 offset。
  3. 三者之間的關係:ISR 集合中最小的 LEO 即爲分區的 HW。

舉個例子:

  1. 假設有一個分區 leader 副本爲 L1,有兩個 follower 副本爲 F1, F2
  2. 此時,L1, F1, F2 的同步進度一致,都有三條消息m0,m1,m2
  3. 2個 follower 副本都處於 ISR 集合,LEO都爲 2,所以 HW 爲 2
  4. 這時生產者寫入兩條消息 m3,m4
  5. F1 同步速度快,同步了兩條消息,F2同步速度慢,只同步了 m3
  6. 此時,F1 的 LEO 爲 4,F2 的 LEO 爲3,當前分區的 HW 取最小值爲 3
  7. 之後 F2 也同步了 m4,LEO 變爲 4
  8. F1 和 F2 的 LEO 都爲 4,HW 也爲4

(詳細可以見書中的流程圖,這裏就不貼圖了)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章