Kafak 简单介绍
Kafak 简单介绍
momisabuilder 发表于8个月前
Kafak 简单介绍
  • 发表于 8个月前
  • 阅读 26
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

Topic

Kafka中的Message,是以topic为基本单位存储信息的。每个topic可以分成不同的分区(partition),每个partition存储一部分message。请看官方图:

partition,是以文件的形式存储在集群中的文件系统中的,比如,创建一个名为connector-topic,有2个分区,那么在Kafka的数据目录中,log.dirs中就有2个这样的目录:connector-topic-0,connector-topic-1,命名规则为:<topicName>-<partitionId>,里面存储的就是这2个partition的数据。

来,看看具体的分区信息:

[hadoop@Ip kafka]$ ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic connector-topic
Topic:connector-topic   PartitionCount:2        ReplicationFactor:2     Configs:


Topic: connector-topic  Partition: 0                 Leader: 1       Replicas: 2,1   Isr: 1,2
Topic: connector-topic  Partition: 1                 Leader: 3       Replicas: 3,2   Isr: 3,2

Partition的数据文件

Partition中的每个Message由Offset来表示他在这个partition中的偏移量,这个Offset不是该Message在partition数据文件的实际存储位置,而是逻辑上的一个数值,但就是逻辑上的数值,对我们来说,就足够了。每个Message包含三个属性,offset,messageSize,data,其中offset为Long型,MessageSize为int32,表示data有多大,data为message的具体内容

数据文件的分段

Kafka解决查询效率的手段之一是将数据文件分段,比如有100个Message,他们offset是从0到99。假设数据文件分成5段,第一段为0-19,第二段20-39,依次类推,每段放在一个单独的数据文件里面,数据文件一该段中最小的offset命名。这样再查找制定的offset的Message的时候,用二分查找就可以定位到该Message在哪个段中

为数据文件建索引

数据文件分段使得可以在一个较小的数据文件中查找对应的offset的Message了,但是这依然需要顺序扫描才能找到对应的offset的message,为了进一步提高查找的效率,Kafak为每个分段的数据文件建立索引文件,文件名与数据的名字是一样的,只是文件扩展名为.index

索引包含两个部分,分别为相对offset和position

相对offset,

position,表示该条Message在数据文件的绝对位置

 

 

 

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 3
博文 57
码字总数 23631
×
momisabuilder
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: