Kafka
2023-01-12 11:21:41 0 举报
AI智能生成
Kafka学习总结
作者其他创作
大纲/内容
分布式:对broker来说是无主模式
按顺序存储在物理的存储层,按照topic->partition->分段的形式,保存为log文件
索引文件内容
同时维护一个索引文件
以Topic进行隔离
Topic
jvm进程、相当于一台机器
多broker时,只有一个broker为controller
broker
发送数据的返回情况跟ACK的设置相关
producer
1.先根据任意一个broker建立连接
2.根据Groupid通过算法获取到分区号,去_consumer_offsets的topic上找到leader所在的broker,创建GroupCoordinator并建立连接
3.加入GroupCoordinator选出consumer的leader(谁先进谁就是leader),并分配策略(同组的consumer Leader会进行partition的分配,哪个consumer连接哪个partition)
4.consumer leader将分配策略同步给Group Coordinator,以便consumer的follow去Group Coordinator上同步获取策略
5.获取各个分区的offset的位置
需要扩展学习
涉及如何request与response相对应
NIO
命中PageCache直接取走
PageCache
直接从磁盘sendfile给Consumer,不再经过broker
零拷贝
broker进行mute、unmute操作一条条的读取
发送的机制:先层层封装,只有真正发送的时候,才会触发写事件
6.根据各个分区的offset来拉取数据
consumer
操作数据
leader
同步leader上的数据
follower
Controller来对其选主、重选等
多分区
只能被一个consumer消费
一个consumer可以消费多个partition
同一个Group
partition
group
持久化写入log
__consumer_offset的50个分区记录所有的consumer消费的offset的记录
同步、异步、自动提交最终都是同步给GroupCoordinator
offset
同组的consumer数量不要超过partition的数量,否则会出现闲置,因为一个partition对应一个consumer
ISR:已同步的副本
OSR:无心跳的副本
HW:高水位线,consumer只能消费到高水位线位置的数据
LW:低水位
LEO:LogEndOffset
分布式,备机同步成功才成功
ack:-1
消息发出即成功
ack:0
消息在leader上持久化才成功
ack:1
ack:-1、0、1
replicaManager
logManager
面向Group
根据Groupid通过算法获取到分区号,去_consumer_offsets的topic上找到leader所在的broker,并在上面建立GroupCoordinator
一个broker对应一个GroupCoordinator
存储组的元数据,包括consumer在各个partition上的offset
GroupCoordinator
只有一个broker为controller
元数据的管理
决定哪个partition为leader,哪个partition为follower,并得到broker与分区的对应关系
分布式协调
Controller
只在生成侧,是一端的(非双端的)
面向一个Producer的
5大要素,解决重试、幂等、有序
事务
connector
Kafka
0 条评论
回复 删除
下一页