《Kafka入門與實踐》讀書筆記

pbyang5689發表於2018-08-15

Kafka簡介

  • Kafka是一個高吞吐量、分散式的釋出--訂閱訊息系統。、
  •  
  • Kafka核心模組使用Scala語言開發。
  •  
  • Kafka定位就是一個分散式流出來平臺。
  •  
  • 訊息系統:基本結構中至少要有產生訊息的元件(消費生產者,Producer)以及消費訊息的元件(消費者,Consumer)。
  •  
  • 生產者負責生產訊息,將訊息寫入Kafka叢集;消費者從Kafka叢集中拉取訊息。
  •  
  • Kafka將一組訊息抽象歸納為一個主題(Topic),也就是說,一個主題就是對訊息的一個分類。
  •  
  • 生產者將訊息傳送到特定主題,訊息者訂閱主題或主題的某些分割槽進行消費。
  •  
  • 訊息是Kafka通訊的基本單位,由一個固定長度的訊息頭和一個可變長度的訊息體構成。
  •  
  • Kafka叢集就是由一個或多個Kafka例項構成,我們將每一個Kafka例項稱為代理,通常也稱代理為Kafka伺服器。
  •  
  • 生產者負責將訊息傳送給代理,也就是向Kafka代理髮送訊息的客戶端。
  •  
  • Kafka的設計初衷是使kafka能夠成為統一、實時處理大規模資料的平臺。應用場景:

   (1)具有高吞吐量來支援如實時的日誌集這樣的大規模事件流。
   (2)能夠很好地處理積壓的資料,以便能夠週期性地載入離線資料進行處理。
   (3)能給低延遲地處理傳統訊息應用場景。
   (4)能夠支援分割槽、分散式,實時地處理訊息,同時具有容錯保障機制。

  • 訊息系統或者訊息佇列是用來解決應用解耦、非同步通訊、流量控制等問題。
  • 用處:訊息系統、應用監控、網站使用者行為追蹤。

 

  • Kafka特性:
  • 訊息持久化
  • 高吞吐量
  • 擴充套件性
  • 多客戶端支援
  • Kafka Streams
  • 安全機制
  • 資料備份
  • 輕量級
  • 訊息壓縮

 

當前比較流行的訊息中介軟體有Kafka、RocketMQ、Rabbit、ZeroMQ、ActiveMQ、MetaMQ、Redis等,這些訊息中介軟體在效能及功能上各有所長。

 

 

2、Kafka安裝配置

2.1、基礎環境配置

由於Kafka是用Scala語言開發的,執行在JVM上,因此在安裝Kafka之前需要先安裝JDK。

2.1.1、JDK安裝配置

2.1.2、SSH安裝配置

2.1.3   Zookeeper環境

Zookeeper是一個分散式應用程式協調服務框架,分散式應用程式可以基於Zookeeper來實現同步服務、配置維護、命令服務等,Zookeeper能提供基於類似於檔案系統的目錄節點樹方式的資料儲存,通過監控各節點資料狀態的變化,達到基於資料的叢集管理。

Kafka依賴Zookeeper,通過Zookeeper來對代理、消費者上下線管理、叢集、分割槽後設資料管理等,因此Zookeeper也是kafka得以執行的基礎環境之一。

 

2.2、Kafka單機環境部署

 

3、Kafka核心元件

Kafka的核心功能模組,主要包括延遲操作元件、控制器、協調器、網路通訊、日誌管理器、副本管理器、動態配置管理及心跳檢測。

 

3.1、延遲操作元件

 

 

6、Kafka API程式設計實戰

Kafka提供了以下4類核心API。

Producter API。Producter API提供生產者消費相關的介面,通過實現Producer API提供的介面來自定義Producer、自定義分配策略等。

Consumer API。Consumer API提供消費訊息相關介面,包括建立消費者、消費偏移量管理等。

Streams API。Stream API 是Kafka提供的一系列用來構建流處理程式的介面,通過Stream API 讓流處理相關的應用場景變得更加簡單。

Connect API。

6.1 主題管理

由於主題的後設資料資訊是註冊在Zookeeper相應節點之中,所以對主題的操作實質是對Zookeeper中記錄主題後設資料資訊

相關路徑的操作。Kafka將對Zookeeper的相關操作封裝成一個ZkUtils類,並封裝了一個AdminUtilsl類呼叫ZkClient類的相關方法以實現對Kafka後設資料的操作,包括對主題、代理、消費者等相關後設資料的操作。對主題操作的相關API呼叫較簡單,相應操作都是通過呼叫AdminUtils類的相應方法來完成的。

 

6.1.1 、建立主題

 

6.1.2 修改的主題級別配置

 

6.1.3 增加分割槽

 

6.1.4 分割槽副本重分配

 

 

6.2  生產者API應用

 

6.2.1 單執行緒生產者

 

6.5 Spring與Kafka整合應用

Spring與Kafka的整合有spring-kafka和spring-integration-kafka兩種方式。

 

 

 

 

 

 

 

 

 

 

相關文章