这是我参与「第五届青训营 」笔记创作活动的第8天
Broker-消息存储
LogSegment
1.日志文件
2.偏移量的索引文件
3.时间戳索引文件
4.其他文件
Broker-消息文件结构
移动磁头找到对应磁道,磁盘转动,找到对应扇区,最后写入。寻道成本比较高,因此顺序写可以减少寻道所带来的成本。
Broker顺序写
采用顺序写写入,提高写入效率,创建文件后,不必在中间作出修改,而是末尾添加。
Broker-如何找到消息
Consumer通过Fetchrequest拿到消息,Broker会指定Offset处的消息,按照时间窗口和消息窗口交给consumer.
Broker偏移量索引文件
Broker时间戳索引文件
Broker传统数据拷贝
从磁盘空间拷贝到内核空间,再拷贝到应用空间
Consumer-消息的接收端
如何解决Partiton在Consumer分配的问题? 进行手动分配,哪一个Consumer消费哪一个Parition完全由业务决定 如果这时Consumer挂掉,线上业务暂停,即无法自动容灾
Consumer-high-level
消费者发送协调者请求,消费者向协调者。某些业务特性,导致业务希望某些业务分片发送到特定的分片上。校验Group发送请求之后,协调者leader发送分配方案到协调者上,协调者将方案告诉每个消费者。 每个消费者给协调者在一定的时间间隔内发送心跳,如果没有按时发送心跳,消费者则将重新开始。 Producer:批量发送、数据压缩 Broker:顺序写、消息索引、零拷贝 Consumr4:Rebalance
Kafka-重启操作
重启过程中数据写入仍然在继续进行,Broker1的目标是疯狂追赶leader,数据追上后,进行数据回切。ch