消息队列原理与实战 | 青训营笔记

36 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第8天

Broker-消息存储

image.png LogSegment 1.日志文件 2.偏移量的索引文件 3.时间戳索引文件 4.其他文件

Broker-消息文件结构

image.png 移动磁头找到对应磁道,磁盘转动,找到对应扇区,最后写入。寻道成本比较高,因此顺序写可以减少寻道所带来的成本。

Broker顺序写

image.png 采用顺序写写入,提高写入效率,创建文件后,不必在中间作出修改,而是末尾添加。 Broker-如何找到消息 Consumer通过Fetchrequest拿到消息,Broker会指定Offset处的消息,按照时间窗口和消息窗口交给consumer.

Broker偏移量索引文件

Broker时间戳索引文件

Broker传统数据拷贝

从磁盘空间拷贝到内核空间,再拷贝到应用空间

Consumer-消息的接收端

如何解决Partiton在Consumer分配的问题? 进行手动分配,哪一个Consumer消费哪一个Parition完全由业务决定 如果这时Consumer挂掉,线上业务暂停,即无法自动容灾

Consumer-high-level

消费者发送协调者请求,消费者向协调者。某些业务特性,导致业务希望某些业务分片发送到特定的分片上。校验Group发送请求之后,协调者leader发送分配方案到协调者上,协调者将方案告诉每个消费者。 每个消费者给协调者在一定的时间间隔内发送心跳,如果没有按时发送心跳,消费者则将重新开始。 Producer:批量发送、数据压缩 Broker:顺序写、消息索引、零拷贝 Consumr4:Rebalance

image.png

Kafka-重启操作

image.png重启过程中数据写入仍然在继续进行,Broker1的目标是疯狂追赶leader,数据追上后,进行数据回切。ch