Kafka 架構

Apache Kafka 入門

Mike Metzger

Data Engineering Consultant

Kafka 元件

  • Kafka 伺服器
    • 一個以上電腦組成的叢集
    • 儲存資料
    • 管理通訊
    • 也可整合其他系統(資料庫、日誌等)
  • Kafka 用戶端
    • 透過 Kafka consumer 讀取
    • 透過 Kafka producer 寫入
    • 依需求處理資料
Apache Kafka 入門

Kafka 伺服器

  • 儲存層,也稱 Kafka Broker
    • producer 寫入的資料以 topics 儲存與組織
    • topics 會被分割為 partitions(分片)
    • 訊息/事件依 event id 放入指定分區
    • 讀取順序與寫入順序相同

Kafka 儲存與分區

1 Image sourced from https://kafka.apache.org/intro
Apache Kafka 入門

分區與複寫

  • Kafka 具備容錯能力
  • 若一台系統離線,其他系統仍可提供所需資料
  • 可承受的最大失效數量 = 複本因子 - 1
  • 複本因子的上限 = 伺服器數量
  • 透過分區複本來實現資料複寫

Kafka cluster, brokers, and topics.png

Apache Kafka 入門

範例

Kafka cluster, brokers, and topics.png

  • 含 3 個 brokers 的 Kafka 叢集
  • 定義了 3 個 topics
  • 2x 複本 ⇒ 可容忍 1 台系統失效
  • Broker 1 持有 Topic 1 與 Topic 2 的複本
  • Broker 2 持有 Topic 2 與 Topic 3 的複本
  • Broker 3 持有 Topic 1 與 Topic 3 的複本
  • 每個 topic 在叢集內分散於 2 個 brokers
Apache Kafka 入門

1 次故障的範例

Kafka cluster, brokers, and topics - 1 failed broker.png

  • Broker 2 故障
  • 複本因子為 2x
    • 2 - 1 ⇒ 可承受 1 台失效
  • 每個 topic 在叢集中仍至少有一個複本
Apache Kafka 入門

2 次故障的範例

Kafka cluster, brokers, and topics - 2 failed brokers.png

  • 有 2 個 brokers 故障
  • 複本因子為 2x
  • 超出可支援的失效數(1 台)
  • Topic 2 在叢集中已無可用複本
    • Topic 1 與 Topic 3 仍可用,因此非全面故障
Apache Kafka 入門

一起來練習吧!

Apache Kafka 入門

Preparing Video For Download...