Kafka权威指南 —— 读书笔记

在这里插入图片描述

本文摘自:Kafka 权威指南(Kafka: The Definitive Guide)

文章目录

第一章 初识Kafka

1.1 发布与订阅消息系统

1.1.1 如何开始

发布与订阅消息系统都是从一个简单的消息队列开始的。从最初的两个系统直连,越来越多的服务或应用程序直连,会使得节点加你的连接一团糟。这是,技术债务开始凸显,于是创建了一个独立的应用程序来用于接收其他程序的度量指标,并为其他系统提供了了一个查询服务器。

1.1.2 独立的队列系统

其他的系统也通过这样的方式解耦的发布者和订阅者,这比之前点对点的连接要好得多,但这里有太多重复的地方。此时需要一个单一的集中式系统,它可以通过发布通用类型的数据,其规模可以随着公司业务的增长而增长。

1.2 Kafka登场

Kafka就是为了解决上述问题而设计的一款基于发布与订阅的消息系统。他一般被称为,

  • 分布式提交日志
  • 分布式流平台
    Kafka的数据是按照一定顺序持久化保存的,可以按需读取。此外,Kafka的数据分布在整个系统里,具备数据故障保护和性能伸缩能力。

1.2.1 消息和批次

Kafka的数据单元被称为消息。为了提高效率,消息被分批次写入Kafka。批次就是一组消息,这些消息属于同一个主题和分区。把消息分成批次传输可以减少网络开销。不过,这要在时间延迟和吞吐量之间做出权衡:批次越大,单位时间内处理的消息就越多,单个消息的传输时间就越长。批次数据会被压缩,这样可以提升数据的传输能力,但要做更多的计算处理。

1.2.2 模式

额外的一些结构来定义消息内容,消息模式(schema)有许多可用的选项,通常由序列化器完成这些工作。

1.2.3 主题和分区

Kafka的消息通过主题进行分类。主题可以被分为若干个分区,一个分区就是一个提交日志。由于一个主题一般包含几个分区,因此无法在整个主题范围内保证消息的顺序,但可以保证消息在单个分区内的顺序。Kafka通过分区来实现数据容易和伸缩性。分区可以分布在不同的服务器上,也就是说,一个主题可以跨多个服务器,以此来提供比单个服务器更强大的性能。

1.2.4 生产者和消费者

  • 生产者创建消息。一般情况下,一个消息会被发布到一个特定的主题上,而并不关系特定消息会被写到哪个分区。某些情况下,会把消息直接写到指定的分区,这通常是通过消息键和分区器来实现的,分区器为键生成一个三劣质,并将其映射到指定的分区上。
  • 消费者读取消息。消费者订阅一个或多个主题,并按照消息生成的顺序读取它们。消费者通过检查消息的偏移量来区分已经读取过的消息。
  • 偏移量是一种元数据,他是一个不断递增的整数值。每个消息的偏移量是唯一的。
  • 消费者是消费者群组的一部分,会有一个或多个消费者共同读取一个主题。群组保证每个分区只能被一个消费者使用。消费者与分区之间的映射通常被称为消费者分区的所有权关系。

1.2.5 broker和集群

  • 一个独立的Kafka服务器被称为broker。
    broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。
    broker为消费者提供服务,对读取分区的请求做出响应。
    单个broker可以轻松处理数千个分区以及每秒百万级的消息量。
  • broker是集群的组成部分。每个集群都有一个broker同时充当了集群控制器的角色(自动从集群的活跃成员中选举出来)。在急群众,一个分区从属于一个broker,该broker被称为分区的首领。
  • 保留消息(在一定期限内)是Kafka的一个重要特性,要么保留一段时间要么保留消息达到一定的字节数,如7天1GB。达到这些限制,旧的消息就会被删除。

1.2.6 多集群

基于以下几点原因,最好使用多个集群:

  1. 数据类型分离
  2. 安全需求隔离
  3. 多数据中心(灾难恢复)
    Kafka提供了一个叫做MirrorMaker的工具,可以用它来实现集群建的消息复制。可信组件包含一个生产者和一个消费者,两者之间通过一个队列连接。消费者从一个集群读取消息,生产者吧消息发送到令一个集群上。

1.3 为什么选择Kafka

1.3.1 多个生产者

Kafka可以无缝地支持多个生产者,所有的服务都以相同的格式向该主题写入数据。消费者会获得统一的页面视图,而无需协调来自不同生产者的数据流。

1.3.2 多个消费者

Kafka也支持多个消费者从一个单独的消息流上读取数据,而且消费者之间互不影响。多个消费者可以组成一个群组,它们共享一个消息流,并保证整个群组对每个给定的消息只处理一次。

1.3.3 多个磁盘的数据存储

Kafka允许消费者非实时的读取消息,这要归功于Kafka的数据保留特性。每个主题可以单独设置保留规则,以便满足不同消费者的需求。

1.3.4 伸缩新

通过broker的扩展应对数据的增长。

1.3.5 高性能

横向扩展生产者、消费者和broker,保证亚秒级的消息延迟。

1.4 数据生态系统

在基础设施的各个组件之间传递消息,为所有客户端提供一致的接口。可以根据业务需求添加或移除组件。
使用场景:

  1. 活动跟踪
  2. 传递消息
  3. 度量指标和日志记录
  4. 提交日志
  5. 流处理

1.5 起源故事

第二章 安装Kafka

2.1 要事先行

2.1.1 选择操作系统

2.1.2 安装Java

2.1.3 安装Zookeeper

2.2 安装Kafka Broker

2.3 broker配置

2.3.1 常规配置

主题的默认配置

2.4 硬件的选择

2.4.1 磁盘吞吐量

2.4.2 磁盘容量

2.4.3 内存

2.4.4 网络

2.4.5 CPU

2.5 云端Kafka

2.6 Kafka集群

2.6.1 需要多少个broker

2.6.2 broker配置

2.6.3 操作系统调优

2.7 生产环境注意事项

2.7.1 垃圾回收器选项

2.7.2 数据中心布局

2.7.3 共享Zookeeper

第三章 Kafka生产者

3.1 生产者概览

3.2 创建Kafka生产者

3.3 发送消息到Kafka

3.3.1 同步发送消息

3.3.2 异步发送消息

3.4 生产者的配置

3.5 序列化器

3.5.1 自定义序列化器

3.5.2 使用Avro序列化

3.5.3 在Kafka里使用Avro

3.6 分区

3.7 就版本的生产者API

3.8 总结

第四章 Kafka消费者

4.1 KafkaConsumer概念

4.1.1 消费者和消费者群组

4.1.2 消费者群组和分区再均衡

4.2 创建Kafka消费者

4.3 订阅主题

4.4 轮询

4.5 消费者的配置

4.6 提交偏移量

4.6.1 自动提交

4.6.2 提交当前偏移量

4.6.3 异步提交

4.6.4 同步和异步组合提交

4.6.5提交特定的偏移量

4.7 再均衡监听器

4.8 从特定偏移量出开始处理记录

4.9 如何退出

4.10 反序列化器

4.11 独立消费者——没有群组的消费者

4.12 旧版本的消费者

4.13 总结

第五章 深入Kafka

5.1 集群成员关系

5.2 控制器

5.3 复制

5.4 处理请求

5.4.1 生产请求

5.4.2 获取请求

5.4.3 其他请求

5.5 物理存储

5.5.1 分区分配

5.5.2 文件管理

5.5.3 文件格式

5.5.4 索引

5.5.5 清理

5.5.6 清理的工作原理

5.5.7 被删除的事件

5.5.8 何时会清理主题

第六章 可靠的数据传递

6.1 可靠性保证

6.2 复制

6.3 broker配置

6.3.1 复制系数

6.3.2 不完全首领选举

6.3.3 最少同步副本

6.4 可靠的系统里使用生产者

6.4.1 发送确认

6.4.2 配置生产者的重试参数

6.4.3 额外的错误处理

6.5 在可靠的系统里使用消费者

6.5.1 消费者的可靠性配置

6.5.2 显式提交偏移量

6.6 验证系统可靠性

6.6.1 配置验证

6.6.2 莹莹程序验证

6.6.3 在生产环境监控可靠性

6.7 总结

第七章 构建数据通道

第八章 跨集群数据镜像

第九章 管理Kafka

第十章 监控Kafka

第十一章 流式处理

consumer count = partition count
0.9版本后offset存储Kafka本地,0.9之前高并发量影响zk性能。
Kafka replication factor数不能超过broker数。

Kafka文件存储

log 1G/7day
分片和索引机制:文件命名为偏移量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值