Kafka笔记四之存储策略

来源:互联网 发布:c语言产生0 1的随机数 编辑:程序博客网 时间:2024/06/08 14:44

1.一个topic包含多个partition而message存储在partition当中,offset可以看作是message在partition中的id通过它kafka可以定位具体的message。

 

2.一个partition又是由多个segment(片段)组成,生产者发送消息给topic,broker收到消息后向partition中最后一个segment添加该消息,当segment达到一定大小后broker会创建新的segment。

 

3. 在server.properties文件中log.dirs=/opt/kafka_data指定了kafka数据的存储目录


图中的hello-0就是topic为hello,partition为0,一个partition一个文件夹。

Partition下会有很多个segment,每个片段文件名以此片段中最小的那个offset命名,分别包含index和log文件,index是索引文件log是数据文件,两个文件同名都是以最小的offset命名的。


假设查找hello-0中offset=1111的message,而目录下有[001000.index,001000.log]和[002000.index,002000.log]那么首先就可以确定应该存在于001000.log文件,因为1000是此文件中最小的offset,然后将索引文件001000.index读取到内存中,index文件采用的是稀疏索引即每隔一定数据字节建立一条索引比如0~100,101~200而offset=1111(1111-1000=111)此时可以确定在101~200这个区间中,这样就可以定位到message的大概位置从而比起全部读取数据效率要高。


0 0
原创粉丝点击