Blog
kafka-05 kafka架构深入
kafka工作流程及文件存储机制
工作流程
- 创建副本,leader也算副本之一,且相同分区的副本不会在同一台服务器上
- 上图012345表示偏移量
- follower会主动找到leader把数据备份过来
- kafka中的消息是以topic进行分类的
- topic是逻辑上的概念,而partition是物理上的概念
- 每个partition对应一个log文件,该log文件中存储的就是producer产生的数据。
- producer产生的数据会被不断追加到该log文件末端,且每条数据都有自己的offset
- 消费者组中的每个消费者,都会实时记录自己消费到了哪个offset,以便出错恢复时,从上次的位置继续消费
kafka文件存储机制
- 为防止log文件过大导致数据定位效率低,kafka采取了分片和索引机制,将每个partition分为多个segment(分片,片段)
- 每个segment对应两个文件.index文件和.log文件,位于一个文件夹下,该文件夹的命名规则topic名称+分区序号
- first-0 first-1 first-2
- index和log文件以当前segment的第一条消息的offset命名
index文件和log文件
- 根据index文件名确定offset3在哪个index文件
- 找到index文件中offset3的位置存储的seek:756 以及数据大小 即可获取到message-3
- seek指物理数据偏移地址