kafka工作流程及文件存储

kafka工作流程

  

    kafka中消息以topic进行分类,生产者生产消息,消费者消费消息,都是面向topic的。

    topic是逻辑上的概念,而partition是物理上的概念,每个partition对应一个log文件,该log文件中存储的就是producer生产的数据,producer生产的数据会被不断的追加到该文件末端,且每条数据都有自己的offset,消费者组中的每个消费者,都会实时记录自己消费到哪个offset,以便出错恢复时从上次的位置上继续消费。

    producer发送数据和消费者消费数据的对象都是partition中的leader,其他follower会实时从leader中同步数据,和leader中的数据保持一致。

kafka文件存储机制

  

    每个topic可以分为多个partition;

    kafka采取了分片和索引机制,将每个partition分为多个segment;

    每个partition可以分为多个segment;

    每个segment大小是相同的,且对应.log和.index文件;

    .log和.index文件成对存在,.log文件记录的是producer生产者生产的数据,.index文件记录的是.log文件中每条数据的物理偏移量;

    每个partition的数据都位于同一个目录下,并且以“topic名称+partition序号”的格式;

    partition数据的全局存放路径可以在kafka下bin/conf/server.properties中配置

      

index文件和log文件

     

       log文件默认存储七天,默认大小为1G,当大于1G时,会重新创建一个新的.log文件

  

    

    index文件和log文件都以该segment的第一个消息的offset命名。数值最大为64位long大小,19位数据字符长度,没有数字用0填充。

    index文件存储大量的索引信息,log文件存储大量的数据,索引文件中的元数据指向对应数据文件中的message的物理偏移地址。

    

猜你喜欢

转载自www.cnblogs.com/wnwn/p/12332252.html