zoukankan      html  css  js  c++  java
  • 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的物理偏移地址。

  • 相关阅读:
    PHP观察者模式 (转)
    PHP单例模式 (转)
    PHP解决并发问题的几种实现(转)
    php结合redis实现高并发下的抢购、秒杀功能 (转)
    使用 redis 减少 秒杀库存 超卖思路 (转)
    mysql视图学习总结(转)
    mysql 存储过程
    PHP中的魔术方法和关键字
    bzoj3462DZY Loves Math II
    bzoj1453[Wc]Dface双面棋盘
  • 原文地址:https://www.cnblogs.com/mayuan01/p/12391744.html
Copyright © 2011-2022 走看看