《深入理解Kafka:核心設計與實踐原理》電子工業出版社2019年1月出版的圖書,作者朱忠華。
基本介紹
- 書名:深入理解Kafka:核心設計與實踐原理
- 作者:朱忠華
- ISBN:978-7-121-35902-6
- 頁數:456
- 定價:99
- 出版社:電子工業出版社
- 出版時間:2019-1
- 開本:16
內容提要,目錄,
內容提要
《深入理解Kafka:核心設計與實踐原理》從Kafka的基礎概念切入,循序漸進地轉入對其內部原理的剖析。《深入理解Kafka:核心設計與實踐原理》主要闡述了Kafka中生產者客戶端、消費者客戶端、主題與分區、日誌存儲、原理解析、監控管理、套用擴展及流式計算等內容。雖然Kafka的核心使用Scala語言編寫,但《深入理解Kafka:核心設計與實踐原理》基本以Java語言作為主要的示例語言,方便大多數讀者的理解。雖然《深入理解Kafka:核心設計與實踐原理》沒有明確的界定,但總體上可以劃分為三個部分:基礎篇、原理篇和擴展篇,前4章為基礎篇,包括基礎概念、生產者、消費者,以及主題與分區,學習完這4章的內容完全可以應對絕大多數的開發場景。第5章至第8章為原理篇,包括對日誌存儲、協定設計、控制器、組協調器、事務、一致性、可靠性等內容的探究,學習完這4章的內容可以讓讀者對Kafka有一個深刻的認知。最後4章從套用擴展層面來做講解,可以歸類為擴展篇,主要內容包括監控、套用工具、套用擴展(延時佇列、重試佇列、死信佇列、訊息軌跡等)、與Spark的集成等,讓讀者可以對Kafka的生態有一個更加全面的認知。
《深入理解Kafka:核心設計與實踐原理》定位為一本實戰與原理相結合的書,既適合Kafka的初學者,也適合於對Kafka有一定深度認知的老手。
目錄
第1章 初識Kafka
1.1 基本概念
1.2 安裝與配置
1.3 生產與消費
1.4 服務端參數配置
1.5 總結
第2章 生產者
2.1 客戶端開發
2.1.1 必要的參數配置
2.1.2 訊息的傳送
2.1.3 序列化
2.1.4 分區器
2.1.5 生產者攔截器
2.2 原理分析
2.2.1 整體架構
2.2.2 元數據的更新
2.3 重要的生產者參數
2.4 總結
第3章 消費者
3.1 消費者與消費組
3.2 客戶端開發
3.2.1 必要的參數配置
3.2.2 訂閱主題與分區
3.2.3 反序列化
3.2.4 訊息消費
3.2.5 位移提交
3.2.6 控制或關閉消費
3.2.7 指定位移消費
3.2.8 再均衡
3.2.9 消費者攔截器
3.2.10 多執行緒實現
3.2.11 重要的消費者參數
3.3 總結
第4章 主題與分區
4.1 主題的管理
4.1.1 創建主題
4.1.2 分區副本的分配
4.1.3 查看主題
4.1.4 修改主題
4.1.5 配置管理
4.1.6 主題端參數
4.1.7 刪除主題
4.2 初識KafkaAdminClient
4.2.1 基本使用
4.2.2 主題合法性驗證
4.3 分區的管理
4.3.1 優先副本的選舉
4.3.2 分區重分配
4.3.3 複製限流
4.3.4 修改副本因子
4.4 如何選擇合適的分區數
4.4.1 性能測試工具
4.4.2 分區數越多吞吐量就越高嗎
4.4.3 分區數的上限
4.4.4 考量因素
4.5 總結
第5章 日誌存儲
5.1 檔案目錄布局
5.2 日誌格式的演變
5.2.1 v0版本
5.2.2 v1版本
5.2.3 訊息壓縮
5.2.4 變長欄位
5.2.5 v2版本
5.3 日誌索引
5.3.1 偏移量索引
5.3.2 時間戳索引
5.4 日誌清理
5.4.1 日誌刪除
5.4.2 日誌壓縮
5.5 磁碟存儲
5.5.1 頁快取
5.5.2 磁碟I/O流程
5.5.3 零拷貝
5.6 總結
第6章 深入服務端
6.1 協定設計
6.2 時間輪
6.3 延時操作
6.4 控制器
6.4.1 控制器的選舉及異常恢復
6.4.2 優雅關閉
6.4.3 分區leader的選舉
6.5 參數解密
6.5.1 broker.id
6.5.2 bootstrap.servers
6.5.3 服務端參數列表
6.6 總結
第7章 深入客戶端
7.1 分區分配策略
7.1.1 RangeAssignor分配策略
7.1.2 RoundRobinAssignor分配策略
7.1.3 StickyAssignor分配策略
7.1.4 自定義分區分配策略
7.2 消費者協調器和組協調器
7.2.1 舊版消費者客戶端的問題
7.2.2 再均衡的原理
7.3 __consumer_offsets剖析
7.4 事務
7.4.1 訊息傳輸保障
7.4.2 冪等
7.4.3 事務
7.5 總結
第8章 可靠性探究
8.1 副本剖析
8.1.1 失效副本
8.1.2 ISR的伸縮
8.1.3 LEO與HW
8.1.4 Leader Epoch的介入
8.1.5 為什麼不支持讀寫分離
8.2 日誌同步機制
8.3 可靠性分析
8.4 總結
第9章 Kafka套用
9.1 命令行工具
9.1.1 消費組管理
9.1.2 消費位移管理
9.1.3 手動刪除訊息
9.2 Kafka Connect
9.2.1 獨立模式
9.2.2 REST API
9.2.3 分散式模式
9.3 Kafka Mirror Maker
9.4 Kafka Streams
9.5 總結
第10章 Kafka監控
10.1 監控數據的來源
10.1.1 OneMinuteRate
10.1.2 獲取監控指標
10.2 消費滯後
10.3 同步失效分區
10.4 監控指標說明
10.5 監控模組
10.6 總結
第11章 高級套用
11.1 過期時間(TTL)
11.2 延時佇列
11.3 死信佇列和重試佇列
11.4 訊息路由
11.5 訊息軌跡
11.6 訊息審計
11.7 訊息代理
11.7.1 快速入門
11.7.2 REST API介紹及示例
11.7.3 服務端配置及部署
11.7.4 套用思考
11.8 訊息中間件選型
11.8.1 各類訊息中間件簡述
11.8.2 選型要點概述
11.8.3 訊息中間件選型誤區探討
11.9 總結
第12章 Kafka與Spark的集成
12.1 Spark的安裝及簡單套用
12.2 Spark編程模型
12.3 Spark的運行結構
12.4 Spark Streaming簡介
12.5 Kafka與Spark Streaming的整合
12.6 Spark SQL
12.7 Structured Streaming
12.8 Kafka與Structured Streaming的整合
12.9 總結
附錄A Kafka源碼環境搭建