作 者:(美)格溫·沙皮拉 等 著 薛命燈 譯
定 價:119.8
出 版 社:人民郵電出版社
出版日期:2022年11月01日
頁 數:344
裝 幀:平裝
ISBN:9787115601421
本書第1版出版時,有超過30%的《財富》世界500強公司使用Kafka。5年後,這個比例已經達到70%。毋庸置疑,作為大數據時代的核心技術,Kafka已然成為所有動態數據平臺的事實基礎。本書為使用Kafka的軟件工程師、架構師和運維工程師勾勒出一條完整的學習曲線,並強調原理剖析和應用實踐。來自Confluent和LinkedIn的一線Kafka開發人員將為你解釋如何部署生產級Kafka集群、編寫可靠的事件驅動微服務,以及使用Kafka構建可伸縮的流處理應用程序。通過詳細的示例,你將了解Kaf等
●本書贊譽xvii
第2版序xix
第1版序xxi
前言xxiii
第1章初識Kafka1
1.1發布與訂閱消息繫統1
1.1.1如何開始2
1.1.2獨立的隊列繫統3
1.2Kafka登場3
1.2.1消息和批次4
1.2.2模式4
1.2.3主題和分區4
1.2.4生產者和消費者5
1.2.5broker和集群6
1.2.6多集群7
1.3為什麼選擇Kafka8
1.3.1多個生產者8
1.3.2多個消費者8
1.3.3基於磁盤的數據保留9
1.3.4伸縮性9
1.3.5高性能9
1.3.6平臺特性9
1.4數據生態繫統9
1.5起源故事11
1.5.1LinkedIn的問題11
1.5.2Kafka的誕生12
1.5.3走向開源12
1.5.4商業化13
1.5.5命名13
1.6開始Kafka之旅13
第2章安裝Kafka14
2.1環境配置14
2.1.1選擇操作繫統14
2.1.2安裝Java14
2.1.3安裝ZooKeeper15
2.2安裝broker17
2.3配置broker18
2.3.1常規配置參數18
2.3.2主題的默認配置20
2.4選擇硬件24
2.4.1磁盤吞吐量25
2.4.2磁盤容量25
2.4.3內存25
2.4.4網絡25
2.4.5CPU26
2.5雲端的Kafka26
2.5.1微軟Azure26
2.5.2AWS26
2.6配置Kafka集群27
2.6.1需要多少個broker27
2.6.2broker配置28
2.6.3操作繫統調優28
2.7生產環境的注意事項31
2.7.1垃圾回收器選項31
2.7.2數據中心布局32
2.7.3共享ZooKeeper32
2.8小結33
第3章Kafka生產者——向Kafka寫入數據34
3.1生產者概覽35
3.2創建Kafka生產者36
3.3發送消息到Kafka37
3.3.1同步發送消息38
3.3.2異步發送消息39
3.4生產者配置39
3.4.1client.id40
3.4.2acks40
3.4.3消息傳遞時間41
3.4.4linger.ms43
3.4.5buffer.memory43
3.4.6compression.type43
3.4.7batch.size43
3.4.8max.in.flight.requests.per.connection43
3.4.9max.request.size44
3.4.10receive.buffer.bytes和send.buffer.bytes44
3.4.11enable.idempotence44
3.5序列化器45
3.5.1自定義序列化器45
3.5.2使用Avro序列化數據47
3.5.3在Kafka中使用Avro記錄48
3.6分區51
3.7標頭52
3.853
3.9配額和節流54
3.10小結56
第4章Kafka消費者——從Kafka讀取數據57
4.1Kafka消費者相關概念57
4.1.1消費者和消費者群組57
4.1.2消費者群組和分區再均衡60
4.1.3群組固定成員62
4.2創建Kafka消費者63
4.3訂閱主題63
4.4輪詢64
4.5配置消費者66
4.5.1fetch.min.bytes66
4.5.2fetch.max.wait.ms66
4.5.3fetch.max.bytes66
4.5.4max.poll.records67
4.5.5max.partition.fetch.bytes67
4.5.6session.timeout.ms和heartbeat.interval.ms67
4.5.7max.poll.interval.ms67
4.5.8default.api.timeout.ms68
4.5.9request.timeout.ms68
4.5.10auto.offset.reset68
4.5.11enable.auto.commit68
4.5.12partition.assignment.strategy68
4.5.13client.id69
4.5.14client.rack69
4.5.15group.instance.id70
4.5.16receive.buffer.bytes和send.buffer.bytes70
4.5.17offsets.retention.minutes70
4.6提交和偏移量70
4.6.1自動提交71
4.6.2提交當前偏移量72
4.6.3異步提交73
4.6.4同步和異步組合提交74
4.6.5提交特定的偏移量75
4.7再均衡監聽器76
4.8從特定偏移量位置讀取記錄78
4.9如何退出79
4.10反序列化器80
4.10.1自定義反序列化器81
4.10.2在消費者裡使用Avro反序列器83
4.11獨立的消費者:為什麼以及怎樣使用不屬於任何群組的消費者83
4.12小結84
第5章編程式管理Kafka85
5.1AdminClient概覽85
5.1.1異步和最終一致性API86
5.1.2配置參數86
5.1.3扁平的結構86
5.1.4額外的話86
5.2AdminClient生命周期:創建、配置和關閉87
5.2.1client.dns.lookup87
5.2.2request.timeout.ms88
5.3基本的主題管理操作88
5.4配置管理91
5.5消費者群組管理92
5.5.1查看消費者群組93
5.5.2修改消費者群組94
5.數據95
5.7高級的管理操作96
5.7.1為主題添加分區96
5.7.2從主題中刪除消息96
5.7.3首領選舉97
5.7.4重新分配副本98
5.8測試99
5.9小結101
第6章深入Kafka102
6.1集群的成員關繫102
6.2控制器103
6.3復制105
6.4處理請求107
6.4.1生產請求109
6.4.2獲取請求109
6.4.3其他請求111
6.5物理存儲112
6.5.1分層存儲113
6.5.2分區的分配114
6.5.3文件管理115
6.5.4文件格式115
6.5.5索引117
6.5.6壓實117
6.5.7壓實的工作原理118
6.5.8被刪除的事件119
6.5.9何時會壓實主題119
6.6小結120
第7章可靠的數據傳遞121
7.1可靠性保證121
7.2復制122
7.3broker配置123
7.3.1復制繫數123
7.3.2不的首領選舉125
7.3.3最少同步副本126
7.3.4保持副本同步126
7.3.5持久化到磁盤126
7.4在可靠的繫統中使用生產者127
7.4.1發送確認127
7.4.2配置生產者的重試參數128
7.4.3額外的錯誤處理129
7.5在可靠的繫統中使用消費者129
7.5.1消費者的可靠性配置130
7.5.2手動提交偏移量130
7.6驗證繫統可靠性132
7.6.1驗證配置132
7.6.2驗證應用程序133
7.6.3在生產環境中監控可靠性133
7.7小結134
第8章準確一次性語義135
8.1冪等生產者135
8.1.1冪等生產者的工作原理136
8.1.2冪等生產者的局限性137
8.1.3如何使用冪等生產者138
8.2事務138
8.2.1事務的應用場景139
8.2.2事務可以解決哪些問題139
8.2.3事務是如何保證準確一次性的140
8.2.4事務不能解決哪些問題141
8.2.5如何使用事務143
8.2.6事務ID和隔離145
8.2.7事務的工作原理146
8.3事務的性能148
8.4小結148
第9章構建數據管道149
9.1構建數據管道時需要考慮的問題150
9.1.1及時性150
9.1.2可靠性150
9.1.3高吞吐量和動態吞吐量151
9.1.4數據格式151
9.1.5轉換152
9.1.6安全性152
9.1.7故障處理153
9.1.8耦合性和靈活性153
9.2何時使用Connect API或客戶端API154
9.3KafkaConnect154
9.3.1運行Connect155
9.3.2連接器示例:文件數據源和文件數據池157
9.3.3連接器示例:從MySQL到ElasticSearch159
9.3.4單一消息轉換164
9.3.5深入理解Connect167
9.4Connect之外的選擇169
9.4.1其他數據存儲繫統的數據攝入框架169
9.4.2基於圖形界面的ETL工具169
9.4.3流式處理框架170
9.5小結170
第10章跨集群數據鏡像171
10.1跨集群鏡像的應用場景171
10.2多集群架構172
10.2.1跨數據中心通信的一些現實情況173
10.2.2星型架構173
10.2.3雙活架構175
10.2.4主備架構176
10.2.5延展集群180
10.3MirrorMaker181
10.3.1配置MirrorMaker183
10.3.2多集群復制拓撲184
10.3.3保護MirrorMaker185
10.3.4在生產環境中部署MirrorMaker186
10.3.5MirrorMaker調優189
10.4其他跨集群鏡像方案190
10.4.1Uber的uReplicator190
10.4.2LinkedIn的Brooklin191
10.4.3Confluent的跨數據中心鏡像解決方案191
10.5小結193
第11章保護Kafka194
11.1鎖住Kafka194
11.2安全協議196
11.3身份驗證197
11.3.1SSL198
11.3.2SASL201
11.3.3重新認證210
11.3.4安全更新不停機211
11.4加密212
11.5授權214
11.5.1AclAuthorizer214
11.5.2自定義授權217
11.5.3安全方面的考慮219
11.6審計219
11.7保護ZooKeeper220
11.7.1SASL220
11.7.2SSL221
11.7.3授權221
11.8保護平臺222
11.9小結223
第12章管理Kafka225
12.1主題操作225
12.1.1創建新主題226
12.1.2列出集群中的所有主題227
12.1.3列出主題詳情227
12.1.4增加分區228
12.1.5減少分區229
12.1.6刪除主題229
12.2消費者群組230
12.2.1列出並描述消費者群組信息230
12.2.2刪除消費者群組231
12.2.3偏移量管理232
12.3動態配置變更233
12.3.1覆蓋主題的默認配置233
12.3.2覆蓋客戶端和用戶的默認配置234
12.3.3覆蓋broker的默認配置235
12.3.4查看被覆蓋的配置236
12.3.5移除被覆蓋的配置236
12.4生產和消費236
12.4.1控制臺生產者237
12.4.2控制臺消費者238
12.5分區管理241
12.5.1優選首領選舉241
12.5.2修改分區的副本242
12.5.3轉儲日志片段246
12.5.4副本驗證248
12.6其他工具248
12.7不安全的操作249
12.7.1移動集群控制器249
12.7.2移除待刪除的主題249
12.7.3手動刪除主題250
12.8小結250
第13章監控Kafka251
13.1指標基礎251
13.1.1指標來自哪裡251
13.1.2需要哪些指標252
13.1.3應用程序健康檢測253
13.2服務級別目標254
13.2.1服務級別定義254
13.2.2哪些指標是好的SLI255
13.2.3將SLO用於告警255
13.3broker的指標256
13.3.1診斷集群問題257
13.3.2非同步分區的藝術257
13.3.3broker指標261
13.3.4主題的指標和分區的指標268
13.3.5Java虛擬機監控269
13.3.6操作繫統監控270
13.3.7日志272
13.4客戶端監控272
13.4.1生產者指標272
13.4.2消費者指標274
13.4.3配額276
13.5滯後監控277
13.6端到端監控277
13.7小結278
第14章流式處理279
14.1什麼是流式處理280
14.2流式處理相關概念282
14.2.1拓撲282
14.2.2時間282
14.2.3狀態284
14.2.4流和表284
14.2.5時間窗口285
14.2.6處理保證287
14.3流式處理設計模式287
14.3.1單事件處理287
14.3.2使用本地狀態288
14.3.3多階段處理和重分區289
14.3.4使用外部查找:流和表的連接290
14.3.5表與表的連接291
14.3.6流與流的連接291
14.3.7亂序事件292
14.3.8重新處理293
14.3.9交互式查詢294
14.4Streams示例294
14.4.1字數統計294
14.4.2股票市場統計296
14.4.3填充點擊事件流298
14.5Streams架構概覽300
14.5.1構建拓撲300
14.5.2優化拓撲301
14.5.3測試拓撲301
14.5.4擴展拓撲302
14.5.5在故障中存活下來304
14.6流式處理應用場景305
14.7如何選擇流式處理框架306
14.8小結307
附錄A在其他操作繫統中安裝Kafka309
附錄B其他Kafka工具314
本書全面介紹Kafka的技術原理和應用技巧。內容包括如何安裝和配置Kafka、如何使用Kafka API、Kafka的設計原則和可靠性保證,以及Kafka的一些架構細節,如復制協議、控制器和存儲層。本書列舉了一些非常流行的Kafka應用場景,比如基於事件驅動的微服務繫統的消息總線、流式處理應用程序和大規模數據管道。通過學習本書,你不僅能夠深入理解這項大數據核心技術,還能夠將所學知識付諸實踐,在生產環境中更好地運行Kafka,並基於它構建穩健的高性能應用程序。
本書既適用於使用Kafka API開發應用程序的工程師和大數據平臺開發人員,也適用於在生產環境中與Kafka打交道的運維工程師、站點可靠性工程師和繫統管理員,還適用於為所在公司設計和構建數據基礎架構的數據架構師和數據工程師。
(美)格溫·沙皮拉 等 著 薛命燈 譯
【作者介紹】格溫·沙皮拉(Gwen Shapira)是Kafka項目的Committer和PMC成員,也是Confluent的工程主管,領導雲原生Kafka團隊,致力於打造更具彈性和可伸縮性的Kafka雲服務。托德·帕利諾(Todd Palino)是LinkedIn的站點可靠性工程師,他開發了Kafka消費者監控工具Burrow。拉吉尼·西瓦拉姆(Rajini Sivaram)是Kafka項目的Committer和PMC成員。她在Confluent為Kafka設計和開發跨集群復制和安全功能。克裡特·佩蒂(Krit Petty)是LinkedIn的Kafka站點可靠性工程經理,曾等