Kafka並不難學!:入門、進階、商業實戰 | 被動收入的投資秘訣 - 2024年7月

Kafka並不難學!:入門、進階、商業實戰

作者:鄧傑
出版社:電子工業
出版日期:2018年11月01日
ISBN:9787121352478
語言:繁體中文

本書基於Kafka 0.10.2.0以上版本,採用“理論+實踐”的形式編寫。全書共68個實例。

 

全書共分為4篇:第1篇,介紹了消息隊列和Kafka、安裝與配置Kafka環境;第2篇,介紹了Kafka的基礎操作、生產者和消費者、存儲及管理數據;第3篇,介紹了更高級的Kafka知識及應用,包括安全機制、連接器、流處理、監控與測試;第4篇,是對前面知識的綜合及實際應用,包括ELK套件整合實戰、Spark實時計算引擎整合實戰、Kafka Eagle監控系統設計與實現實戰。


鄧傑

資深大數據全棧開發者,極客學院講師,開源愛好者,博客園博主。

開發了Kafka系統監控管理工具——Kafka Eagle,將其發佈在Github上,深受業界開發者讚譽。

作為極客學院特邀講師期間,製作了多個技術視頻,講授Hadoop技術、Kafka技術等課程,廣受學員好評。


第一章 了解消息隊列和Kafka /2

1.1 本章教學視頻說明 /2

1.2 消息隊列 /2

∟1.2.1 什麼是消息隊列 /3

∟1.2.2 消息隊列主要有哪些作用 /3

1.3 為什麼需要Kafka /6

1.4 Kafka的基本概念 /7

∟1.4.1 代理、生產者、消費者、消費者組 /7

∟1.4.2 主題、分區、副本、記錄 /8

1.5 了解Kafka的工作機制——生產消息 /消費消息 /9

1.6 Kafka的使用範圍 /

∟1.6.1 Kafka的設計初衷 /

∟1.6.2 Kafka的特性 /11

∟1.6.3 Kafka適用於哪些場景 /13

1.7 小結 /14

 

第2章 安裝及配置Kafka /15

2.1 本章教學視頻說明 /15

2.2 安裝與配置基礎環境 /16

∟2.2.1 安裝並配置Linux操作系統 /16

∟2.2.2 實例1:安裝與配置Java運行環境 /18

∟2.2.3 實例2:配置SSH免密碼登錄 /21

∟2.2.4 實例3:安裝與配置Zookeeper /23

2.3 實例4:部署Kafka /27

∟2.3.1 單機模式部署 /27

∟2.3.2 分佈式模式部署 /29

2.4 實例5:安裝與配置Kafka監控工具 /32

∟2.4.1 獲取並編譯Kafka Eagle源代碼 /32

∟2.4.2 安裝與配置Kafka Eagle /33

2.5 實例6:編譯Kafka源代碼 /37

∟2.5.1 安裝與配置Scala運行環境 /38

∟2.5.2 安裝與配置Gradle /39

∟2.5.3 了解Kafka源代碼的編譯過程 /40

2.6 實例7:將Kafka源代碼導入編輯器 /42

∟2.6.1 導入IntelliJ IDEA編輯器 /42

∟2.6.2 導入Eclipse編輯器 /44

2.7 了解元數據的存儲分佈 /46

2.8 了解控制器的選舉流程 /48

∟2.8.1 了解控制器的啟動順序 /48

∟2.8.2 了解主題分區Leader節點的選舉過程 /52

∟2.8.3 了解註冊分區和副本狀態機 /59

∟2.8.4 了解分區自動均衡和分區重新分配 /61

2.9 小結 /66

 

——第2篇 入門

第3章 Kafka的基本操作 /68

3.1 本章教學視頻說明 /68

3.2 操作Zookeeper集群 /68

∟3.2.1 Zookeeper的作用及背景 /69

∟3.2.2 實例8:單機模式啟動Zookeeper系統 /70

∟3.2.3 實例9:單機模式關閉Zookeeper系統 /72

∟3.2.4 實例:分佈式模式啟動Zookeeper集群 /74

3.2.5 實例11:分佈式模式關閉Zookeeper集群 /77

3.3 操作Kafka集群 /77

∟3.3.1 實例12:單機模式啟動Kafka系統 /78

∟3.3.2 實例13:單機模式關閉Kafka系統 /79

∟3.3.3 實例14:分佈式模式啟動Kafka集群 /81

∟3.3.4 實例15:分佈式模式關閉Kafka集群 /84

3.4 管理主題 /85

∟3.4.1 什麼是主題 /86

∟3.4.2 實例16:創建主題 /87

∟3.4.3 實例17:查看主題 /88

∟3.4.4 實例18:修改主題 /92

∟3.4.5 實例19:刪除主題 /94

3.5 管理分區與副本 /95

∟3.5.1 分區和副本的背景及作用 /95

∟3.5.2 實例20:修改分區 /96

∟3.5.3 實例21:修改副本數 /97

3.6 小結 /994.1 本章教學視頻說明 /0

4.2 了解Kafka生產者 /1

4.3 使用腳本操作生產者 /1

∟4.3.1 實例22:通過監控工具查看消息 /2

∟4.3.2 實例23:啟動消費者程序,並查看消息 /3

4.4 發送消息到Kafka主題 /4

∟4.4.1 了解異步模式 /4

∟4.4.2 實例24:生產者用異步模式發送消息 /5

∟4.4.3 了解同步模式 /5

∟4.4.4 實例25:生產者用同步模式發送消息 /6

∟4.4.5 多線程發送消息 /7

∟4.4.6 實例26:生產者用單線程發送消息 /7

∟4.4.7 實例27:生產者用多線程發送消息 /1

4.5 配置生產者的屬性 /112

4.6 保存對象的各個屬性——序列化 /115

∟4.6.1 實例28:序列化一個對象 /115

∟4.6.2 實例29:在生產者應用程序中實現序列化 /117

4.7 自定義主題分區 /122

∟4.7.1 實例30:編寫自定義主題分區的算法 /122

∟4.7.2 實例31:演示自定義分區類的使用 /123

4.8 小結 /125

 

第5章 從Kafka系統中讀取消息數據——消費 /126

5.1 本章教學視頻說明 /126

5.2 了解Kafka消費者 /126

∟5.2.1 為什麼需要消費者組 /126

∟5.2.1 消費者和消費者組的區別 /127

∟5.2.2 消費者和分區的對應關係 /127

5.3 使用Kafka系統的腳本操作消費者 /130

∟5.3.1 認識消費者新接口 /130

∟5.3.2 實例32:用新接口啟動消費者程序,並查看消費者信息 /131

∟5.3.3 實例33:用舊接口啟動消費者程序,並查看消費者元數據的存儲結構 /134

5.4 消費Kafka集群中的主題消息 /136

∟5.4.1 主題如何自動獲取分區和手動分配分區 /137

∟5.4.2 實例34:主題自動 /手動獲取分區 /137

∟5.4.3 實例35:反序列化主題消息 /140

∟5.4.4 如何提交消息的偏移量 /145

∟5.4.5 實例36:使用多線程消費多個分區的主題 /146

5.5 配置消費者的屬性 /150

5.6 小結 /151

 

第6章 存儲及管理數據 /152

6.1 本章教學視頻說明 /152

6.2 分區存儲數據 /152

∟6.2.1 熟悉分區存儲 /153

∟6.2.2 了解消息的格式 /154

6.3 清理過期數據的兩種方法 /155

6.4 網絡模型和通信流程 /156

∟6.4.1 基本數據類型 /156

∟6.4.2 通信模型 /157

∟6.4.3 通信過程 /157

6.6 小結 /159

 

——第3篇 進階

第7章 Kafka安全機制 /162

7.1 本章教學視頻說明 /162

7.2 了解Kafka的安全機制 /162

∟7.2.1 身份驗證 /163

∟7.2.2 權限控制 /163

7.3 使用SSL協議進行加密和身份驗證 /164

∟7.3.1 了解SSL協議 /164

∟7.3.2 實例37:創建SSL密鑰庫,並查看密鑰庫文件 /165

∟7.3.3 實例38:創建私有證書 /167

∟7.3.4 實例39:導出證書,使用CA對證書進行簽名 /170

∟7.3.5 實例40:在服務端配置SSL協議,並創建主題 /173

∟7.3.6 實例41:在客戶端配置SSL協議,並讀 /寫數據 /174

7.4 使用SASL協議進行認證 /176

∟7.4.1 給客戶端配置“Java認證和授權服務”(JAAS) /176

∟7.4.2 給服務端配置SASL /178

∟7.4.3 實例42:開啟SASL /Kerberos認證協議 /178

∟7.4.4 實例43:開啟SASL /PLAIN認證協議 /181

∟7.4.5 實例44:開啟SASL /SCRAM認證協議 /184

7.5 權限控制 /187

∟7.5.1 權限控制的基礎命令 /187

∟7.5.2 配置ACL(訪問控制列表) /188

∟7.5.3 實例45:啟動集群 /189

∟7.5.4 實例46:查看授權、添加授權、刪除授權 /190

7.6 小結 /195

 

第8章 用Kafka連接器建立數據管道 /196

8.1 本章教學視頻說明 /196

8.2 認識Kafka連接器 /196

∟8.2.1 了解連接器的使用場景 /197

∟8.2.2 特性及優勢 /198

∟8.3 操作Kafka連接器 /199

8.3.1 配置Kafka連接器的屬性 /199

∟8.3.2 認識應用接口——REST API /202

∟8.3.3 實例47:單機模式下,將數據導入Kafka主題中 /203

∟8.3.4 實例48:單機模式下,將Kafka主題中的數據導出 /205

∟8.3.5 實例49:分佈式模式下,將數據導入Kafka主題 /206

8.4 實例50:開發一個簡易的Kafka連接器插件 /2

∟8.4.1 編寫Source連接器 /211

∟8.4.2 編寫Sink連接器 /217

∟8.4.3 打與部署 /220

8.5 小結 /225

 

第9章 Kafka流處理 /226

9.1 本章教學視頻說明 /226

9.2 初識Kafka流處理 /227

∟9.2.1 什麼是流處理 /227

∟9.2.2 什麼是流式計算 /227

∟9.2.3 為何要使用流處理 /228

9.3 了解流處理的架構 /229

∟9.3.1 流分區與任務 /230

∟9.3.2 線程模型 /232

∟9.3.3 本地狀態存儲 /234

∟9.3.4 容錯性(Failover) /235

9.4 操作KStream和KTable /235

∟9.4.1 流處理的核心概念 /236

∟9.4.2 窗口操作 /237

∟9.4.3 連接操作 /241

∟9.4.4 轉換操作 /246

∟9.4.5 聚合操作 /247

9.5 實例51:利用流處理開發一個單詞統計程序 /248

∟9.5.1 創建Kafka流主題 /248

∟9.5.2 統計流主題中單詞出現的頻率 /249

∟9.5.3 預覽操作結果 /250

9.6 實例52:利用Kafka流開發一個SQL引擎 /251

∟9.6.1 構建生產流數據源 /251

∟9.6.2 構建Kafka流處理 /253

∟9.6.3 構建數據結構和執行SQL邏輯 /254

∟9.6.4 觀察操作結果 /255

9.7 小結 /256

 

第10章 監控與測試 /257

.1 本章教學視頻說明 /257

.2 Kafka的監控工具——Kafka Eagle系統 /258

∟.2.1 實例53:管理主題 /258

∟.2.2 實例54:查看消費者組信息 /259

∟.2.3 實例55:查看Kafka與Zookeeper集群的狀態和性能 /263

.3 測試生產者性能 /264

∟.3.1 了解測試環境 /264

∟.3.2 認識測試工具 /265

∟.3.3 實例56:利用工具測試生產者性能 /266

.4 測試消費者性能 /275

∟.4.1 了解測試環境 /275

∟.4.2 認識測試工具 /276

∟.4.3 實例57:利用腳本測試消費者的性能 /276

.4 小結 /280

-

——第4篇 商業實戰

第11章 Kafka與ELK套件的整合 /282

11.1 本章教學視頻說明 /282

11.2 安裝與配置ELK /283

∟11.2.1 安裝與配置LogStash /283

∟11.2.2 實例58:LogStash的標準輸入與輸出 /285

∟11.2.3 安裝與配置ElasticSearch /287

∟11.2.4 實例59:使用ElasticSearch集群的接口創建索引 /292

∟11.2.5 實例60:使用ElasticSearch集群的接口查看索引 /293

∟11.2.6 實例61:使用ElasticSearch集群的接口添加數據 /294

∟11.2.7 安裝與配置Kibana /296

∟11.2.8 實例62:啟動並驗證Kibana系統 /298

11.3 實例63:實現一個遊戲日誌實時分析系統 /299

∟11.3.1 了解系統要實現的功能 /300

∟11.3.2 了解平台體系架構


相關書籍