Kafka权威指南(第2版)
Gwen Shapira, Todd Palino, Rajini Sivaram, Krit Petty
薛命灯 译
出版时间:2022年10月
页数:483
“这本书为如何在云端或本地用好Kafka提供了所需的一切。如果你正在使用Kafka,那么这本书正是你所需要的。”
——Chris Riccomini
软件工程师、初创公司导师、The Missing README合著者

本书第1版出版时,有超过30%的《财富》世界500强公司使用Kafka。5年后,这个比例已经达到70%。毋庸置疑,作为大数据时代的核心技术,Kafka已然成为所有动态数据平台的事实基础。本书为使用Kafka的软件工程师、架构师和运维工程师勾勒出一条完整的学习曲线,并强调原理剖析和应用实践。
来自Confluent和LinkedIn的一线Kafka开发人员将为你解释如何部署生产级Kafka集群、编写可靠的事件驱动微服务,以及使用Kafka构建可伸缩的流处理应用程序。通过详细的示例,你将了解Kafka的设计原则、可靠性保证,以及架构细节,包括复制协议、控制器和存储层。

● 部署和配置Kafka的良好实践
● Kafka生产者和消费者如何读写消息
● 确保可靠传递数据的模式和用例要求
● 用Kafka构建数据管道和应用程序
● 用Kafka在生产环境中执行监控、调优和维护任务
● Kafka的关键运维指标
● Kafka针对流处理系统的交付能力
  1. 本书赞誉
  2. 第2版序
  3. 第1版序
  4. 前言
  5. 第1章 初识Kafka
  6. 1.1 发布与订阅消息系统
  7. 1.1.1 如何开始
  8. 1.1.2 独立的队列系统
  9. 1.2 Kafka登场
  10. 1.2.1 消息和批次
  11. 1.2.2 模式
  12. 1.2.3 主题和分区
  13. 1.2.4 生产者和消费者
  14. 1.2.5 broker和集群
  15. 1.2.6 多集群
  16. 1.3 为什么选择Kafka
  17. 1.3.1 多个生产者
  18. 1.3.2 多个消费者
  19. 1.3.3 基于磁盘的数据保留
  20. 1.3.4 伸缩性
  21. 1.3.5 高性能
  22. 1.3.6 平台特性
  23. 1.4 数据生态系统
  24. 1.5 起源故事
  25. 1.5.1 LinkedIn的问题
  26. 1.5.2 Kafka的诞生
  27. 1.5.3 走向开源
  28. 1.5.4 商业化
  29. 1.5.5 命名
  30. 1.6 开始Kafka之旅
  31. 第2章 安装Kafka
  32. 2.1 环境配置
  33. 2.1.1 选择操作系统
  34. 2.1.2 安装Java
  35. 2.1.3 安装ZooKeeper
  36. 2.2 安装broker
  37. 2.3 配置broker
  38. 2.3.1 常规配置参数
  39. 2.3.2 主题的默认配置
  40. 2.4 选择硬件
  41. 2.4.1 磁盘吞吐量
  42. 2.4.2 磁盘容量
  43. 2.4.3 内存
  44. 2.4.4 网络
  45. 2.4.5 CPU
  46. 2.5 云端的Kafka
  47. 2.5.1 微软Azure
  48. 2.5.2 AWS
  49. 2.6 配置Kafka集群
  50. 2.6.1 需要多少个broker
  51. 2.6.2 broker配置
  52. 2.6.3 操作系统调优
  53. 2.7 生产环境的注意事项
  54. 2.7.1 垃圾回收器选项
  55. 2.7.2 数据中心布局
  56. 2.7.3 共享ZooKeeper
  57. 2.8 小结
  58. 第3章 Kafka生产者——向Kafka写入数据
  59. 3.1 生产者概览
  60. 3.2 创建Kafka生产者
  61. 3.3 发送消息到Kafka
  62. 3.3.1 同步发送消息
  63. 3.3.2 异步发送消息
  64. 3.4 生产者配置
  65. 3.4.1 client.id
  66. 3.4.2 acks
  67. 3.4.3 消息传递时间
  68. 3.4.4 linger.ms
  69. 3.4.5 buffer.memory
  70. 3.4.6 compression.type
  71. 3.4.7 batch.size
  72. 3.4.8 max.in.flight.requests.per.connection
  73. 3.4.9 max.request.size
  74. 3.4.10 receive.buffer.bytes 和send.buffer.bytes
  75. 3.4.11 enable.idempotence
  76. 3.5 序列化器
  77. 3.5.1 自定义序列化器
  78. 3.5.2 使用Avro序列化数据
  79. 3.5.3 在Kafka中使用Avro记录
  80. 3.6 分区
  81. 3.7 标头
  82. 3.8 拦截器
  83. 3.9 配额和节流
  84. 3.10 小结
  85. 第4章 Kafka消费者——从Kafka读取数据
  86. 4.1 Kafka消费者相关概念
  87. 4.1.1 消费者和消费者群组
  88. 4.1.2 消费者群组和分区再均衡
  89. 4.1.3 群组固定成员
  90. 4.2 创建Kafka消费者
  91. 4.3 订阅主题
  92. 4.4 轮询
  93. 4.5 配置消费者
  94. 4.5.1 fetch.min.bytes
  95. 4.5.2 fetch.max.wait.ms
  96. 4.5.3 fetch.max.bytes
  97. 4.5.4 max.poll.records
  98. 4.5.5 max.partition.fetch.bytes
  99. 4.5.6 session.timeout.ms 和heartbeat.interval.ms
  100. 4.5.7 max.poll.interval.ms
  101. 4.5.8 default.api.timeout.ms
  102. 4.5.9 request.timeout.ms
  103. 4.5.10 auto.offset.reset
  104. 4.5.11 enable.auto.commit
  105. 4.5.12 partition.assignment.strategy
  106. 4.5.13 client.id
  107. 4.5.14 client.rack
  108. 4.5.15 group.instance.id
  109. 4.5.16 receive.buffer.bytes 和send.buffer.bytes
  110. 4.5.17 offsets.retention.minutes
  111. 4.6 提交和偏移量
  112. 4.6.1 自动提交
  113. 4.6.2 提交当前偏移量
  114. 4.6.3 异步提交
  115. 4.6.4 同步和异步组合提交
  116. 4.6.5 提交特定的偏移量
  117. 4.7 再均衡监听器
  118. 4.8 从特定偏移量位置读取记录
  119. 4.9 如何退出
  120. 4.10 反序列化器
  121. 4.10.1 自定义反序列化器
  122. 4.10.2 在消费者里使用Avro反序列器
  123. 4.11 独立的消费者:为什么以及怎样使用不属于任何群组的消费者
  124. 4.12 小结
  125. 第5章 编程式管理Kafka
  126. 5.1 AdminClient概览
  127. 5.1.1 异步和最终一致性API
  128. 5.1.2 配置参数
  129. 5.1.3 扁平的结构
  130. 5.1.4 额外的话
  131. 5.2 AdminClient生命周期:创建、配置和关闭
  132. 5.2.1 client.dns.lookup
  133. 5.2.2 request.timeout.ms
  134. 5.3 基本的主题管理操作
  135. 5.4 配置管理
  136. 5.5 消费者群组管理
  137. 5.5.1 查看消费者群组
  138. 5.5.2 修改消费者群组
  139. 5.6 集群元数据
  140. 5.7 高级的管理操作
  141. 5.7.1 为主题添加分区
  142. 5.7.2 从主题中删除消息
  143. 5.7.3 首领选举
  144. 5.7.4 重新分配副本
  145. 5.8 测试
  146. 5.9 小结
  147. 第6章 深入Kafka
  148. 6.1 集群的成员关系
  149. 6.2 控制器
  150. 6.3 复制
  151. 6.4 处理请求
  152. 6.4.1 生产请求
  153. 6.4.2 获取请求
  154. 6.4.3 其他请求
  155. 6.5 物理存储
  156. 6.5.1 分层存储
  157. 6.5.2 分区的分配
  158. 6.5.3 文件管理
  159. 6.5.4 文件格式
  160. 6.5.5 索引
  161. 6.5.6 压实
  162. 6.5.7 压实的工作原理
  163. 6.5.8 被删除的事件
  164. 6.5.9 何时会压实主题
  165. 6.6 小结
  166. 第7章 可靠的数据传递
  167. 7.1 可靠性保证
  168. 7.2 复制
  169. 7.3 broker配置
  170. 7.3.1 复制系数
  171. 7.3.2 不彻底的首领选举
  172. 7.3.3 最少同步副本
  173. 7.3.4 保持副本同步
  174. 7.3.5 持久化到磁盘
  175. 7.4 在可靠的系统中使用生产者
  176. 7.4.1 发送确认
  177. 7.4.2 配置生产者的重试参数
  178. 7.4.3 额外的错误处理
  179. 7.5 在可靠的系统中使用消费者
  180. 7.5.1 消费者的可靠性配置
  181. 7.5.2 手动提交偏移量
  182. 7.6 验证系统可靠性
  183. 7.6.1 验证配置
  184. 7.6.2 验证应用程序
  185. 7.6.3 在生产环境中监控可靠性
  186. 7.7 小结
  187. 第8章 精确一次性语义
  188. 8.1 幂等生产者
  189. 8.1.1 幂等生产者的工作原理
  190. 8.1.2 幂等生产者的局限性
  191. 8.1.3 如何使用幂等生产者
  192. 8.2 事务
  193. 8.2.1 事务的应用场景
  194. 8.2.2 事务可以解决哪些问题
  195. 8.2.3 事务是如何保证精确一次性的
  196. 8.2.4 事务不能解决哪些问题
  197. 8.2.5 如何使用事务
  198. 8.2.6 事务ID和隔离
  199. 8.2.7 事务的工作原理
  200. 8.3 事务的性能
  201. 8.4 小结
  202. 第9章 构建数据管道
  203. 9.1 构建数据管道时需要考虑的问题
  204. 9.1.1 及时性
  205. 9.1.2 可靠性
  206. 9.1.3 高吞吐量和动态吞吐量
  207. 9.1.4 数据格式
  208. 9.1.5 转换
  209. 9.1.6 安全性
  210. 9.1.7 故障处理
  211. 9.1.8 耦合性和灵活性
  212. 9.2 何时使用Connect API或客户端API
  213. 9.3 Kafka Connect
  214. 9.3.1 运行Connect
  215. 9.3.2 连接器示例:文件数据源和文件数据池
  216. 9.3.3 连接器示例:从MySQL到ElasticSearch
  217. 9.3.4 单个消息转换
  218. 9.3.5 深入理解Connect
  219. 9.4 Connect之外的选择
  220. 9.4.1 其他数据存储系统的数据摄入框架
  221. 9.4.2 基于图形界面的ETL工具
  222. 9.4.3 流式处理框架
  223. 9.5 小结
  224. 第10章 跨集群数据镜像
  225. 10.1 跨集群镜像的应用场景
  226. 10.2 多集群架构
  227. 10.2.1 跨数据中心通信的一些现实情况
  228. 10.2.2 星型架构
  229. 10.2.3 双活架构
  230. 10.2.4 主备架构
  231. 10.2.5 延展集群
  232. 10.3 MirrorMaker
  233. 10.3.1 配置MirrorMaker
  234. 10.3.2 多集群复制拓扑
  235. 10.3.3 保护MirrorMaker
  236. 10.3.4 在生产环境中部署MirrorMaker
  237. 10.3.5 MirrorMaker调优
  238. 10.4 其他跨集群镜像方案
  239. 10.4.1 Uber的uReplicator
  240. 10.4.2 LinkedIn的Brooklin
  241. 10.4.3 Confluent的跨数据中心镜像解决方案
  242. 10.5 小结
  243. 第11章 保护Kafka
  244. 11.1 锁住Kafka
  245. 11.2 安全协议
  246. 11.3 身份验证
  247. 11.3.1 SSL
  248. 11.3.2 SASL
  249. 11.3.3 重新认证
  250. 11.3.4 安全更新不停机
  251. 11.4 加密
  252. 11.5 授权
  253. 11.5.1 AclAuthorizer
  254. 11.5.2 自定义授权
  255. 11.5.3 安全方面的考虑
  256. 11.6 审计
  257. 11.7 保护ZooKeeper
  258. 11.7.1 SASL
  259. 11.7.2 SSL
  260. 11.7.3 授权
  261. 11.8 保护平台
  262. 保护密码
  263. 11.9 小结
  264. 第12章 管理Kafka
  265. 12.1 主题操作
  266. 12.1.1 创建新主题
  267. 12.1.2 列出集群中的所有主题
  268. 12.1.3 列出主题详情
  269. 12.1.4 增加分区
  270. 12.1.5 减少分区
  271. 12.1.6 删除主题
  272. 12.2 消费者群组
  273. 12.2.1 列出并描述消费者群组信息
  274. 12.2.2 删除消费者群组
  275. 12.2.3 偏移量管理
  276. 12.3 动态配置变更
  277. 12.3.1 覆盖主题的默认配置
  278. 12.3.2 覆盖客户端和用户的默认配置
  279. 12.3.3 覆盖broker的默认配置
  280. 12.3.4 查看被覆盖的配置
  281. 12.3.5 移除被覆盖的配置
  282. 12.4 生产和消费
  283. 12.4.1 控制台生产者
  284. 12.4.2 控制台消费者
  285. 12.5 分区管理
  286. 12.5.1 首选首领选举
  287. 12.5.2 修改分区的副本
  288. 12.5.3 转储日志片段
  289. 12.5.4 副本验证
  290. 12.6 其他工具
  291. 12.7 不安全的操作
  292. 12.7.1 移动集群控制器
  293. 12.7.2 移除待删除的主题
  294. 12.7.3 手动删除主题
  295. 12.8 小结
  296. 第13章 监控Kafka
  297. 13.1 指标基础
  298. 13.1.1 指标来自哪里
  299. 13.1.2 需要哪些指标
  300. 13.1.3 应用程序健康检测
  301. 13.2 服务级别目标
  302. 13.2.1 服务级别定义
  303. 13.2.2 哪些指标是好的SLI
  304. 13.2.3 将SLO用于告警
  305. 13.3 broker的指标
  306. 13.3.1 诊断集群问题
  307. 13.3.2 非同步分区的艺术
  308. 13.3.3 broker指标
  309. 13.3.4 主题的指标和分区的指标
  310. 13.3.5 Java虚拟机监控
  311. 13.3.6 操作系统监控
  312. 13.3.7 日志
  313. 13.4 客户端监控
  314. 13.4.1 生产者指标
  315. 13.4.2 消费者指标
  316. 13.4.3 配额
  317. 13.5 滞后监控
  318. 13.6 端到端监控
  319. 13.7 小结
  320. 第14章 流式处理
  321. 14.1 什么是流式处理
  322. 14.2 流式处理相关概念
  323. 14.2.1 拓扑
  324. 14.2.2 时间
  325. 14.2.3 状态
  326. 14.2.4 流和表
  327. 14.2.5 时间窗口
  328. 14.2.6 处理保证
  329. 14.3 流式处理设计模式
  330. 14.3.1 单事件处理
  331. 14.3.2 使用本地状态
  332. 14.3.3 多阶段处理和重分区
  333. 14.3.4 使用外部查找:流和表的连接
  334. 14.3.5 表与表的连接
  335. 14.3.6 流与流的连接
  336. 14.3.7 乱序事件
  337. 14.3.8 重新处理
  338. 14.3.9 交互式查询
  339. 14.4 Streams示例
  340. 14.4.1 字数统计
  341. 14.4.2 股票市场统计
  342. 14.4.3 填充点击事件流
  343. 14.5 Streams架构概览
  344. 14.5.1 构建拓扑
  345. 14.5.2 优化拓扑
  346. 14.5.3 测试拓扑
  347. 14.5.4 扩展拓扑
  348. 14.5.5 在故障中存活下来
  349. 14.6 流式处理应用场景
  350. 14.7 如何选择流式处理框架
  351. 14.8 小结
  352. 附录A 在其他操作系统中安装Kafka
  353. 附录B 其他Kafka工具
书名:Kafka权威指南(第2版)
译者:薛命灯 译
国内出版社:人民邮电出版社
出版时间:2022年10月
页数:483
书号:978-7-115-60142-1
原版书书名:Kafka: The Definitive Guide, Second Edition
原版书出版商:O'Reilly Media
Gwen Shapira
 
Cloudera公司的解决方案架构师,知名博主,拥有15年从业经验,协助客户设计高扩展性的数据架构。曾任Pythian高级顾问、Oracle ACE主管以及NoCOUG董事会成员,活跃于诸多业内会议。

Gwen Shapira是Kafka项目的Committer和PMC成员,也是Confluent的工程主管,领导云原生Kafka团队,致力于打造更具弹性和可伸缩性的Kafka云服务。
 
 
Todd Palino
 
Todd Palino是LinkedIn的站点可靠性工程师,他开发了Kafka消费者监控工具Burrow。
 
 
Rajini Sivaram
 
Rajini Sivaram是Kafka项目的Committ e r 和PMC成员。她在Confluent为Kafka设计和开发跨集群复制和安全功能。
 
 
Krit Petty
 
Krit Petty是LinkedIn的Kafka站点可靠性工程经理,曾负责将LinkedIn的大规模Kafka集群迁移到微软的Azure云。
 
 
本书封面上的动物是一只蓝翅笑翠鸟(Dacelo leachii)。笑翠鸟属于翠鸟科,生活在新几内亚南部和澳大利亚北部不那么干旱的地区。它们是河翠鸟。
雄性笑翠鸟拥有五颜六色的羽毛,翅膀和尾部的羽毛是蓝色的,雌性笑翠鸟的尾部则是红棕色,带有黑色的条纹。雄性笑翠鸟和雌性笑翠鸟都有奶油色的腹部,伴有棕色的条纹,它们的虹膜是白色的。成年笑翠鸟的体型要比其他翠鸟小一些,平均身长38~43厘米,体重260克~330克。
蓝翅笑翠鸟偏爱肉食,捕食对象随季节稍有不同。在夏季,它们捕捉蜥蜴、昆虫和青蛙为食,而在干燥的季节,它们则多以小龙虾、鱼、啮齿类动物和小型的鸟类为食。不过,在以鸟类为食的食物链里,红鹰和红褐色的猫头鹰喜欢以蓝翅笑翠鸟为食。
每年的9月~12月是蓝翅笑翠鸟的繁殖季节,它们把巢穴筑在树的上方,通过社区协作的方式养育下一代,一对笑翠鸟至少会得到另外一只笑翠鸟的帮助。它们一般会花大概26天的时间来孵蛋,每次孵3~4只蛋。雏鸟如果能够正常破壳而出,那么大概36天后就会长出羽毛。早出生的雏鸟会在第一周内尝试杀死更小的雏鸟。成年笑翠鸟会花6~8周的时间来训练那些存活下来的小鸟怎样捕食。
购买选项
定价:119.80元
书号:978-7-115-60142-1
出版社:人民邮电出版社