Kafka权威指南

Book description

每个应用程序都会产生数据,包括日志消息、度量指标、用户活动记录、响应消息等。如何移动数据,几乎变得与数据本身一样重要。如果你是架构师、开发者或者产品工程师,同时也是Apache Kafka新手,那么这本实践指南将会帮助你成为流式平台上处理实时数据的专家。

本书由出身于LinkedIn的Kafka核心作者和一线技术人员共同执笔,详细介绍了如何部署Kafka集群、开发可靠的基于事件驱动的微服务,以及基于Kafka平台构建可伸缩的流式应用程序。通过详尽示例,你将会了解到Kafka的设计原则、可靠性保证、关键API,以及复制协议、控制器和存储层等架构细节。

  • 了解发布和订阅消息模型以及该模型如何被应用在大数据生态系统中
  • 学习使用Kafka生产者和消费者来生成消息和读取消息
  • 了解Kafka保证可靠性数据传递的模式和场景需求
  • 使用Kafka构建数据管道和应用程序的最佳实践
  • 在生产环境中管理Kafka,包括监控、调优和维护
  • 了解Kafka的关键度量指标
  • 探索Kafka如何成为流式处理利器

Table of contents

  1. 封面
  2. 扉页
  3. 版权
  4. 版权声明
  5. O’Reilly Media, Inc.介绍
  6. 目录 (1/2)
  7. 目录 (2/2)
  8. 前言
    1. 读者对象
    2. 排版约定
    3. O’Reilly Safari
    4. 联系我们
    5. 致谢
    6. 电子书
  9. 第1章 初识Kafka
    1. 1.1 发布与订阅消息系统
      1. 1.1.1 如何开始
      2. 1.1.2 独立的队列系统
    2. 1.2 Kafka登场
      1. 1.2.1 消息和批次
      2. 1.2.2 模式
      3. 1.2.3 主题和分区
      4. 1.2.4 生产者和消费者
      5. 1.2.5 broker和集群
      6. 1.2.6 多集群
    3. 1.3 为什么选择Kafka
      1. 1.3.1 多个生产者
      2. 1.3.2 多个消费者
      3. 1.3.3 基于磁盘的数据存储
      4. 1.3.4 伸缩性
      5. 1.3.5 高性能
    4. 1.4 数据生态系统
    5. 1.5 起源故事
      1. 1.5.1 LinkedIn的问题
      2. 1.5.2 Kafka的诞生
      3. 1.5.3 走向开源
      4. 1.5.4 命名
    6. 1.6 开始Kafka之旅
  10. 第2章 安装Kafka
    1. 2.1 要事先行
      1. 2.1.1 选择操作系统
      2. 2.1.2 安装Java
      3. 2.1.3 安装Zookeeper
    2. 2.2 安装Kafka Broker
    3. 2.3 broker配置
      1. 2.3.1 常规配置
      2. 2.3.2 主题的默认配置
    4. 2.4 硬件的选择
      1. 2.4.1 磁盘吞吐量
      2. 2.4.2 磁盘容量
      3. 2.4.3 内存
      4. 2.4.4 网络
      5. 2.4.5 CPU
    5. 2.5 云端的Kafka
    6. 2.6 Kafka集群
      1. 2.6.1 需要多少个broker
      2. 2.6.2 broker配置
      3. 2.6.3 操作系统调优
    7. 2.7 生产环境的注意事项
      1. 2.7.1 垃圾回收器选项
      2. 2.7.2 数据中心布局
      3. 2.7.3 共享Zookeeper
    8. 2.8 总结
  11. 第3章 Kafka生产者——向Kafka写入数据
    1. 3.1 生产者概览
    2. 3.2 创建Kafka生产者
    3. 3.3 发送消息到Kafka
      1. 3.3.1 同步发送消息
      2. 3.3.2 异步发送消息
    4. 3.4 生产者的配置
    5. 3.5 序列化器
      1. 3.5.1 自定义序列化器
      2. 3.5.2 使用Avro序列化
      3. 3.5.3 在Kafka里使用Avro
    6. 3.6 分区
    7. 3.7 旧版的生产者API
    8. 3.8 总结
  12. 第4章 Kafka消费者——从Kafka读取数据
    1. 4.1 KafkaConsumer概念
      1. 4.1.1 消费者和消费者群组
      2. 4.1.2 消费者群组和分区再均衡
    2. 4.2 创建Kafka消费者
    3. 4.3 订阅主题
    4. 4.4 轮询
    5. 4.5 消费者的配置
    6. 4.6 提交和偏移量
      1. 4.6.1 自动提交
      2. 4.6.2 提交当前偏移量
      3. 4.6.3 异步提交
      4. 4.6.4 同步和异步组合提交
      5. 4.6.5 提交特定的偏移量
    7. 4.7 再均衡监听器
    8. 4.8 从特定偏移量处开始处理记录
    9. 4.9 如何退出
    10. 4.10 反序列化器
    11. 4.11 独立消费者——为什么以及怎样使用没有群组的消费者
    12. 4.12 旧版的消费者API
    13. 4.13 总结
  13. 第5章 深入Kafka
    1. 5.1 集群成员关系
    2. 5.2 控制器
    3. 5.3 复制
    4. 5.4 处理请求
      1. 5.4.1 生产请求
      2. 5.4.2 获取请求
      3. 5.4.3 其他请求
    5. 5.5 物理存储
      1. 5.5.1 分区分配
      2. 5.5.2 文件管理
      3. 5.5.3 文件格式
      4. 5.5.4 索引
      5. 5.5.5 清理
      6. 5.5.6 清理的工作原理
      7. 5.5.7 被删除的事件
      8. 5.5.8 何时会清理主题
    6. 5.6 总结
  14. 第6章 可靠的数据传递
    1. 6.1 可靠性保证
    2. 6.2 复制
    3. 6.3 broker配置
      1. 6.3.1 复制系数
      2. 6.3.2 不完全的首领选举
      3. 6.3.3 最少同步副本
    4. 6.4 在可靠的系统里使用生产者
      1. 6.4.1 发送确认
      2. 6.4.2 配置生产者的重试参数
      3. 6.4.3 额外的错误处理
    5. 6.5 在可靠的系统里使用消费者
      1. 6.5.1 消费者的可靠性配置
      2. 6.5.2 显式提交偏移量
    6. 6.6 验证系统可靠性
      1. 6.6.1 配置验证
      2. 6.6.2 应用程序验证
      3. 6.6.3 在生产环境监控可靠性
    7. 6.7 总结
  15. 第7章 构建数据管道
    1. 7.1 构建数据管道时需要考虑的问题
      1. 7.1.1 及时性
      2. 7.1.2 可靠性
      3. 7.1.3 高吞吐量和动态吞吐量
      4. 7.1.4 数据格式
      5. 7.1.5 转换
      6. 7.1.6 安全性
      7. 7.1.7 故障处理能力
      8. 7.1.8 耦合性和灵活性
    2. 7.2 如何在Connect API和客户端API之间作出选择
    3. 7.3 Kafka Connect
      1. 7.3.1 运行Connect
      2. 7.3.2 连接器示例——文件数据源和文件数据池
      3. 7.3.3 连接器示例——从MySQL到ElasticSearch
      4. 7.3.4 深入理解Connect
    4. 7.4 Connect之外的选择
      1. 7.4.1 用于其他数据存储的摄入框架
      2. 7.4.2 基于图形界面的ETL工具
      3. 7.4.3 流式处理框架
    5. 7.5 总结
  16. 第8章 跨集群数据镜像
    1. 8.1 跨集群镜像的使用场景
    2. 8.2 多集群架构
      1. 8.2.1 跨数据中心通信的一些现实情况
      2. 8.2.2 Hub和Spoke架构
      3. 8.2.3 双活架构
      4. 8.2.4 主备架构
      5. 8.2.5 延展集群
    3. 8.3 Kafka的MirrorMaker
      1. 8.3.1 如何配置
      2. 8.3.2 在生产环境部署MirrorMaker
      3. 8.3.3 MirrorMaker调优
    4. 8.4 其他跨集群镜像方案
      1. 8.4.1 优步的uReplicator
      2. 8.4.2 Confluent的Replicator
    5. 8.5 总结
  17. 第9章 管理Kafka
    1. 9.1 主题操作
      1. 9.1.1 创建主题
      2. 9.1.2 增加分区
      3. 9.1.3 删除主题
      4. 9.1.4 列出集群里的所有主题
      5. 9.1.5 列出主题详细信息
    2. 9.2 消费者群组
      1. 9.2.1 列出并描述群组
      2. 9.2.2 删除群组
      3. 9.2.3 偏移量管理
    3. 9.3 动态配置变更
      1. 9.3.1 覆盖主题的默认配置
      2. 9.3.2 覆盖客户端的默认配置
      3. 9.3.3 列出被覆盖的配置
      4. 9.3.4 移除被覆盖的配置
    4. 9.4 分区管理
      1. 9.4.1 首选的首领选举
      2. 9.4.2 修改分区副本
      3. 9.4.3 修改复制系数
      4. 9.4.4 转储日志片段
      5. 9.4.5 副本验证
    5. 9.5 消费和生产
      1. 9.5.1 控制台消费者
      2. 9.5.2 控制台生产者
    6. 9.6 客户端ACL
    7. 9.7 不安全的操作
      1. 9.7.1 移动集群控制器
      2. 9.7.2 取消分区重分配
      3. 9.7.3 移除待删除的主题
      4. 9.7.4 手动删除主题
    8. 9.8 总结
  18. 第10章 监控Kafka
    1. 10.1 度量指标基础
      1. 10.1.1 度量指标在哪里
      2. 10.1.2 内部或外部度量
      3. 10.1.3 应用程序健康检测
      4. 10.1.4 度量指标的覆盖面
    2. 10.2 broker的度量指标
      1. 10.2.1 非同步分区
      2. 10.2.2 broker度量指标 (1/2)
      3. 10.2.2 broker度量指标 (2/2)
      4. 10.2.3 主题和分区的度量指标
      5. 10.2.4 Java虚拟机监控
      6. 10.2.5 操作系统监控
      7. 10.2.6 日志
    3. 10.3 客户端监控
      1. 10.3.1 生产者度量指标
      2. 10.3.2 消费者度量指标
      3. 10.3.3 配额
    4. 10.4 延时监控
    5. 10.5 端到端监控
    6. 10.6 总结
  19. 第11章 流式处理
    1. 11.1 什么是流式处理
    2. 11.2 流式处理的一些概念
      1. 11.2.1 时间
      2. 11.2.2 状态
      3. 11.2.3 流和表的二元性
      4. 11.2.4 时间窗口
    3. 11.3 流式处理的设计模式
      1. 11.3.1 单个事件处理
      2. 11.3.2 使用本地状态
      3. 11.3.3 多阶段处理和重分区
      4. 11.3.4 使用外部查找——流和表的连接
      5. 11.3.5 流与流的连接
      6. 11.3.6 乱序的事件
      7. 11.3.7 重新处理
    4. 11.4 Streams示例
      1. 11.4.1 字数统计
      2. 11.4.2 股票市场统计
      3. 11.4.3 填充点击事件流
    5. 11.5 Kafka Streams的架构概览
      1. 11.5.1 构建拓扑
      2. 11.5.2 对拓扑进行伸缩
      3. 11.5.3 从故障中存活下来
    6. 11.6 流式处理使用场景
    7. 11.7 如何选择流式处理框架
    8. 11.8 总结
  20. 附录A 在其他操作系统上安装Kafka
    1. A.1 在Windows上安装Kafka
      1. A.1.1 使用Windows的Linux子系统
      2. A.1.2 使用本地Java
    2. A.2 在MacOS上安装Kafka
      1. A.2.1 使用Homebrew
      2. A.2.2 手动安装
  21. 作者介绍
  22. 封面介绍

Product information

  • Title: Kafka权威指南
  • Author(s): Neha Narkhede, Gwen Shapira, Todd Palino
  • Release date: January 2018
  • Publisher(s): Posts & Telecom Press
  • ISBN: 9787115473271

You might also like

book

SQL经典实例

by Anthony Molinaro

了解SQL查询语言的基本原理,但仍感觉无法自由运用SQL?想在数据上线前用SQL跑一遍数据库?想进一步提高SQL技能? 以上需求,《SQL经典实例》都可以满足。本书致力于让广大数据库相关人员了解SQL的强大数据处理能力。书中汇集了150多个SQL示例,给出了常见问题的解决方案,帮助读者扩宽思路并用学到的技术来解决新问题,既适合SQL初学者更深入理解SQL,也适合SQL中高级用户进阶及日常查询参考。 where子句等常见查询语句 查询结果排序 连接查询 如何获取数据库元信息 常见数字运算实例 字符串处理 日期处理 数据仓储和复杂报表生成领域的查询 与层次化有关的一些实例

book

精通機器學習

by Aurélien Géron

建立智慧系統的概念、工具與技術 “這是一本卓越的機器學習資源,有清楚、直觀的解說,以及大量實用技巧。” —François Chollet Keras作者,《Deep Learning with Python》作者 “這本書詳細介紹以神經網路解決問題的理論與做法;建議想要實際運用ML的人都要看這本書。” —Pete Warden TensorFlow行動主管 深度學習經歷了一系列的突破之後,已經大幅推動了整個機器學習領域,如今,即使你對這項技術一無所知,也可以使用簡單、高效的工具,製作可從資料中學習的程式。這本暢銷書新版本使用具體的案例、精簡的理論,以及Python準生產框架,協助你直觀地認識智慧系統的概念與建構工具。 你將學到可快速上手的技術,只要具備程式編寫經驗,就可以藉由各章的習題來學習。你可以在GitHub取得本書的所有程式碼,這些程式已經更新為TensorFlow 2,以及最新版的Scikit-Learn。 使用Scikit-Learn與pandas,透過端對端專案建立機器學習基礎 …

book

管理Kubernetes

by Brendan Burns, Craig Tracey

虽然Kubernetes极大地简化了部署容器化应用程序的工作,但每天管理这种编排框架仍然是一项复杂的工作。站点管理人员以及 开发运营工程师可以通过本书学习如何构建、操作、管理及升级 Kubernetes集群,无论这些集群位于云基础架构之上还是在企业内部。 本书的作者Brendan Burns是Kubernetes的联合创始人,而Craig Tracey 是Heptio的现场工程师。本书详细讲解了Kubernetes的内部工作原理,并向读者展示了如何通过维护、调整和改善集群来满足特定需求。你可以通过本书学习如何从设计集群、管理访问控制、监视和报警,以及升级Kubernetes等方面来综合考虑架构的选择,还可以 通过本书深入了解如何充分利用这种编排框架的功能。 “学习如何操作集群,开发人员如何利用Kubernetes部署应用程序,以及如何利用Kubernetes减轻开发人员的负担。 通过掌握Kubernetes API以及配置选项来调整、保护,以及调节集群。 检测集群级别的问题,学习必要的响应步骤并快速恢复集群。 确定如何以及何时添加构建、扩展或以其他方式改进 Kubernetes集群的库、工具和平台。

book

Java持续交付

by Daniel Bryant, Abraham Marín-Pérez

持续交付为业务的持续发展和整个软件的交付周期增加了巨大的价值,但是掌握这项技术就意味着普通开发人员要跳出舒适区,学习很多新技能。本书以实践为基础,作者Daniel Bryant和Abraham Marín-Pérez通过大量的实践指导,帮助Java开发人员掌握针对不同平台的架构设计、自动化质量保证,以及打包和部署的技巧。 你将获得一些理解核心概念的帮助,以及有助于向持续交付迁移的指导意见。 你将学会如何设计能在不同平台上持续交付Java应用程序的架构。 你将学会如何构建应用程序构件,包括胖JAR文件、虚拟机镜像,以及操作系统容器(Docker)镜像。 你将学会如何使用Jenkins、PMD和FindSecBug等持续集成工具自动化地进行代码质量检查。 你将学会如何创建一个复杂的构建管道,以及如何设计独立的部署和发布流程。 你将了解为什么功能测试和系统质量属性测试对于开发和交付非常重要。 你将学会如何在本地有效地构建和测试应用程序,以及监控生产环境中运行的应用程序。