Kafka in Action
作者: Dylan Scott
语言: 英文
出版年份: 2022
下载链接:
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。

书籍摘要

Kafka in Action

书籍定位

《Kafka in Action》是一本由Manning出版社出版的Apache Kafka实战指南,专为希望掌握现代事件流平台和实时数据处理的开发者和架构师设计。本书由三位经验丰富的作者合著:Dylan Scott、Viktor Gamov和Dave Klein,他们都是Kafka和流处理领域的专家。本书由Kafka联合创始人Jun Rao作序推荐。Apache Kafka是目前最流行的分布式流处理平台之一,以其高吞吐量、可扩展性和持久性而闻名。本书不仅教授Kafka的具体使用,更重要的是深入探讨事件流架构的设计理念和实际应用场景,帮助读者从零开始构建完整的Kafka解决方案。

核心内容

第一部分:入门(第1-2章)

第一部分建立了Kafka的基础知识体系。第1章全面介绍了Kafka的概念和价值主张。作者首先回答了"什么是Kafka?"这个基本问题,然后从开发者和管理者两个角度解释了Kafka的用途。本章特别有价值的是澄清了关于Kafka的常见误解:Kafka不仅适用于Hadoop生态系统,也不仅仅是另一个消息代理。作者通过早期和后来的实际案例展示了Kafka在现实世界中的应用,并讨论了何时Kafka可能不是合适的选择。

第2章带领读者深入了解Kafka的核心概念。从生产和消费第一条消息开始,本章介绍了代理(Brokers)的概念、Kafka的整体架构、ZooKeeper的作用、提交日志(Commit Log)模型等核心概念。本章还详细介绍了Kafka的各种源代码包及其功能:Kafka Streams(流处理)、Kafka Connect(数据连接)、AdminClient(管理客户端)、ksqlDB(事件流数据库)等。最后,本章解释了流处理的基本概念和"恰好一次"(exactly-once)语义的含义。

第二部分:应用Kafka(第3-9章)

第二部分专注于Kafka的实际应用和核心组件。第3章讲解如何设计Kafka项目。本章从一个实际案例开始:接管现有的数据架构并引入Kafka作为解决方案。通过发票数据处理的具体场景,作者展示了如何分析现有问题、为什么Kafka适合解决这些问题、如何设计数据需求、制定高级计划并审查蓝图。本章还讨论了数据格式规划和依赖设置等实际考虑。

第4章深入生产者(Producers):数据来源。通过具体示例,本章介绍了生产者的基本概念、配置选项(如代理列表配置)、性能与安全性的权衡、时间戳处理等。作者特别强调了如何根据需求生成代码,以及客户端和代理版本兼容性的重要性。

第5章专注于消费者(Consumers):数据解锁。本章通过示例展示了消费者的工作方式、配置选项、坐标理解等概念。详细介绍了消费者如何交互、跟踪机制、组协调器(Group Coordinator)、分区分配策略、偏移量管理(Marking our place)以及如何从压缩主题(Compacted Topic)读取数据。

第6章讲解代理(Brokers),这是Kafka集群的核心组件。本章介绍了代理的基本概念、ZooKeeper的作用、代理级配置选项、应用程序日志、服务器日志、状态管理等。特别重要的是分区副本领导者(Partition Replica Leaders)的概念及其在数据持久性中的作用。本章还深入探讨了集群维护、添加代理、升级集群、升级客户端、备份等运维主题。

第7章专注于主题和分区(Topics and Partitions)。本章详细介绍了主题的创建选项、复制因子(Replication Factors)、分区位置、日志查看等概念。特别有价值的是使用EmbeddedKafkaCluster和Kafka Testcontainers进行测试的部分,以及主题压缩(Topic Compaction)的深入讲解。

第8章讨论Kafka存储策略。本章探讨了数据存储时长、数据移动策略、保持原始事件的重要性、从批处理思维模式转变等关键主题。介绍了各种工具,如Apache Flume、Red Hat Debezium、Secor等,以及如何在架构中使用Kafka,包括Lambda架构和Kappa架构的对比。

第9章专注于管理和监控。本章介绍了各种管理工具,包括使用AdminClient进行代码管理、kcat(原kafkacat)、Confluent REST Proxy API等。还讨论了将Kafka作为systemd服务运行、日志记录(Kafka应用日志和ZooKeeper日志)、防火墙配置、广告监听器(Advertised Listeners)、指标监控(JMX控制台)、追踪选项以及通用监控工具。

第三部分:进阶主题(第10-12章)

第三部分涵盖Kafka的高级主题和扩展功能。第10章讲解如何保护Kafka。本章从安全基础开始,包括SSL加密(代理与客户端之间、代理之间)、Kerberos和SASL认证、授权机制(访问控制列表ACLs和基于角色的访问控制RBAC)、ZooKeeper安全设置(Kerberos配置)、配额管理(网络带宽配额和请求率配额)以及静态数据保护。

第11章介绍模式注册表(Schema Registry)。本章提出了一个Kafka成熟度模型,从Level 0到Level 3逐步演进。详细介绍了Confluent Schema Registry的安装、配置、功能(REST API和客户端库)、兼容性规则以及模式修改验证。还讨论了模式注册表的替代方案。

第12章深入流处理:Kafka Streams和ksqlDB。本章全面介绍了Kafka Streams,包括KStreams API DSL、KTable API、GlobalKTable API、Processor API以及Kafka Streams设置。接着介绍了ksqlDB作为事件流数据库的概念,包括查询语言、流处理功能等。

适用读者

主要目标群体

  1. 数据工程师和架构师:需要构建实时数据管道、事件驱动架构或流处理解决方案的技术人员。
  2. 微服务开发者:需要实现服务间异步通信、事件溯源或CQRS模式的开发团队。
  3. 平台工程团队:负责构建和维护内部数据平台,需要提供标准化的事件流解决方案。
  4. DevOps和SRE工程师:负责Kafka集群的运维、监控和性能调优。
  5. 技术决策者:需要评估事件流平台是否适合组织,以及如何规划实施路径。

预备知识要求

  • 基本编程知识:熟悉至少一种编程语言(Java、Python等)
  • 分布式系统概念:了解基本的分布式系统原理和挑战
  • 消息队列经验:对消息队列或发布/订阅模式有基本了解(有帮助但不是必需)
  • Linux环境:熟悉基本的命令行操作

价值亮点

1. 实践导向的教学方法

本书采用"学以致用"的教学理念,从第2章开始就带领读者动手操作Kafka。每个概念都通过具体示例进行讲解,读者可以跟随书中的步骤逐步构建完整的Kafka环境。特别是第3章的项目设计方法,帮助读者从实际问题出发,逐步设计解决方案。

2. 全面的功能覆盖

本书涵盖了Kafka的所有核心功能和组件:生产者、消费者、代理、主题、分区、存储、管理、安全、模式注册表、流处理等。这种全面的覆盖帮助读者建立完整的Kafka知识体系,从基础概念到高级功能都有详细讲解。

3. 生产环境考虑

本书不仅关注功能实现,还深入讨论了生产环境的考虑,包括集群维护、升级策略、备份恢复、安全配置、监控告警等主题。这些内容对于将Kafka应用于实际生产环境至关重要。

4. 架构设计指导

第3章的项目设计方法和第8章的架构讨论特别有价值。作者不仅教授"如何做",更重要的是解释"为什么"和"何时"使用特定模式。通过对比Lambda架构和Kappa架构,帮助读者理解不同架构模式的适用场景。

5. 工具和生态系统集成

本书详细介绍了Kafka生态系统中的各种工具,包括Kafka Connect、Kafka Streams、ksqlDB、Schema Registry等。还讨论了与第三方工具的集成,如Apache Flume、Debezium、Secor等,帮助读者构建完整的数据流水线。

阅读建议

学习路径建议

  1. 完全新手:建议按顺序阅读第1-2章,重点关注Kafka的基本概念和核心架构。完成第2章的实践步骤,确保理解Kafka的基本工作方式。
  2. 有经验的开发者:可以直接阅读第4-7章的核心组件部分,特别是生产者、消费者、代理和主题章节。这些章节提供了构建生产级Kafka应用所需的关键技术。
  3. 运维人员:应该重点学习第6章(代理)、第9章(管理)和第10章(安全)。这些内容对于维护稳定、安全的Kafka集群至关重要。
  4. 架构师和决策者:需要全面理解第1章(价值主张)、第3章(项目设计)、第8章(架构)和第12章(流处理),评估Kafka是否适合组织,并规划实施路径。

实践建议

  1. 环境准备:按照附录A的指导设置本地Kafka环境。可以使用Docker、本地安装或云服务开始学习。
  2. 循序渐进:不要试图一次性部署复杂的多集群环境。从单节点开始,逐步添加更复杂的功能和配置。
  3. 安全实践:在生产环境中实施Kafka时,特别注意第10章的安全最佳实践,特别是SSL/TLS配置和访问控制。
  4. 监控和告警:在生产部署前,建立完整的监控和告警体系,特别是第9章介绍的管理和监控工具。

注意事项

  1. 学习曲线:Kafka有一定的学习曲线,特别是对于没有分布式系统经验的开发者。需要耐心学习和实践。
  2. 资源需求:Kafka集群需要相应的硬件资源,特别是磁盘I/O和网络带宽,需要相应的容量规划。
  3. 版本兼容性:Kafka客户端和服务器版本需要兼容,部署前需要确认版本要求。
  4. 数据治理:随着主题和数据的增长,需要建立相应的数据治理策略,包括数据保留、归档、清理等。

总结

《Kafka in Action》是一本全面、深入、实用的Apache Kafka指南。它不仅教授具体的技术实现,更重要的是帮助读者理解事件流架构的设计理念和实际应用场景。无论你是希望构建实时数据管道、实现事件驱动架构,还是需要解决大规模数据流处理挑战,这本书都能提供宝贵的指导。通过本书的学习,读者将能够掌握Kafka的核心功能,理解事件流平台的价值主张,并能够设计、部署和维护生产级的Kafka环境。在实时数据处理越来越重要的今天,掌握Kafka技术将成为数据工程师和架构师的重要竞争优势。

期待您的支持
捐助本站