精通Kafka Streams与ksqlDB
精通Kafka Streams与ksqlDB
Mitch Seymour
字立生, 王乔阳, 李佳兴 译
出版时间:2026年05月
页数:326
“流处理已成为一个前所未有的重要编程范式。这本书无疑照亮了通往成功的道路。”
——Jay Kreps
Apache Kafka联合创始人,Confluent联合创始人兼CEO

处理无边界、快速移动的数据流在过去一直很困难,但自从有了Kafka Streams和ksqlDB,构建流处理应用变得轻松有趣。这本实用的指南将向数据工程师展示如何使用这些工具来构建高度可扩展的流处理应用程序,从而实时地移动、丰富和转换大量数据。
Mailchimp的数据服务工程师Mitch Seymour将结合几个有趣的业务问题背景,讲解重要的流处理概念。你将学习Kafka Streams和ksqlDB各自的优势,从而帮助你为每个独一无二的流处理项目选择最佳工具。对于非Java开发者来说,ksqlDB的学习路径将是流处理领域一个特别平缓的入门方式。
● 学习Kafka基础知识和发布/订阅通信模式。
● 使用Kafka Streams和ksqlDB构建无状态和有状态的流处理应用程序。
● 执行高级有状态操作,包括窗口化、关联和聚合。
● 深入理解有状态处理的底层工作原理。
● 了解由Kafka Connect支持的ksqlDB数据集成功能。
● 使用ksqlDB中的不同类型的集合,并执行推送查询和拉取查询。
● 将你的Kafka Streams和ksqlDB应用部署到生产环境。
  1. 前言
  2. 第一部分 Kafka
  3. 第1章 初识Kafka
  4. 1.1 通信模型
  5. 1.2 流是如何存储的
  6. 1.3 主题与分区
  7. 1.4 事件
  8. 1.5 Kafka集群和代理服务器
  9. 1.6 消费组
  10. 1.7 安装Kafka
  11. 1.8 你好,Kafka
  12. 1.9 总结第二部分 Kafka Streams
  13. 第2章 初识Kafka Streams
  14. 2.1 Kafka生态
  15. 2.1.1 Kafka Streams之前
  16. 2.1.2 初识Kafka Streams
  17. 2.2 特性一览
  18. 2.3 运维特性
  19. 2.3.1 伸缩性
  20. 2.3.2 可靠性
  21. 2.3.3 可维护性
  22. 2.4 与其他系统的对比
  23. 2.4.1 部署模型
  24. 2.4.2 处理模型
  25. 2.4.3 Kappa架构
  26. 2.5 应用场景
  27. 2.6 处理器拓扑
  28. 2.6.1 子拓扑
  29. 2.6.2 深度优先处理
  30. 2.6.3 数据流编程的优点
  31. 2.6.4 任务和流线程
  32. 2.7 高层级DSL与低层级处理器API
  33. 2.8 教程介绍:Hello, Streams
  34. 2.8.1 项目搭建
  35. 2.8.2 创建新项目
  36. 2.8.3 添加Kafka Streams依赖
  37. 2.8.4 DSL
  38. 2.8.5 处理器API
  39. 2.9 流和表
  40. 2.9.1 流/表的二元性
  41. 2.9.2 KStream, KTable, GlobalKTable
  42. 2.10 总结
  43. 第3章 无状态处理
  44. 3.1 无状态处理与有状态处理
  45. 3.2 教程介绍:处理一个推特流
  46. 3.3 项目初始化
  47. 3.4 添加一个KStream源处理器
  48. 3.5 序列化/反序列化
  49. 3.5.1 构建自定义Serdes
  50. 3.5.2 定义数据类
  51. 3.5.3 实现自定义反序列化器
  52. 3.5.4 实现自定义序列化器
  53. 3.5.5 构建Tweet Serdes
  54. 3.6 过滤数据
  55. 3.7 分支数据
  56. 3.8 翻译推文
  57. 3.9 合并流
  58. 3.10 补全推文信息
  59. 3.10.1 Avro数据类
  60. 3.10.2 情绪分析
  61. 3.11 序列化Avro数据
  62. 3.11.1 无注册表Avro Serdes
  63. 3.11.2 Schema Registry–感知型Avro Serdes
  64. 3.12 添加接收器处理器
  65. 3.13 运行代码
  66. 3.14 实证验证
  67. 3.15 总结
  68. 第4章 Kafka有状态处理
  69. 4.1 有状态处理的优点
  70. 4.2 有状态操作符预览
  71. 4.3 状态存储
  72. 4.3.1 共同特性
  73. 4.3.2 持久化存储与内存存储
  74. 4.4 教程介绍:电子游戏排行榜
  75. 4.5 项目搭建
  76. 4.6 数据模型
  77. 4.7 添加源处理器
  78. 4.7.1 KStream
  79. 4.7.2 KTable
  80. 4.7.3 GlobalKTable
  81. 4.8 注册流和表
  82. 4.9 关联
  83. 4.9.1 关联操作符
  84. 4.9.2 关联类型
  85. 4.9.3 协同分区
  86. 4.9.4 值关联器
  87. 4.9.5 KStream关联KTable(关联players)
  88. 4.9.6 KStream关联GlobalKTable(关联products)
  89. 4.10 记录分组
  90. 4.10.1 流分组
  91. 4.10.2 表分组
  92. 4.11 聚合
  93. 4.11.1 聚合流
  94. 4.11.2 聚合表
  95. 4.12 整合所有步骤
  96. 4.13 交互式查询
  97. 4.13.1 物化存储
  98. 4.13.2 访问只读状态存储
  99. 4.13.3 查询非窗口化的键值存储
  100. 4.13.4 本地查询
  101. 4.13.5 远程查询
  102. 4.14 总结
  103. 第5章 窗口与时间
  104. 5.1 教程介绍:患者监测应用程序
  105. 5.2 项目设置
  106. 5.3 数据模型
  107. 5.4 时间语义
  108. 5.5 时间戳提取器
  109. 5.5.1 包含的时间戳提取器
  110. 5.5.2 自定义时间戳提取器
  111. 5.5.3 注册带有时间戳提取器的流
  112. 5.6 窗口化流
  113. 5.6.1 窗口类型
  114. 5.6.2 选择一个窗口
  115. 5.6.3 窗口聚合
  116. 5.7 发出窗口结果
  117. 5.7.1 宽限期
  118. 5.7.2 抑制(Suppression)
  119. 5.8 窗口化KTables过滤和重新更改键
  120. 5.9 窗口化关联
  121. 5.10 时间驱动的Dataflow
  122. 5.10.1 接收器告警
  123. 5.10.2 查询窗口化键值存储
  124. 5.11 总结
  125. 第6章 高级状态管理
  126. 6.1 持久化态存储的磁盘布局
  127. 6.2 容错性
  128. 6.2.1 更改日志主题
  129. 6.2.2 备用副本
  130. 6.3 再均衡:状态(存储)的敌人
  131. 6.4 防止状态迁移
  132. 6.4.1 黏性分配
  133. 6.4.2 静态成员机制
  134. 6.5 降低再均衡的影响
  135. 6.5.1 增量协作再均衡
  136. 6.5.2 控制状态大小
  137. 6.6 利用记录缓存进行去重写入
  138. 6.7 状态存储监控
  139. 6.7.1 添加状态监听器
  140. 6.7.2 添加状态恢复监听器
  141. 6.8 内置指标
  142. 6.9 交互式查询
  143. 6.10 自定义状态存储
  144. 6.11 总结
  145. 第7章 处理器API
  146. 7.1 何时使用处理器API
  147. 7.2 教程介绍:IoT数字孪生服务
  148. 7.3 项目设置
  149. 7.4 数据模型
  150. 7.5 添加源处理器
  151. 7.6 添加无状态流处理器
  152. 7.7 创建无状态处理器
  153. 7.8 创建有状态处理器
  154. 7.9 使用Punctuate的周期性函数
  155. 7.10 访问记录元数据
  156. 7.11 添加接收器处理器
  157. 7.12 交互式查询
  158. 7.13 整合所有组件
  159. 7.14 结合处理器API与DSL
  160. 7.15 处理器和转换器
  161. 7.16 整合所有组件:重构
  162. 7.17 总结
  163. 第三部分 ksqlDB
  164. 第8章 ksqlDB入门
  165. 8.1 ksqlDB是什么
  166. 8.2 何时使用ksqlDB
  167. 8.3 新型数据库的演进之路
  168. 8.3.1 Kafka Streams集成
  169. 8.3.2 Connect集成
  170. 8.3.3 ksqlDB与传统SQL数据库的比较
  171. 8.3.4 相似之处
  172. 8.3.5 不同之处
  173. 8.4 架构
  174. 8.4.1 ksqlDB服务器
  175. 8.4.2 ksqlDB客户端
  176. 8.5 部署模式
  177. 8.5.1 交互模式
  178. 8.5.2 无头模式
  179. 8.6 教程
  180. 8.6.1 安装ksqlDB
  181. 8.6.2 运行ksqlDB服务器
  182. 8.6.3 预处理主题
  183. 8.6.4 使用ksqlDB CLI
  184. 8.7 总结
  185. 第9章 ksqlDB的数据集成
  186. 9.1 Kafka Connect概述
  187. 9.2 外部模式与嵌入模式的Connect
  188. 9.2.1 外部模式
  189. 9.2.2 嵌入模式
  190. 9.3 配置Connect工作节点
  191. 9.4 教程
  192. 9.5 安装连接器
  193. 9.5.1 使用ksqlDB创建连接器
  194. 9.5.2 展示连接器
  195. 9.5.3 描述连接器
  196. 9.5.4 删除连接器
  197. 9.6 验证源连接器
  198. 9.7 与Kafka Connect集群直接交互
  199. 9.8 内省托管Schema
  200. 9.9 总结
  201. 第10章 ksqlDB基础流处理
  202. 10.1 教程:监控Netflix的变更
  203. 10.2 项目配置
  204. 10.3 源主题
  205. 10.4 数据类型
  206. 10.5 集合
  207. 10.5.1 创建源集合
  208. 10.5.2 WITH子句
  209. 10.6 处理流和表
  210. 10.6.1 展示流和表
  211. 10.6.2 描述流和表
  212. 10.6.3 修改流和表
  213. 10.6.4 删除流和表
  214. 10.7 基础查询
  215. 10.7.1 插入值
  216. 10.7.2 简单的选择查询(瞬时推送查询)
  217. 10.7.3 投影
  218. 10.7.4 过滤
  219. 10.7.5 扁平化/解嵌套复杂结构
  220. 10.8 条件表达式
  221. 10.8.1 COALESCE表达式
  222. 10.8.2 IFNULL表达式
  223. 10.8.3 CASE表达式
  224. 10.9 将结果写回Kafka(持久化查询)
  225. 10.10 整合所有组件
  226. 10.11 总结
  227. 第11章 使用ksqlDB进行中级和高级流处理
  228. 11.1 项目设置
  229. 11.2 从SQL文件启动环境
  230. 11.3 数据丰富化
  231. 11.3.1 关联
  232. 11.3.2 窗口化关联
  233. 11.4 聚合
  234. 11.4.1 聚合基础
  235. 11.4.2 窗口化聚合
  236. 11.5 物化视图
  237. 11.6 客户端
  238. 11.7 拉取查询
  239. 11.8 推送查询
  240. 11.9 函数和运算符
  241. 11.9.1 运算符
  242. 11.9.2 显示函数
  243. 11.9.3 描述函数
  244. 11.9.4 创建自定义函数
  245. 11.9.5 自定义ksqlDB函数的其他资源
  246. 11.10 总结
  247. 第四部分 通往产品之路
  248. 第12章 测试、监控和部署
  249. 12.1 测试
  250. 12.1.1 测试ksqlDB的查询
  251. 12.1.2 测试Kafka Streams
  252. 12.1.3 行为测试
  253. 12.1.4 基准测试
  254. 12.1.5 Kafka集群基准测试
  255. 12.1.6 测试的最终思考
  256. 12.2 监控
  257. 12.2.1 监控检查清单
  258. 12.2.2 提取JMX指标
  259. 12.3 部署
  260. 12.3.1 ksqlDB容器
  261. 12.3.2 Kafka Streams容器
  262. 12.3.3 容器编排
  263. 12.4 操作
  264. 12.4.1 重置Kafka Streams应用程序
  265. 12.4.2 限制应用程序输出速率
  266. 12.4.3 升级Kafka Streams
  267. 12.5 升级ksqlDB
  268. 12.6 总结
  269. 附录A Kafka Streams配置
  270. 附录B ksqlDB配置
  271. 作者介绍
  272. 封面介绍
书名:精通Kafka Streams与ksqlDB
作者:Mitch Seymour
译者:字立生, 王乔阳, 李佳兴 译
国内出版社:中国电力出版社
出版时间:2026年05月
页数:326
书号:978-7-5239-1197-6
原版书书名:Mastering Kafka Streams and ksqlDB
原版书出版商:O'Reilly Media
Mitch Seymour
 
Mitch Seymour是Mailchimp的一名高级工程师和技术主管。他使用Kafka Streams和ksqlDB构建的流处理应用程序,每天能以亚秒级的延迟处理数十亿个事件。他曾在公司技术讲座、本地交流会和国际会议上分享这些技术,并为ksqlDB的代码库和各种在线出版物做出过贡献。
 
 
本书封面上的动物是一只天堂鱼(学名:Macropodus opercularis)。在东亚的大多数淡水水域中都可以找到野生天堂鱼,它也是一种广受欢迎的观赏鱼,是西方水族爱好者最早可以获得的观赏鱼之一。
这些具有攻击性的小鱼有分叉的尾巴,身上有红或橙色与蓝或绿色交替的鲜艳条纹,当鱼儿打斗或受到其他刺激时,这些条纹的颜色可能会改变。它们的腹鳍总是橙色的。它们可以长到6.7cm,但通常体长约5.5cm。天堂鱼能在各种水质条件下生存,尽管它们最常见于植被茂密的浅水中。
天堂鱼是捕食者,以昆虫、无脊椎动物和鱼苗为食。它们好斗,会互相骚扰和攻击,也会攻击其他小鱼。据观察,它们离家越远,攻击性行为就越强。作为一种仍然常见的水族鱼,天堂鱼的保护状况为“最不需关注”,尽管河流污染已威胁到一些区域性种群。O’Reilly封面上的许多动物都濒临灭绝,但它们都对世界至关重要。
购买选项
定价:128.00元
书号:978-7-5239-1197-6
出版社:中国电力出版社