加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

Kafka源码分析及图解原理之Broker端

发布时间:2019-09-20 12:51:16 所属栏目:Windows 来源:IT技术分享
导读:副标题#e# 首先从kafka如何创建一个topic来开始: kafka-topics--create--zookeeperlocalhost:2181--replication-factor1--partitions1--topictest 其中有这么几个参数: --zookeeper:zookeeper的地址 --replication-factor:副本因子 --partitions:分区

每一个LogSegment都包含一些文件名一致的文件集合。文件名的固定是20位数字,如果文件名是00000000000000000000代表当前LogSegment的第一条消息的offset(偏移量)为0,如果文件名是00000000000000000097代表当前LogSegment的第一条消息的offset(偏移量)为97。日志文件有多种后缀的文件,重点关注.index、.timestamp、.log三种类型文件即可。

  • .index:偏移量索引文件
  • .timeindex:时间索引文件
  • .log:日志文件
  • .snapshot:快照文件
  • .swap:Log Compaction之后的临时文件

4.2 索引与日志文件

kafka有2种索引文件,第一种是offset(偏移量)索引文件,也就是.index结尾的文件。第二种是时间戳索引文件,也就是.timeindex结尾的文件。

我们可以用kafka-run-class.sh来查看offset(偏移量)索引文件的内容:

Kafka源码分析及图解原理之Broker端

可以看到每一行都是offset:xxx position:xxxx。 这两者没有直接关系。

  • offset:相对偏移量
  • position:物理地址

那么第一行的offset:12 position:4423是什么意思呢?它代表偏移量从0-12的消息的物理地址在0-4423。

同理第二行的offset:24 position:8773的意思也能猜得出来:它代表偏移量从13-24的消息的物理地址在4424-8773。

我们可以再用kafka-run-class.sh来看下.log文件的文件内容,关注里面的baseOffset和postion的值。你看看和上面说的对应的上吗。

Kafka源码分析及图解原理之Broker端

4.3 如何用offset查找

按上面的例子,如何查询偏移量为60的消息

根据offset首先找到对应的LogSegment,这里找到00000000000000000000.index

通过二分法找到不大于offset的最大索引项,这里找到offset:24 position:8773

打开00000000000000000000.log文件,从position为8773的那个地方开始顺序扫描直到找到offset=60的消息

Kafka源码分析及图解原理之Broker端

【编辑推荐】

  1. Kafka设计原理看了又忘,忘了又看?
  2. Kafka为了追求极致的性能,有这11大优化之处
  3. Windows Core OS 最新消息:移植 Windows 10 操作中心
  4. 我以为我对Kafka很了解,直到我看了此文章
  5. 分布式消息系统的设计要点
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!