Kafka日志清理实现详细过程讲解

 更新时间:2023年05月17日 09:22:30   作者:shysh  
这篇文章主要为大家介绍了Kafka日志清理实现详细过程讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Kafka日志清理目前主要有两种策略:

  • 日志删除
  • 日志压缩:日志压缩就是根据key来保留最后一条消息。

Kafka提供log.cleanup.policy参数进行相应配置,默认值:delete,还可以选择compact。

日志删除

配置默认值说明
log.retention.check.interval.ms300000 (5分钟)检测频率
log.retention.hours168 (7天)日志保留时间小时
log.retention.minutes日志保留时间分钟
log.retention.ms日志保留时间毫秒
file.delete.delay.ms60000 (1分钟)延迟执行删除时间
log.retention.bytes-1 无穷大运行保留日志文件最大值
log.retention.bytes1073741824 (1G)日志文件最大值

Kafka会根据检测频率周期性的检测日志是否需要删除,日志删除策略主要有以下集中:

  • 基于时间的删除策略
  • 基于文件大小的删除策略
  • 基于日志文件起始偏移量

基于时间删除

Kafka会查找日志段的时间戳索引文件中的最后一条记录,如果最后一条timestamp小于0,则取最近修改时间。

当确认完需要删除的日志段以后,需要进行以下删除操作:

  • 从日志对象中所维护日志分段的ConcurrentSkipListMap中移除待删除的日志分段,保证没有线程对这些日志分段进行读取操作。
  • 为日志段中的所有文件加上.delete后缀
  • Kafka中会有一个命名为"delete-file"的延迟任务来删除这些无效的日志数据

假如当前日志段中也有需要删除的数据,那么kafka会先进行分段,创建一个新的活跃日志段,然后执行删除操作。

基于大小删除

  • 计算需要删除的日志大小的总和(当前日志大小-所允许的日志文件最大值)
  • 然后从第一个日志分段开始查找,查找可以进行删除的日志段集合
  • 最后执行删除操作

基于日志文件起始偏移量

日志文件起始偏移量默认等于第一个日志段的基准偏移量,但随着数据的删除操作,该值也在不断变化。

基于日志文件起始偏移量的判断规则是,如果一个日志段的下一个日志段的起始偏移量如果小于日志文件起始偏移量,那么该日志段就可以被加入到删除队列,最后执行删除。

以上就是Kafka日志清理实现详细过程讲解的详细内容,更多关于Kafka日志清理的资料请关注脚本之家其它相关文章!

相关文章

  • MyBatis映射文件中的动态SQL实例详解

    MyBatis映射文件中的动态SQL实例详解

    在本文中,我们深入探讨了动态SQL的各种标签,包括<if>、<choose>、<trim>、<foreach>等,通过实际的例子演示了它们的用法,感兴趣的朋友一起揭开动态SQL的神秘面纱,带你领略它的魅力
    2024-01-01
  • java实现6种字符串数组的排序(String array sort)

    java实现6种字符串数组的排序(String array sort)

    这篇文章主要介绍了java实现6种字符串数组的排序(String array sort),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Java中使用Jedis操作Redis的示例代码

    Java中使用Jedis操作Redis的示例代码

    本篇文章主要介绍了Java中使用Jedis操作Redis的示例代码,具有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • spring自定义一个简单的Starter启动器

    spring自定义一个简单的Starter启动器

    这篇文章主要介绍了spring自定义一个简单的Starter启动器,一个 starter其实就是对一个功能的集成封装,然后对外提供一个依赖,让业务去使用,像我们熟悉的 Redis,mongo,mybatis 等均属于,需要的朋友可以参考下
    2023-07-07
  • 深入浅析SPI机制在JDK与Spring Boot中的应用

    深入浅析SPI机制在JDK与Spring Boot中的应用

    SPI是一种使软件框架或库更加模块化、可扩展和可维护的有效方法。通过遵循“开闭原则”, SPI 确保了系统的稳定性和灵活性,从而满足了不断变化的业务需求,这篇文章主要介绍了SPI机制在JDK与Spring Boot中的应用,需要的朋友可以参考下
    2023-09-09
  • mybatis-plus 处理大数据插入太慢的解决

    mybatis-plus 处理大数据插入太慢的解决

    这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Spring学习笔记之RestTemplate使用小结

    Spring学习笔记之RestTemplate使用小结

    这篇文章主要给大家介绍了关于Spring学习笔记之RestTemplate使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • 如何使用Spring Boot ApplicationRunner解析命令行中的参数

    如何使用Spring Boot ApplicationRunner解析命令行中的参数

    这篇文章主要介绍了使用Spring Boot ApplicationRunner解析命令行中的参数,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • Java编程基础元素-运算符

    Java编程基础元素-运算符

    这篇文章主要介绍了Java编程基础元素-运算符,运算符就是在用变量或常量进行运算时,经常需要用到的运算符,Java 提供了丰富的运算符,可分为算术运算符、关系运算符、逻辑运算符和位运算符,下面来看具体的内容介绍吧
    2022-01-01
  • Spring MVC Mybatis多数据源的使用实例解析

    Spring MVC Mybatis多数据源的使用实例解析

    项目需要从其他网站获取数据,因为是临时加的需求,这篇文章主要介绍了Spring MVC Mybatis多数据源的使用实例解析,需要的朋友可以参考下
    2016-12-12

最新评论