Kafka實(shí)戰(zhàn)(異步圖書出品)
定 價(jià):89 元
- 作者:迪倫·斯科特(DylanScott),維克托·蓋莫夫(ViktorGamov),戴夫·克萊因著,薛命燈譯
- 出版時(shí)間:2023/7/1
- ISBN:9787115614445
- 出 版 社:人民郵電出版社
- 中圖法分類:TP316.4
- 頁(yè)碼:200
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書旨在介紹Kafka的核心功能,以及如何在實(shí)際項(xiàng)目中使用它。本書主要內(nèi)容包括Kafka的核心概念,如何使用Kafka Connect設(shè)置和執(zhí)行基本ETL任務(wù),如何將Kafka用于大型數(shù)據(jù)項(xiàng)目,如何執(zhí)行管理任務(wù),如何生成和使用事件流,如何在Java應(yīng)用程序中使用Kafka,如何將Kafka實(shí)現(xiàn)為消息隊(duì)列等。通過閱讀本書,讀者應(yīng)該很快就會(huì)掌握如何在日常工作流程中使用Kafka,還可以開始深入研究更高級(jí)的Kafka主題。
本書適合軟件開發(fā)人員閱讀,也可作為計(jì)算機(jī)相關(guān)專業(yè)的教材。
適讀人群 :本書適合Java開發(fā)人員、大數(shù)據(jù)平臺(tái)開發(fā)人員以及對(duì)分布式系統(tǒng)感興趣的讀者閱讀,也適合高等院校、培訓(xùn)結(jié)構(gòu)相關(guān)專業(yè)的師生使用。 1.Confluent 聯(lián)合創(chuàng)辦人饒軍傾情推薦,基于Kafka 3.1.0,系統(tǒng)介紹Kafka的功能和應(yīng)用。
2.Kafka是一種高性能的軟件總線,為完成事件流處理、日志記錄、數(shù)據(jù)分析和其他數(shù)據(jù)處理任務(wù)提供了便利,非常適合軟件開發(fā)人員學(xué)習(xí)。
3.本書詳細(xì)講解了Kafka的核心特性,并結(jié)合實(shí)際的示例展示了Kafka的應(yīng)用,讓讀者能輕松使用Kafka為應(yīng)用程序?qū)崿F(xiàn)運(yùn)營(yíng)數(shù)據(jù)監(jiān)控和大規(guī)模事件處理。
Dylan Scott是一名軟件開發(fā)人員,擁有十多年Java和Perl開發(fā)經(jīng)驗(yàn)。在將Kafka作為大型數(shù)據(jù)遷移項(xiàng)目的消息系統(tǒng)之后,Dylan又進(jìn)一步探索Kafka和流式處理的世界。他使用過各種技術(shù)和消息隊(duì)列產(chǎn)品,包括Mule、RabbitMQ、MQSeries和Kafka。Dylan擁有Sun Java SE 1.6、Oracle Web EE 6、Neo4j和Jenkins Engineer等方面的證書。
Viktor Gamov就職于Confluent公司。Confluent就是那家開發(fā)基于Kafka的事件流平臺(tái)的公司。在Viktor的整個(gè)職業(yè)生涯中,他使用開源技術(shù)構(gòu)建企業(yè)應(yīng)用程序架構(gòu),積累了全面的專業(yè)知識(shí)。他喜歡幫助架構(gòu)師與開發(fā)人員設(shè)計(jì)和開發(fā)低延遲、可伸縮且高可用的分布式系統(tǒng)。Viktor不僅是分布式系統(tǒng)、流式數(shù)據(jù)、JVM和DevOps等主題的專業(yè)會(huì)議講師,還是JavaOne、Devoxx、OSCON、QCon等活動(dòng)的?汀K荅nterprise Web Development(O’Reilly出版社)一書的合著者。
Dave Klein擔(dān)任過開發(fā)人員、架構(gòu)師、項(xiàng)目經(jīng)理、作家、培訓(xùn)師、會(huì)議組織者等,主要研究方向是Kafka事件流。
目錄
第 一部分 快速入門
第 1章 Kafka簡(jiǎn)介 3
1.1 什么是Kafka 4
1.2 Kafka的使用情況 7
1.2.1 開發(fā)人員的Kafka 7
1.2.2 向管理人員介紹Kafka 9
1.3 關(guān)于Kafka的謎團(tuán) 9
1.3.1 Kafka只能與Hadoop一起使用 9
1.3.2 Kafka與其他消息系統(tǒng)是一樣的 10
1.4 現(xiàn)實(shí)世界中的Kafka 11
1.4.1 早期的例子 11
1.4.2 后來的例子 12
1.4.3 什么時(shí)候不適合使用Kafka 13
1.5 其他在線資源 14
總結(jié) 14
第 2章 了解Kafka 15
2.1 發(fā)送和讀取一條消息 15
2.2 什么是Broker 16
2.3 Kafka之旅 20
2.3.1 生產(chǎn)者和消費(fèi)者 20
2.3.2 主題 23
2.3.3 ZooKeeper 24
2.3.4 Kafka的高級(jí)架構(gòu) 25
2.3.5 提交日志 26
2.4 其他API及其用途 26
2.4.1 Kafka Streams 27
2.4.2 Kafka Connect 28
2.4.3 AdminClient 28
2.4.4 ksqlDB 29
2.5 Confluent的客戶端 29
2.6 流式處理及術(shù)語(yǔ)解釋 32
2.6.1 流式處理 33
2.6.2 精確一次語(yǔ)義 34
總結(jié) 34
第二部分 應(yīng)用Kafka
第3章 設(shè)計(jì)并實(shí)現(xiàn)一個(gè)Kafka項(xiàng)目 37
3.1 設(shè)計(jì)一個(gè)Kafka項(xiàng)目 37
3.1.1 重新設(shè)計(jì)已有的數(shù)據(jù)
架構(gòu) 38
3.1.2 改變的第 一步 38
3.1.3 內(nèi)置的特性 38
3.1.4 票據(jù)數(shù)據(jù) 40
3.2 設(shè)計(jì)傳感器事件 42
3.2.1 現(xiàn)有的問題 43
3.2.2 為什么Kafka是最合適的 44
3.2.3 關(guān)于我們的設(shè)計(jì) 45
3.2.4 用戶數(shù)據(jù)需求 46
3.2.5 應(yīng)用我們的問題清單 46
3.2.6 評(píng)審我們的設(shè)計(jì) 49
3.3 數(shù)據(jù)格式 50
3.3.1 數(shù)據(jù)規(guī)劃 50
3.3.2 配置依賴項(xiàng) 51
總結(jié) 56
第4章 生產(chǎn)者——數(shù)據(jù)的源頭 57
4.1 一個(gè)示例 57
4.2 生產(chǎn)者的配置參數(shù) 61
4.2.1 配置Broker地址列表 61
4.2.2 如何提升速度(或安全性) 62
4.2.3 時(shí)間戳 64
4.3 代碼實(shí)現(xiàn) 65
總結(jié) 73
第5章 消費(fèi)者——解鎖數(shù)據(jù) 74
5.1 一個(gè)示例 74
5.1.1 消費(fèi)者的配置屬性 76
5.1.2 理解偏移量 79
5.2 消費(fèi)者之間的交互 82
5.3 跟蹤偏移量 82
5.3.1 組協(xié)調(diào)器 83
5.3.2 分區(qū)的分配策略 85
5.4 提交偏移量 86
5.5 從壓實(shí)的主題中讀取數(shù)據(jù) 88
5.6 工廠示例的消費(fèi)者代碼 88
5.6.1 偏移量的配置選項(xiàng) 89
5.6.2 滿足設(shè)計(jì)需求 90
總結(jié) 93
第6章 Broker 94
6.1 Broker簡(jiǎn)介 94
6.2 ZooKeeper的角色 95
6.3 Broker級(jí)別的配置選項(xiàng) 96
6.3.1 Kafka的應(yīng)用程序日志 98
6.3.2 服務(wù)器日志 98
6.3.3 管理集群狀態(tài) 98
6.4 分區(qū)的首領(lǐng)和它們的職責(zé) 99
6.5 窺探Kafka 102
6.5.1 集群維護(hù) 103
6.5.2 增加一個(gè)Broker 104
6.5.3 升級(jí)集群 104
6.5.4 升級(jí)客戶端 104
6.5.5 備份 105
6.6 關(guān)于有狀態(tài)系統(tǒng) 105
6.7 練習(xí) 106
總結(jié) 108
第7章 主題和分區(qū) 109
7.1 主題 109
7.1.1 主題的配置選項(xiàng) 112
7.1.2 復(fù)制系數(shù) 114
7.2 分區(qū) 114
7.2.1 分區(qū)的位置 114
7.2.2 查看日志 115
7.3 使用EmbeddedKafkaCluster 116
7.4 主題壓實(shí) 118
總結(jié) 120
第8章 Kafka的存儲(chǔ) 121
8.1 需要保存數(shù)據(jù)多長(zhǎng)時(shí)間 121
8.2 移動(dòng)數(shù)據(jù) 122
8.2.1 保留原始事件 123
8.2.2 擺脫批處理思維 123
8.3 工具 123
8.3.1 Apache Flume 124
8.3.2 Red Hat Debezium 125
8.3.3 Secor 126
8.3.4 數(shù)據(jù)存儲(chǔ)應(yīng)用示例 126
8.4 將數(shù)據(jù)放回Kafka 127
8.5 Kafka支持的架構(gòu) 128
8.5.1 Lambda架構(gòu) 128
8.5.2 Kappa架構(gòu) 129
8.6 多集群設(shè)置 130
8.7 基于云和容器的存儲(chǔ)方案 131
總結(jié) 131
第9章 管理Kafka——工具和日志 132
9.1 管理客戶端 132
9.1.1 在代碼中使用AdminClient 133
9.1.2 kcat 134
9.1.3 Confluent REST Proxy API 135
9.2 將Kafka作為systemd服務(wù)運(yùn)行 137
9.3 日志 137
9.3.1 Kafka的應(yīng)用程序日志 138
9.3.2 ZooKeeper的日志 139
9.4 防火墻 140
9.5 指標(biāo) 141
9.6 跟蹤 143
9.6.1 生產(chǎn)者邏輯 144
9.6.2 消費(fèi)者邏輯 145
9.6.3 覆蓋客戶端 147
9.7 通用的監(jiān)控工具 148
總結(jié) 148
第三部分 Kafka進(jìn)階
第 10章 保護(hù)Kafka 151
10.1 安全性基礎(chǔ) 152
10.1.1 用SSL加密 153
10.1.2 Broker和客戶端之間的 SSL 154
10.1.3 Broker之間的SSL 156
10.2 Kerberos與SASL 157
10.3 Kafka的授權(quán)機(jī)制 158
10.3.1 訪問控制列表 158
10.3.2 基于角色的訪問控制 159
10.4 ZooKeeper 160
10.5 配額 160
10.5.1 網(wǎng)絡(luò)帶寬配額 161
10.5.2 請(qǐng)求速率配額 162
10.6 靜態(tài)數(shù)據(jù) 163
總結(jié) 164
第 11章 Schema Registry 165
11.1 Kafka成熟度模型 165
11.1.1 級(jí)別0 166
11.1.2 級(jí)別1 166
11.1.3 級(jí)別2 167
11.1.4 級(jí)別3 168
11.2 Schema Registry 168
11.2.1 安裝Confluent Schema Registry 168
11.2.2 注冊(cè)表的配置 169
11.3 Schema的特性 170
11.3.1 REST API 170
11.3.2 客戶端庫(kù) 171
11.4 兼容性規(guī)則 172
11.5 Schema Registry之外的選擇 174
總結(jié) 175
第 12章 流式處理 176
12.1 Kafka Streams 177
12.1.1 KStreams API DSL 178
12.1.2 KTable API 181
12.1.3 GlobalKTable API 181
12.1.4 Processor API 182
12.1.5 設(shè)置Kafka Streams 184
12.2 ksqlDB——一個(gè)事件流 數(shù)據(jù)庫(kù) 185
12.2.1 查詢 186
12.2.2 本地開發(fā) 186
12.2.3 ksqlDB的架構(gòu) 188
12.3 更進(jìn)一步 188
12.3.1 Kafka改進(jìn)提案 188
12.3.2 值得了解的Kafka項(xiàng)目 189
12.3.3 社區(qū)Slack頻道 189
總結(jié) 189
附錄A 安裝 190
附錄B 客戶端示例 197