传输_kafka简介
2021-11-19 16:44:06 1 举报
AI智能生成
kafka简介
作者其他创作
大纲/内容
概念
Kafka:一种高吞吐量、分布式、基于发布/订阅的消息系统
broker:消息中间件处理节点,负责消息存储和转发
topic:消息类别
partition:一个 topic 可以包含多个 partition
offset:消息在日志中的位置
Product:消息生产者
Consumer:消息消费者
Consumer Group:消费者分组
replica:partition 的副本
leader:replica 中的主角
follower:从 leader 中复制数据
Zookeeper:保存着集群 broker、topic、partition 等 meta 数据
架构图
数据存储设计
Message
offset
MessageSize
data
segment
partition 物理上由多个 segment 文件组成
图
segment 大小相等顺序读写
文件以该段中最小的 offset 命名
二分查找message
数据文件索引
为segment建立了索引文件
文件名与数据文件的名字是一样的
稀疏存储的方式
图
复制原理
kafka多副本机制实现故障自动转移
Leader处理partition的所有读写请求
follower会被动定期地去复制leader上的数据
ISR:in-sync replica set
和leader保持同步的follower集合
follower超时剔除
OSR:Outof-Sync Replicas
延迟剔除+新加入的follower
AR:所有的副本=ISR+OSR
采取预写式的日志文件
HW:HighWatermark
图
LEO:LogEndOffset
新消息同步
ack为-1
图
可靠性保证
宕机
follower
leader
发送次数
ack:-1 At Least Once
ack:0 At Most Once
Exactly Once
At Least Once + 幂等性
幂等性
生产者设计
发送模式
负载均衡
random
round-robin
hash
批量发送
压缩
事务
全局唯一的 Transaction ID
PID 和Transaction ID 绑定
组件 Transaction Coordinator
将事务所有写入 Kafka 的一个内部 Topic
重启后事务状态可以得到恢复
图
消费者设计
Consumer Group
Consumer
pull
kafka采用方式
timeout机制
push
消费者速率不同
消费分配策略
RoundRobin
Range(默认)
Sticky粘性(0.11版本以后)
分区分配尽可能均匀
rebalance时尽可能与上一次保持相同
再平衡机制rebanlance
consumer group中的新增或删除某个consumer
consumer订阅的topic发生变化,如订阅了test-*,新建了一个topic:test-XXX
consumer所订阅的topic发生了新增分区的行为
零拷贝
不用过用户,系统直接将数据发送网卡
生产者:mmap
消费者:sendfile
图
控制器组件 Controller
简介
作用:在ZooKeeper 的帮助下管理和协调整个 Kafka 集群
1.主题管理(创建、删除、增加分区)
2.分区重分配
3.Preferred 领导者选举
4.集群成员管理
5.数据服务
zookeeper存储数据
参与者:集群中任意一台 Broker 都能充当控制器的角色,
但是,在运行过程中,只能有一个 Broker 成为控制器
但是,在运行过程中,只能有一个 Broker 成为控制器
选举
启动选举:broker启动后都会尝试去ZooKeeper中创建/controller节点,第一个成功则为控制器
故障转移:Failover
图
核心API
生产者 API
消费者API
The high-level consumer API
The SimpleConsumer API
多次读取一个消息
只消费一个 patition 中的部分消息
使用事务来保证一个消息仅被消费一次
Streams API
Connector API
问题
为什么kafka速度快?
顺序读写
零拷贝
消息压缩
分批发送
零拷贝
消息压缩
分批发送
0 条评论
下一页