《Kafka入門與實踐》讀書筆記
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兩種方式。
相關文章
- Kafka 入門與實踐Kafka
- 《GitHub 入門與實踐》閱讀筆記(第4章)Github筆記
- Kafka v2.3 快速入門與實踐Kafka
- 《讀書與做人》讀書筆記筆記
- 《Redis 設計與實踐》讀書筆記系列五:字典 rehashRedis筆記
- 7月讀書筆記-Python程式設計:從入門到實踐(未完進展中)筆記Python程式設計
- 【docker】Docker入門到實踐 筆記Docker筆記
- Lua設計與實現--讀書筆記筆記
- 類載入讀書筆記筆記
- 14-《ARKit by Tutorials》讀書筆記1:開始入門筆記
- Java 併發程式設計實踐 讀書筆記四Java程式設計筆記
- 黑客與畫家讀書筆記黑客筆記
- 《C缺陷與陷阱》讀書筆記筆記
- TypeScript入門與實踐TypeScript
- Docker 入門與實踐Docker
- locsut 入門與實踐
- 《Hbase原理與實踐》讀書筆記——2.基礎資料結構與演算法筆記資料結構演算法
- 讀書筆記筆記
- 《Maven實戰》之讀書筆記Maven筆記
- 讀書筆記(四):深度學習基於Keras的Python實踐筆記深度學習KerasPython
- 《Redis深度歷險:核心原理和應用實踐》讀書筆記Redis筆記
- GitOps快速入門與實踐Git
- 設計模式之單例模式(《JavaScript設計模式與開發實踐》讀書筆記)設計模式單例JavaScript筆記
- 《Spring實戰》讀書筆記 #每日筆記 100-004Spring筆記
- spring boot實戰讀書筆記(1)Spring Boot筆記
- webpackDemo讀書筆記Web筆記
- Vue讀書筆記Vue筆記
- 散文讀書筆記筆記
- Cucumber讀書筆記筆記
- HTTP 讀書筆記HTTP筆記
- postgres 讀書筆記筆記
- 讀書筆記2筆記
- 讀書筆記3筆記
- 《Python資料分析與挖掘實戰》-- 讀書筆記(2)-- 2019Python筆記
- 現代作業系統-原理與實現【讀書筆記】作業系統筆記
- 讀書筆記之《深入理解Java虛擬機器:JVM高階特性與最佳實踐》筆記Java虛擬機JVM
- 【電子書獎勵計劃】特徵工程入門與實踐1特徵工程
- Git與Github入門實踐(上)Github