Kafka並不難學!:入門、進階、商業實戰 | 被動收入的投資秘訣 - 2024年7月
![](https://www.books.com.tw/img/CN1/160/05/CN11600510.jpg)
Kafka並不難學!:入門、進階、商業實戰
本書基於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 了解平台體系架構