• kafka日志策略


    kafka日志清除策略

    kafka log的清理策略有两种:delete,compact,默认是delete
    这个对应了kafka中每个topic对于record的管理模式

    delete:一般是使用按照时间保留的策略,当不活跃的segment的时间戳是大于设置的时间的时候,当前segment就会被删除
    compact: 日志不会被删除,会被去重清理,这种模式要求每个record都必须有key,然后kafka会按照一定的时机清理segment中的key,对于同一个key只保留罪行的那个key.同样的,compact也只针对不活跃的segment
    配置为
    cleanup.policy: delete

    cleanup.policy: compact

    kafka segment介绍

    在学习日志清理策略之前,首先了解一下kafka是如何存储和管理日志的,因为他的管理都是基于segment的,所以有必要先了解清楚这个
    segement的产生策略。

    segmnet 的作用

    kafka的日志存储和消费,对外的最小粒度是partion,也就是producer和consumer最小的选择粒度是某个topic的某些partition。
    每个partition又多个segment组成,这些segment一般是按照时间顺序产生的。
    在单个partition中只有一个处于active的segment,这个segment是正在写入的segment(假设为segmentA),当segmentA的大小达到一定的程度(或者是经过了一定的时长),就会产生一个新的segmentB,这个时候segmentA就不再有数据写入了,变成了不活跃的segment,而segmentB就是当前Active的segment.
    日志清理的策略总是针对不活跃的segment进行的。

    属性相关的配置

    分段策略属性

    属性名含义默认值
    log.roll.{hours,ms}日志滚动的周期时间,到达指定周期时间时,强制生成一个新的segment168(7day)
    log.segment.bytes每个segment的最大容量。到达指定容量时,将强制生成一个新的segment1G(-1为不限制)
    log.retention.check.interval.ms日志片段文件检查的周期时间60000

    日志刷新策略

    Kafka的日志实际上是开始是在缓存中的,然后根据策略定期一批一批写入到日志文件中去,以提高吞吐率

    属性名含义默认值
    log.flush.interval.messages消息达到多少条时将数据写入到日志文件10000
    log.flush.interval.ms当达到该时间时,强制执行一次flushnull
    log.flush.scheduler.interval.ms周期性检查,是否需要将信息flush很大的值

    日志保存清理策略

    属性名含义默认值
    log.cleanup.polict日志清理保存的策略只有delete和compact两种delete
    log.retention.hours日志保存的时间,可以选择hours,minutes和ms168(7day)
    log.retention.bytes删除前日志文件允许保存的最大值-1
    log.segment.delete.delay.ms日志文件被真正删除前的保留时间60000
    log.cleanup.interval.mins每隔一段时间多久调用一次清理的步骤10
    log.retention.check.interval.ms周期性检查是否有日志符合删除的条件(新版本使用)300000

    日志删除,只是无法被索引到了而已。文件本身仍然是存在的,只有当过了log.segment.delete.delay.ms 这个时间以后,文件才会被真正的从文件系统中删除。

    总结

    kafka启用delete的清理策略的时候需要注意配置,这些配置都是针对于topic级别的。

    配置项配置项说明建议项
    log.cleanup.policydelete
    log.segment.bytes每个segment的大小,达到这个大小会产生新的segment, 默认是1G
    log.segment.ms配置每隔n ms产生一个新的segment,默认是168h,也就是7天
    log.retention.bytes总的segment的大小限制,达到这个限制后会删除旧的segment,默认值为-1,就是不会删除可以设置某个topic最多缓存多少数据
    log.retention.mssegment的最后写入record的时间-当前时间 > retention.ms 的segment会被删除,默认是168h, 7天

    参考链接:
    https://blog.csdn.net/u013200380/article/details/106453013/
    https://www.msnao.com/2020/11/09/4908.html

  • 相关阅读:
    产品Web3D交互展示有什么优势?如何快速制作?
    [Paper] Structure Of The Paper
    《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(20)-Fiddler精选插件扩展安装,让你的Fiddler开挂到你怀疑人生
    OpenCV之MobileNet-SDD目标检测
    One bite of Stream(7)
    MySQL数据库详细解析
    web前端-JQuery
    JS-JSON
    layout viewport visual viewport ideal viewport
    校园安全LoRaWan门锁系统,新导智慧校园解决方案
  • 原文地址:https://blog.csdn.net/shenyunsese/article/details/127670429