>>理论侧
书籍名称【Kafka权威指南】
链接:https://pan.baidu.com/s/11YqDDICWwQAHC4bKhwHMKg
提取码:vgz7
个人笔记:
Kafka权威指南
第 1 章 初识Kafka
>>Apache Avro
>>Kaflca 的悄息通过主题进行分类。
>>先入先出的顺序读取。
>>MirrorMaker
使用场景
1 活动跟踪
2 传递消息
3 度量指标和日志记录
4 提交日志
5 流处理
常规配置
1> broker.id
标识,整数,默认0,唯一
2> port
3> zookeeper.connect
用于保存 broker 元数据的 Zookeeper 地址。
4> log .dirs
5> num.recovery.threads.perdata.dir
对于如下3种情况, Kafka 会使用可配置的钱程 来处理日志片段
5.1 服务器正常启动,用于打开每个分区的日志片段
5.2服务器崩愤后重启,用于检查和截短每个分区的日志片段:
5.3服务器正常关闭,用于关闭日志片段。
6> auto.create.topics.enable
默认情况下, Kafka 会在如下几种情形下自动 建主题
6.1 当一个生产者开始往主题写入消息时
6.2 当一个消费者开始从主题读取消息时
6.3 任意 个客户端向主题发送元数据请求时。
主题的默认配置
1> num.partitions
参数指定了新创建的主题将包含多少个分区,默认1
2> log.retention.ms
Kafka 通常根据时间来决定数据可以被保留多久。默认使用 log. retentlon.hours 参数来配
置时间 ,默认值为 168 小时。
3>log.retention.bytes
4>log.segment.bytes
5>log.segment.ms
6>message.max.bytes
broker 通过设置message.max.bytes 参数来限制单个消息的大小,默认值是1MB
第 2 童 安装 Kafka
第 3 章 Kafka 生产者一一向 Kafka 写入数据
Kafka 发送消息的主要步骤:
Kafka 发送消息的主要步骤:
Kafka 生产者有3个必选的属性
1 bootstap.severs:该属性指定 broker 的地址清单。
2 key.serializer:默认提供ByteArraySerializer/StringSerializer/IntegerSerializer
3 value.Serializer
发送消息
1 发送并忘记
2 同步发送
3 异步发送
生产者的配置
| 序号 | 配置名称 | 配置说明 | 配置取值 | |
| 1 | acks | 参数指定了必须要有多少个分区副本收到消息 | 0/1/all | |
| 2 | buffer.memory | 该参数用来设置生产者内存缓冲区的大小,生产者用它缓冲要发送到服务器的消息 | ||
| 3 | compression.type | 默认情况下,消息发送时不会被压缩 | snappy/gzip/lz4 | |
| 4 | retries | |||
| 5 | batch.size | |||
| 6 | linger.ms | |||
| 7 | client.id | |||
| 8 | max.in.flight.requests.per.connection | 指定了生产者在收到服务器晌应之前可以发送多少个消息 | ||
| 9 | timeout.ms/request.timeout.ms/ metadata.fetch.timeout.ms | |||
| 10 | max.block.ms | |||
| 11 | max.request.size | |||
| 12 | receive.buffer.bytes/send.buffer.bytes | |||
>>键有两个用途 :
可以作为消息的附加信息,也可以用来决定消息该被写到主题的哪个分区
>>不要让消费者的数量超过主题分区的数量,多余的消费者只会被闲置
>>Confluent Schema Registry
第 4 章 Kafka 消费者一一从 Kafka读取数据
>>Partitioner
>>分区的所有权从一个消费者转移到另一个消费者,这样的行为被称为再均衡。
>>subscribe
>>一旦消费者订阅了主题,轮询就会处理所有的细节,包括群组协调、分区再均衡、发送心跳和获取数据,
消费者配置
| 序号 | 配置名称 | 配置说明 | 取值 | |
| 1 | fetch.min.bytes | 该属性指定了消费者’从服务器获取记录的最小字节数。 | ||
| 2 | fetch.max.wait.ms | 默认500ms | ||
| 3 | max.partition.fetch.bytes | 该属性指定了服务器从每个分区里返回给消费者的最大字节数。 | 它的默认值是 lMB | |
| 4 | session.timeout.ms | 默认:3秒 | ||
| 5 | auto.offset.reset | 该属性指定了消费者在读取一个没有偏移量的分区或者偏移量无效的情况下(因消费者长 时间失效,包含偏移量的记录已经过时井被删除)该作何处理 | 默认:latest | |
| 6 | enable.auto.commit | 该属性指定了消费者是否自动提交偏移量, | 默认值是 true | |
| 7 | partition.assignment.strategy | Range/RoundRobin | ||
| 8 | client.id | |||
| 9 | max.poll.records | |||
| 10 | receive.buffer.bytes | |||
| 11 | send.buffer.bytes |
退出
consumer.wakeup()是消费者唯一 一个可以从其他线程里安全调用的方法。
第 5 章 深入Kafka
“脑裂”是指两个节点同时认为自己是 当前的控制器。
Kafka 使用零复制技术向客户端发送消息
第 6 章 可靠的数据传递
消费者的可靠性配置
1>group.ld
2>auto.offset.reset
3>enable.auto.commit
4>auto.commit.interval.ms
第 7 章 构建数据管道
第 8 章 跨集群数据镜像
Kafka 内置的跨集群复制工具叫作 MirrorMaker
跨集群镜像使用场景
- 区域集群和中心集群
- 冗余
- 云迁移
双活架构
生产者进行调优,可以使用下列参数。
1>max.in.flight.requests.per.connection
2>linger.ms
3>batch.size
配置用于提升消费者的吞吐量:
1>range
2>fetch.max.bytes
3>fetch.min.bytes
4>fetch.max.wait



