码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Kafka之日志存储详解


    目录

    1. 存储介质的速度常识

      1.1 各个存储介质的速度层级图

    1.2 速度层级描述

    2. kafka日志文件目录结构

    2.1 kafka日志文件目录描述

    2.2 每个主题分区下的文件目录结构

    3. 具体日志文件详解

    3.1 ".index"文件 

    3.2 ”.timeindex“文件

    3.3 ".log" 文件

    3.4 其他文件

    4.回顾与总结


    1. 存储介质的速度常识

      1.1 各个存储介质的速度层级图

    1.2 速度层级描述

            一个由6块7200r/min的RAID-5阵列组成的磁盘簇的线性(顺序)写入速度可以达到600MB/s,而随机写入速度只有100kb/s,两者性能相差6000倍。

    2. kafka日志文件目录结构

    2.1 kafka日志文件目录描述

        首先我们需要了解的是Kafka的日志文件目录是日志根目录加上主题和分区来命名的,如以下格式:-。

       举个例子,假设由一个主题名为”topic-log“,此主题有4个分区,那么在实际物理存储上表现为”topic-log-0“”topic-log-1“”topic-log-2“”topic-log-3“,如下图所示:

    2.2 每个主题分区下的文件目录结构

         如下图所示:

    3. 具体日志文件详解

    3.1 ".index"文件 

            索引文件,以稀疏索引(sparse index)的方法构造消息的索引,它并不保证每个消息在索引文件中都有对应的索引项。每当写入一定量(由broker端参数log.index.interval.bytes指定,默认值为4096,即为:4kb)的消息时,偏移量索引文件和时间戳索引文件分别增加一个偏移量索引项和时间戳索引项,增大或减小log.index.interval.bytes的值,对应地可以增加或缩小索引项的密度。
           稀疏索引通过MappedByteBuffer将索引文件映射到内存中,以加快索引的查询速度。偏移量索引文件中的偏移量是单调递增的,查询指定偏移量时,使用二分查找法来快速定位偏移量的位置,如果指定的偏移量不在索引文件中,则会返回小于指定偏移量的最大偏移量。时间戳索引文件中的时间戳也保持严格的单调递增,查询指定时间戳时,也根据二分查找法来查找不大于该时间戳的最大偏移量,至于要找到对应的物理文件位置还需要根据偏移量索引文件来进行再次定位。稀疏索引的方式是在磁盘空间、内存空间、查找时间等多方面之间的一个折中。

    3.2 ”.timeindex“文件

          基于时间戳与 offset组成的索引文件,与

    3.3 ".log" 文件

        真正保存消息数据的日志文件

    3.4 其他文件

       clear-offset-checkpoint: 记录已清理和未清理的部分

       log-start-offset-checkpoint: 对应logStartOffset,用来标识日志的起始偏移量。各个副本在变动LEO和HW的过程中,logStartOffset也可能随之而动

       meta.properties:  记录分区的元数据。

      recovery-point-offset-checkpoint和replication-offset-checkpoint这两个文件分别对应了LEO和HW。

    Kafka会有一个定时任务负责将所有分区的LEO刷写到恢复点文件recovery-point-offset-checkpoint中,定时周期由broker参数log.flush.offset. checkpoint.interval.ms来配置,默认值为60000。还有一个定时任务负责将所有分区的HW刷写到复制点文件replication-offset-checkpoint中,定时周期由broker端参数replica.high.watermark.checkpoint.interval.ms来配置,默认值为5000。

    4.回顾与总结

       kafka的日志存储保证的消息的可靠性,日志文件的存储方式及读写方式让kafka更加的高性能。

  • 相关阅读:
    LeetCode-201. 数字范围按位与-Java-medium
    基于Java+SpringBoot+vue+elementui药品商城采购系统详细设计实现
    Python Pandas简介及基础教程+实战示例。
    加速大模型落地!中兴通讯携手 1024 程序员节设立 AICon 人工智能大模型工程化论坛
    代码随想录 | Day53
    Springboot老年人社区服务平台设计与实现x45mt计算机毕业设计-课程设计-期末作业-毕设程序代做
    瑞芯微 RK1126 平台编译zlib gpac 使用GPAC将H264 H265保存为MP4文件 录像
    Python学习之文件操作
    C++:STL之Vector实现
    智能体、多模态化大势所趋,探大模型的未来!
  • 原文地址:https://blog.csdn.net/jy739761380/article/details/137954949
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号