編輯推薦
Kafka最初是由LinkedIn公司開發的消息係統,現在已成為Apache的開源項目。早期版本的Kafka主要是作為一個分布式、可分區和具有副本的消息係統,隨著版本的不斷迭代,在0.10.x版本之後Kafka已成為一個分布式流數據處理平颱,特彆是KafkaStreams的齣現,使得Kafka對流數據處理變得更加簡單。
Kafka發展至今已具備很多特性,如分布式、高吞吐量、低延遲、高水平擴展性、高容錯性等,也正是由於Kafka具備這些特性,使Kafka在大數據處理、日誌收集、實時監控、離綫統計分析等應用場景都被廣泛使用。
本書內容按照從抽象到具體、從點到綫再到麵的學習思維模式進行編排,由淺入深、理論與實踐相結閤地對Kafka進行瞭講解和分析。剖析Kafka實現原理時,Kafka核心組件各成一節;講解Kafka基本操作及應用實踐時,從簡單操作拓展到高級應用。全書的各章之間沒有很強的依賴關係,讀者可以從其中任何一章開始閱讀。
本書雖適閤作為入門書籍,但其內容豐富又不失深度,既深入剖析瞭Kafka核心原理,又側重實際操作實戰。閱讀本書讀者不僅可以掌握如何應用Kafka,更重要的是還可以瞭解Kafka性能優化和Kafka相關功能改造方麵的方法和理論。
本書是基於Kafka的0.10.1.1版本編寫的。
內容簡介
《Kafka入門與實踐》以Kafka 0.10.1.1版本以基礎,對Kafka的基本組件的實現細節及其基本應用進行瞭詳細介紹,同時,通過對Kafka與當前大數據主流框架整閤應用案例的講解,進一步展現瞭Kafka在實際業務中的作用和地位。本書共10章,按照從抽象到具體、從點到綫再到麵的學習思維模式,由淺入深,理論與實踐相結閤,對Kafka進行瞭分析講解。
《Kafka入門與實踐》中的大量實例來源於作者在實際工作中的實踐,具有現實指導意義。相信讀者閱讀完本書之後,能夠全麵掌握Kafka的基本實現原理及其基本操作,能夠根據書中的案例舉一反三,解決實際工作和學習中的問題。此外,在閱讀本書時,讀者可以根據本書對Kafka理論的分析,再結閤Kafka源碼進行定位學習,瞭解Kafka的設計和思想以及更多的編碼技巧。
《Kafka入門與實踐》適閤應用Kafka的專業技術人員閱讀,包括但不限於大數據相關應用的開發者、運維者和愛好者,也適閤高等院校、培訓結構相關專業的師生使用。
作者簡介
牟大恩,武漢大學碩士,曾先後在網易杭州研究院、掌門科技、優酷土豆集團擔任高級開發工程師和資深開發工程師職務,目前就職於海通證券總部。有多年的Java開發及係統設計經驗,專注於互聯網金融及大數據應用相關領域。
目錄
第1章 Kafka簡介 1
1.1 Kafka背景 1
1.2 Kafka基本結構 2
1.3 Kafka基本概念 2
1.4 Kafka設計概述 6
1.4.1 Kafka設計動機 6
1.4.2 Kafka特性 6
1.4.3 Kafka應用場景 8
1.5 本書導讀 9
1.6 小結 9
第2章 Kafka安裝配置 11
2.1 基礎環境配置 11
2.1.1 JDK安裝配置 11
2.1.2 SSH安裝配置 13
2.1.3 ZooKeeper環境 15
2.2 Kafka單機環境部署 18
2.2.1 Windows環境安裝Kafka 19
2.2.2 Linux環境安裝Kafka 19
2.3 Kafka僞分布式環境部署 21
2.4 Kafka集群環境部署 22
2.5 Kafka Manager安裝 22
2.6 Kafka源碼編譯 25
2.6.1 Scala安裝配置 25
2.6.2 Gradle安裝配置 26
2.6.3 Kafka源碼編譯 26
2.6.4 Kafka導入Eclipse 30
2.7 小結 31
第3章 Kafka核心組件 33
3.1 延遲操作組件 33
3.1.1 DelayedOperation 33
3.1.2 DelayedOperationPurgatory 35
3.1.3 DelayedProduce 36
3.1.4 DelayedFetch 38
3.1.5 DelayedJoin 38
3.1.6 DelayedHeartbeat 39
3.1.7 DelayedCreateTopics 40
3.2 控製器 40
3.2.1 控製器初始化 41
3.2.2 控製器選舉過程 46
3.2.3 故障轉移 48
3.2.4 代理上綫與下綫 49
3.2.5 主題管理 51
3.2.6 分區管理 54
3.3 協調器 58
3.3.1 消費者協調器 58
3.3.2 組協調器 60
3.4 網絡通信服務 64
3.4.1 Acceptor 65
3.4.2 Processor 66
3.4.3 RequestChannel 68
3.4.4 SocketServer啓動過程 69
3.5 日誌管理器 70
3.5.1 Kafka日誌結構 70
3.5.2 日誌管理器啓動過程 77
3.5.3 日誌加載及恢復 79
3.5.4 日誌清理 80
3.6 副本管理器 84
3.6.1 分區 86
3.6.2 副本 88
3.6.3 副本管理器啓動過程 89
3.6.4 副本過期檢查 90
3.6.5 追加消息 92
3.6.6 拉取消息 95
3.6.7 副本同步過程 97
3.6.8 副本角色轉換 99
3.6.9 關閉副本 101
3.7 Handler 103
3.8 動態配置管理器 104
3.9 代理健康檢測 106
3.10 Kafka內部監控 107
3.11 小結 110
第4章 Kafka核心流程分析 111
4.1 KafkaServer啓動流程分析 111
4.2 創建主題流程分析 115
4.2.1 客戶端創建主題 115
4.2.2 分區副本分配 117
4.3 生産者 121
4.3.1 Eclipse運行生産者源碼 121
4.3.2 生産者重要配置說明 123
4.3.3 OldProducer執行流程 124
4.3.4 KafkaProducer實現原理 127
4.4 消費者 140
4.4.1 舊版消費者 140
4.4.2 KafkaConsumer初始化 140
4.4.3 消費訂閱 144
4.4.4 消費消息 145
4.4.5 消費偏移量提交 149
4.4.6 心跳探測 150
4.4.7 分區數與消費者綫程的關係 151
4.4.8 消費者平衡過程 153
4.5 小結 154
第5章 Kafka基本操作實戰 155
5.1 KafkaServer管理 155
5.1.1 啓動Kafka單個節點 155
5.1.2 啓動Kafka集群 159
5.1.3 關閉Kafka單個節點 160
5.1.4 關閉Kafka集群 161
5.2 主題管理 162
5.2.1 創建主題 162
5.2.2 刪除主題 164
5.2.3 查看主題 165
5.2.4 修改主題 166
5.3 生産者基本操作 168
5.3.1 啓動生産者 168
5.3.2 創建主題 169
5.3.3 查看消息 170
5.3.4 生産者性能測試工具 170
5.4 消費者基本操作 174
5.4.1 消費消息 174
5.4.2 單播與多播 179
5.4.3 查看消費偏移量 181
5.4.4 消費者性能測試工具 183
5.5 配置管理 183
5.5.1 主題級彆配置 184
5.5.2 代理級彆設置 185
5.5.3 客戶端/用戶級彆配置 187
5.6 分區操作 188
5.6.1 分區Leader平衡 188
5.6.2 分區遷移 190
5.6.3 增加分區 194
5.6.4 增加副本 195
5.7 連接器基本操作 198
5.7.1 獨立模式 198
5.7.2 REST風格API應用 201
5.7.3 分布式模式 204
5.8 Kafka Manager應用 209
5.9 Kafka安全機製 211
5.9.1 利用SASL/PLAIN進行身份認證 212
5.9.2 權限控製 215
5.10 鏡像操作 218
5.11 小結 219
第6章 Kafka API編程實戰 221
6.1 主題管理 222
6.1.1 創建主題 222
6.1.2 修改主題級彆配置 223
6.1.3 增加分區 224
6.1.4 分區副本重分配 224
6.1.5 刪除主題 225
6.2 生産者API應用 225
6.2.1 單綫程生産者 226
6.2.2 多綫程生産者 231
6.3 消費者API應用 233
6.3.1 舊版消費者API應用 233
6.3.2 新版消費者API應用 239
6.4 自定義組件實現 247
6.4.1 分區器 247
6.4.2 序列化與反序列化 249
6.5 Spring與Kafka整閤應用 257
6.5.1 生産者 259
6.5.2 消費者 263
6.6 小結 266
第7章 Kafka Streams 267
7.1 Kafka Streams簡介 267
7.2 Kafka Streams基本概念 268
7.2.1 流 268
7.2.2 流處理器 268
7.2.3 處理器拓撲 268
7.2.4 時間 269
7.2.5 狀態 270
7.2.6 KStream和KTable 270
7.2.7 窗口 271
7.3 Kafka Streams API介紹 272
7.3.1 KStream與KTable 272
7.3.2 窗口操作 274
7.3.3 連接操作 275
7.3.4 變換操作 277
7.3.5 聚閤操作 279
7.4 接口惡意訪問自動檢測 281
7.4.1 應用描述 281
7.4.2 具體實現 282
7.5 小結 285
第8章 Kafka數據采集應用 287
8.1 Log4j集成Kafka應用 287
8.1.1 應用描述 287
8.1.2 具體實現 287
8.2 Kafka與Flume整閤應用 289
8.2.1 Flume簡介 290
8.2.2 Flume與Kafka比較 291
8.2.3 Flume的安裝配置 291
8.2.4 Flume采集日誌寫入Kafka 293
8.3 Kafka與Flume和HDFS整閤應用 294
8.3.1 Hadoop安裝配置 295
8.3.2 Flume采集Kafka消息寫入HDFS 298
8.4 小結 301
第9章 Kafka與ELK整閤應用 303
9.1 ELK環境搭建 304
9.1.1 Elasticsearch安裝配置 304
9.1.2 Logstash安裝配置 307
9.1.3 Kibana安裝配置 308
9.2 Kafka與Logstash整閤 309
9.2.1 Logstash收集日誌到Kafka 309
9.2.2 Logstash從Kafka消費日誌 310
9.3 日誌采集分析係統 312
9.3.1 Flume采集日誌配置 312
9.3.2 Logstash拉取日誌配置 313
9.3.3 Kibana日誌展示 314
9.4 服務器性能監控係統 315
9.4.1 Metricbeat安裝 316
9.4.2 采集信息存儲到Elasticsearch 316
9.4.3 加載beats-dashboards 318
9.4.4 服務器性能監控係統具體實現 318
9.5 小結 321
第10章 Kafka與Spark整閤應用 323
10.1 Spark簡介 323
10.2 Spark基本操作 324
10.2.1 Spark安裝 325
10.2.2 Spark shell應用 326
10.2.3 spark-submit提交作業 327
10.3 Spark在智能投顧領域應用 328
10.3.1 應用描述 328
10.3.2 具體實現 329
10.4 熱搜詞統計 334
10.4.1 應用描述 334
10.4.2 具體實現 335
10.5 小結 340
Kafka入門與實踐 下載 mobi epub pdf txt 電子書 格式