Kafka Streams 實戰 (Kafka Streams in Action: Real-time apps and microservices with the Kafka Streaming API)

Kafka Streams 實戰 (Kafka Streams in Action: Real-time apps and microservices with the Kafka Streaming API)

作者: [美]小威廉·P. 貝傑克(William P. Bejeck Jr.)
出版社: 人民郵電
出版在: 2019-05-01
ISBN-13: 9787115507396
ISBN-10: 7115507392





內容描述


Kafka Streams是Kafka提供的一個用於構建流式處理程序的Java庫,它與Storm、Spark等流式處理框架不同,是一個僅依賴於Kafka的Java庫,而不是一個流式處理框架。除Kafka之外,Kafka Streams不需要額外的流式處理集群,提供了輕量級、易用的流式處理API。
本書包括4部分,共9章,從基礎API到復雜拓撲的應用,通過具體示例由淺入深地詳細介紹了Kafka Streams基礎知識及使用方法。本書的主要內容包含流式處理發展歷程和Kafka Streams工作原理的介紹,Kafka基礎知識的介紹,使用Kafka Streams實現一個具體流式處理應用程序,討論狀態存儲及其使用方法,討論表和流的二元性及使用場景,介紹Kafka Streams應用程序的監控及測試方法,介紹使用Kafka Connect將現有數據源集成到Kafka Streams中,使用KSQL進行交互式查詢等。
本書適合使用Kafka Streams實現流式處理應用的開發人員閱讀。


目錄大綱


第一部分開啟Kafka Streams之旅
第1章歡迎來到Kafka Streams 3 
1.1大數據的發展以及它是如何改變程序設計方式的3 
1.1.1大數據起源4 
1.1.2 MapReduce中的重要概念5 
1.1.3批處理還不夠7 
1.2流式處理簡介8 
1.3處理購買交易9 
1.3.1權衡流式處理的選擇9 
1.3.2將需求解構為圖表10 
1.4改變看待購買交易的視角10 
1.4.1源節點11 
1.4 .2信用卡屏蔽節點11 
1.4.3模式節點11 
1.4.4獎勵節點12 
1.4.5存儲節點13 
1.5 Kafka Streams在購買處理節點圖中的應用13 
1.6 Kafka Streams在購買交易流中的應用14 
1.6.1定義源15 
1.6.2第一個處理器:屏蔽信用卡號碼15 
1.6.3第二個處理器:購買模式16 
1.6.4第三個處理器:客戶獎勵17 
1.6.5第四個處理器:寫入購買記錄18 
1.7小結18 
第2章Kafka快速指南20 
2.1數據問題20
2.2使用Kafka處理數據21 
2.2.1 ZMart原始的數據平台21 
2.2.2一個Kafka銷售交易數據中心22 
2.3 Kafka架構23 
2.3.1 Kafka是一個消息代理23 
2.3.2 Kafka是一個日誌24 
2.3.3 Kafka日誌工作原理25 
2.3.4 Kafka和分區25 
2.3.5分區按鍵對數據進行分組26 
2.3.6編寫自定義分區器27 
2.3.7指定一個自定義分區器28 
2.3.8確定恰當的分區數29 
2.3 .9分佈式日誌29 
2.3.10 ZooKeeper:領導者、追隨者和副本30 
2.3.11 Apache ZooKeeper 31 
2.3.12選擇一個控制器31 
2.3.13副本31 
2.3.14控制器的職責32 
2.3.15日誌管理33 
2.3.16日誌刪除33 
2.3.17日誌壓縮35 
2.4生產者發送消息36 
2.4.1生產者屬性38 
2.4.2指定分區和時間戳39 
2.4.3指定分區39 
2.4.4 Kafka中的時間戳40 
2.5消費者讀取消息40 
2.5.1管理偏移量41
2.5.2自動提交偏移量42 
2.5.3手動提交偏移量42 
2.5.4創建消費者43 
2.5.5消費者和分區43 
2.5.6再平衡43 
2.5.7更細粒度的消費者分配44 
2.5.8消費者示例44 
2.6安裝和運行Kafka 45 
2.6.1 Kafka本地配置45 
2.6.2運行Kafka 46 
2.6.3發送第一條消息47 
2.7小結49 
第二部分Kafka Streams開發篇
第3章開發Kafka Streams 53 
3.1流式處理器API 53 
3.2 Kafka Streams的Hello World 54 
3.2.1構建“Yelling App”的拓撲55 
3.2.2 Kafka Streams配置58 
3.2.3 Serde的創建59 
3.3處理客戶數據60 
3.3.1構建一個拓撲61 
3.3.2創建一個自定義的Serde 67 
3.4交互式開發69 
3.5下一步71 
3.5.1新需求71 
3.5.2將記錄寫入Kafka之外76 
3.6小結78 
第4章流和狀態79 
4.1事件的思考79
4.2將狀態操作應用到Kafka Stream 81 
4.2.1值轉換處理器82 
4.2.2有狀態的客戶獎勵82 
4.2.3初始化值轉換器84 
4.2.4使用狀態將Purchase對象映射為Reward Accumulator 84 
4.2.5更新獎勵處理器88 
4.3使用狀態存儲查找和記錄以前看到的數據89 
4.3.1數據本地化90 
4.3.2故障恢復和容錯91 
4.3.3 Kafka Streams使用狀態存儲91 
4.3.4其他鍵/值存儲供應者92 
4.3.5狀態存儲容錯93 
4.3.6配置變更日誌主題93 
4.4連接流以增加洞察力94 
4.4.1設置數據95 
4.4.2生成包含客戶ID的鍵來執行連接96 
4.4.3構建連接98 
4.4.4其他連接選項102 
4.5 Kafka Streams中的時間戳104 
4.5.1自帶的時間戳提取器實現類105 
4.5.2 WallclockTimestampExtractor 106 
4.5.3自定義時間戳提取器106 
4.5.4指定一個時間戳提取器107 
4.6小結108 
第5章KTable API 109 
5.1流和表之間的關係110
5.1.1記錄流110 
5.1.2更新記錄或變更日誌111 
5.1.3事件流與更新流對比113 
5.2記錄更新和KTable配置115 
5.2.1設置緩存緩衝大小115 
5.2.2設置提交間隔116 
5.3聚合和開窗操作117 
5.3.1按行業匯總股票成交量118 
5.3.2開窗操作122 
5.3.3連接KStream和KTable 128 
5.3.4 GlobalKTable 130 
5.3.5可查詢的狀態133 
5.4小結133 
第6章處理器API 135 
6.1更高階抽象與更多控制的權衡135 
6.2使用源、處理器和接收器創建一個拓撲136 
6.2.1添加一個源節點136 
6.2.2添加一個處理器節點137 
6.2.3增加一個接收器節點140 
6.3通過股票分析處理器深入研究處理器API 141 
6.3.1股票表現處理器應用程序142 
6.3.2 process()方法145 
6.3.3 punctuator執行147 
6.4組合處理器148 
6.5集成處理器API和Kafka Streams API 158 
6.6小結159
第三部分管理Kafka Streams 
第7章監控和性能163 
7.1 Kafka基本監控163 
7.1.1測評消費者和生產者性能164 
7.1.2檢查消費滯後165 
7.1.3攔截生產者和消費者166 
7.2應用程序指標169 
7.2.1指標配置171 
7.2.2如何連接到收集到的指標172 
7.2.3使用JMX 172 
7.2.4查看指標176 
7.3更多Kafka Streams調試技術177 
7.3.1查看應用程序的表現形式177 
7.3. 2獲取應用程序各種狀態的通知178 
7.3.3使用狀態監聽器179 
7.3.4狀態恢復監聽器181 
7.3.5未捕獲的異常處理器184 
7.4小結184 
第8章測試Kafka Streams應用程序185 
8.1測試拓撲186 
8.1.1構建測試用例188 
8.1.2測試拓撲中的狀態存儲190 
8.1.3測試處理器和轉換器191 
8.2集成測試193 
8.3小結199 
第四部分Kafka Streams進階
第9章Kafka Streams的高級應用203
9.1將Kafka與其他數據源集成204 
9.1.1使用Kafka Connect集成數據205 
9.1.2配置Kafka Connect 205 
9.1.3轉換數據207 
9.2替代數據庫211 
9.2.1交互式查詢的工作原理213 
9.2.2分配狀態存儲213 
9.2.3創建和查找分佈式狀態存儲215 
9.2.4編寫交互式查詢216 
9.2.5查詢服務器內部218 
9.3 KSQL 221 
9.3.1 KSQL流和表222 
9.3.2 KSQL架構222 
9.3.3安裝和運行KSQL 224 
9.3.4創建一個KSQL流224 
9.3.5編寫KSQL查詢226 
9.3.6創建一張KSQL表227 
9.3.7配置KSQL 227 
9.4小結228 
附錄A額外的配置信息229 
附錄B精確一次處理語義234


作者介紹


[美]小威廉·P.貝傑克(William P. Bejeck Jr.)譯者:牟大恩
小威廉·P.貝傑克(William P. Bejeck Jr.,本名Bill Bejeck)是Kafka Streams源碼貢獻者,在Conflument公司的Kafka Streams團隊工作,有15年以上的軟件開發經驗,其中8年專注於後端開發,特別是處理大量數據,在數據提煉團隊中,使用Kafka來改善下游客戶的數據流。




相關書籍

Big Data: Principles and best practices of scalable realtime data systems (Paperback)

作者 Nathan Marz James Warren

2019-05-01

Designing Microservices Platforms with NATS: A modern approach to designing and implementing scalable microservices platforms with NATS messaging

作者 Fernando Chanaka

2019-05-01

Learning Rails: Live Edition (Paperback)

作者 Simon St. Laurent Edd Wilder-James

2019-05-01