《Kafka权威指南》记录

生产者

生产流程 32页
《Kafka权威指南》记录_第1张图片
《Kafka权威指南》记录_第2张图片
生产者创建

Kafka生产者需要三个必须参数:broker地址清单,key和value的序列化方式 (如StringSerializer)

生产者发送

《Kafka权威指南》记录_第3张图片
ACKS

acks 参数代表多少副本分区副本收到消息才算写入成功
0 生产者发送即不管服务器响应
1 只等待主节点响应
all 等待所有节点响应

数据有序写入,有序读取

如果消息不含key,则默认轮询使用分区。
如果消息包含key,则默认hash散列。得注意大key问题,可以自定义重分区

消费者

0.10.1 旧版本内。kafka 心跳监测节点存活和 消息轮询频率监测 (处理消息花费时间) 是相互独立的
session.timeout.ms 默认3s
《Kafka权威指南》记录_第4张图片
由消费组的群主来分配消费者分区

创建消费者

必须的三个创建参数和生产者一致,也可以创建group.id的消费者群

偏移量提交

1 自动提交,提交间隔默认5s。rebalance会重复提交
2 同步/异步手动提交
3 同步异步组合提交。平时异步,在finally最后一次用同步提交

如果不能容忍任何数据重复问题。可以把offset和保存记录同时存在db中。出现异常可以一起回滚。然后每次读取db的offset

异步手动提交的重复消费
《Kafka权威指南》记录_第5张图片
《Kafka权威指南》记录_第6张图片

控制器

功能:通过zk选取控制器,控制器来选取首领副本
控制分区主从节点的控制器本身也是一个broker
在这里插入图片描述

副本和请求

《Kafka权威指南》记录_第7张图片
客户端如何知道从哪个副本发送消费生产请求?

1 每个broker都会保存元信息,服务器可以告诉客户端topic的分区,首领副本等信息。
2 客户端和任意broker发送元信息请求获得信息,再和首领副本交互。
3 定时刷新元信息,防止变动

生产请求

《Kafka权威指南》记录_第8张图片
生产的数据会写入本地文件系统的缓存中,ack的判定也只是知道写入了缓存中。不保证何时写入磁盘。
Kafka依赖复制功能保证数据的持久性

获取请求

首领副本处理和零拷贝响应
响应判定:积累一定数据量响应,达到一定时间响应
《Kafka权威指南》记录_第9张图片
只能读取已写入所有同步副本的信息
《Kafka权威指南》记录_第10张图片
其他请求

Kafka内部通讯基于TCP的二进制协议,协议内增加请求类型
例如offset由原先zk存储变更为特定kafka主题上保存。在协议内增加offset请求类型

存储

分区设定
《Kafka权威指南》记录_第11张图片

分区数据的删除:根据设定时间参数删除,默认7天 / 根据分区大小参数删除,默认1G

额外清理模式

可以开启清理模式,根据脏数据比例自动清理
《Kafka权威指南》记录_第12张图片
《Kafka权威指南》记录_第13张图片

文件格式

通过索引立刻读取指定分区的offset数据

可靠的数据传递

原子,一致,隔离,持久

Kafka 数据传递的保证点
《Kafka权威指南》记录_第14张图片
复制

判定为是同步的跟随着副本条件
《Kafka权威指南》记录_第15张图片

后续还需要大量补充

你可能感兴趣的:(kafka)