天天看點

Kafka架構介紹|青訓營筆記

一、消息隊列概述

消息隊列

Kafka架構介紹|青訓營筆記

應用場景

  • MQ消息通道:異步解耦、削峰填谷、釋出訂閱、高可用
Kafka架構介紹|青訓營筆記
  • EventBridge資料總線
  • 事件源:将雲服務、自定義應用、SaaS應用等應用程式産生的事件消息釋出到事件集
  • 事件集:存儲接收到的事件消息,根據事件規則将消息路由到事件目标
  • 事件目标:消費事件消息
Kafka架構介紹|青訓營筆記
  • Data Platfrom 資料流平台
  • 提供批/流資料處理能力
  • 各類元件提供各類Connect
  • 提供Streaming/Function能力
  • 根據資料schema靈活的進行資料預處理能力
Kafka架構介紹|青訓營筆記

二、Kafka詳解

Kafka架構介紹

Kafka架構介紹|青訓營筆記

Zookeeper

Kafka架構介紹|青訓營筆記
  • 選舉機制:Paxos機制
  • 提供一緻性:寫入強一緻性、讀取會話一緻性
  • 提供可用性:一半以上節點存活即可讀寫
  • 提供功能:watch機制、持久/臨時節點能力

Borker

Kafka架構介紹|青訓營筆記
  • 若幹個Broker節點組成Kafka叢集
  • Broker作為消息的接受子產品,使用React網絡模型進行消息資料的接受
  • Broker作為消息的持久化子產品,進行消息的副本複制以及持久化
  • Broker作為高可用子產品,通過副本間的Failover進行高可用保證

Controller選舉

Kafka架構介紹|青訓營筆記
  • Broker啟動會嘗試去zk中注冊controller節點
  • 注冊上controller節點的broker即為controller
  • 其餘broker會watch controller節點,節點出現異常進行重新注冊

Controller的作用

Kafka架構介紹|青訓營筆記
  • Broker重新開機/當機時,負責副本的Failover操作
  • Topic建立/删除時,負責Topic meta資訊廣播
  • 叢集擴縮容時,進行狀态控制
  • Partition/Replica 狀态機維護

Coordinator

Kafka架構介紹|青訓營筆記
  • 負責topic-partition與consumer的負載均衡
  • 根據不同的場景提供不同的配置設定政策

Kafka高可用

kafka副本ISR機制

  • AR:已經配置設定的所有副本
  • OSR:很久沒有同步資料的副本
  • ISR:一直在同步資料的副本

kafka寫入Ack機制

  • Ack=1:leader副本寫入成功,priducer即認為寫成功
  • Ack=0:producer發送後即為成功
  • Ack=-1:ISR中所有的副本都成功,producer才認為寫成功

kafka副本同步

  • LEO:日志最末尾的資料
  • HW:ISR中最小的LEO作為HW,HW的消息為Consumer可見的消息

kafka副本選舉

  • Clean選舉:優先選取lsr中的副本為leader,如果lsr中無可用副本,則partition不可用
  • Unclean選舉:優先選取lsr中的副本為leader,如果lsr中無可用副本,則選擇其他存活副本