Architecture
系统间解耦,异步通信,削峰填谷
Topic 消息主题,用于存储消息
Partition 分区,通过扩大分区,可以提高存储量
Broker 部署Kafka服务的设备
Leader kafka主分区
Follwer kafka从分区
高性能之道:
读:零拷贝技术,sendfile
写:顺序写+ 内存映射文件,mmap
Config
Producer
ack&&retry机制
ack配置参数
0表示生产者只要将消息发出就认为发送成功,不会等待任何回复,性能最高
1表示生产者发出消息后,会等待Leader回复,收到回复后认为发送成功
all表示生产者发出消息后,会等待Leader和所有Follwer回复,才认为发送成功,最可靠
retry 发送失败重试
idempotence 幂等性配置
transaction-id 事务id配置,确保事务id唯一
batch-size 批处理大小
buffer-memory 缓冲区内存大小
key-serializer key 序列化
value-serializer value 序列化
Consumer
group-id 组id
auto-offset-reset 配置消费位置
earliest 表示从最早的位置开始消费
latest 表示从最新的下一个偏移位置消费
none 根据最近一次提交位置消费,没有提交位报错
enable-auto-commit 是否开启自动提交
auto-commit-interval 自动提交间隔
transaction-isolation-level 配置事务隔离级别
key-deserializer key 反序列化
value-deserializer value 反序列化
HW & LE
早期使用HW截断机制可能会造成丢失数据和数据不一致问题
0.11版本以后使用LE,不会直接截断,会根据leader返回的版本进行判断是否截断,从而避免了数据丢失和不一致问题