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