【HBZ分享】Kafka中日志清理策略

发布时间:2024-11-22 00:41

理财讲座中的风险管理策略分享 #生活技巧# #理财规划技巧# #理财讲座#

最新推荐文章于 2024-09-19 10:12:22 发布

hbz- 于 2022-01-09 11:55:07 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

Kafka检测是否存在删除日志

Kafka集群搭建 并 整合springboot.
Kafka日志存储流程和LOG日志解析 + LEO + HW 讲解【点击这里】.
Consumer消费者机制 与 分区策略讲解【点击这里】.
Kafka数据文件存储-可靠性保证ACK-ISR核心【点击这里】.
Kafka高性能之零拷贝原理.

Kafka如何检测要删除的日志
(1). kafka内部会定时检测是否有日志要删除,默认是5分钟,即log.retention,check.interval.ms
(2). 支持配置策略对数据清理
(3). 根据segment单位进行定期清理,注意每次都会删除完整的segment,不会删除某个.log的一部分

启动Kafka删除策略 及 原理

启动cleaner
(1). log.cleaner.enable = true
(2). log.cleaner.threads = 2(清理线程数配置)

日志删除
(1). log.cleanup.polic = delete

# 清理超过指定时间的消息,默认168小时,7天 # 还有 log.retention.ms, log.retention.minutes, log.retention.hours, 优先级高到低 log.retention.hours=168 # 超过指定大小后,删除就得消息,下面是1G的字节数,-1表示不限制 log.retention.bytes=1073741824 123456

分别解析【基于时间】与【基于大小阈值】两种删除策略
(1). 基于【时间删除】日志说明:
设定删除7天前的数据:每个segment都会维护一个【最新更新时间】的时间戳,即每次向segment写入数据都会记录写入时的时间戳,当一个segment被写满时,会创建一个新的segment继续写。那么被写满的segment就不会再被写入,那么最大时间戳这个字段就不会更新,kafka每5分钟会检查一次是否存在要删除的segment,当这个写满的segment最大时间戳 和 当前时间戳差值达到7天,则该segment会被整个删除掉

(2). 基于【大小阈值删除】日志说明
设定partition只保留1500M的日志,每个segment最多存500M: 当日志量达到1510M时,即有4个segment,分别是500M, 500M ,500M,10M。 此时1510M > 1500M, 按理说应该从最旧的segment删除10M,但上面提及过,Kafka每次只会删除完整的segment,而一个segment是500M,所以当日志总量1510M时kafka并不会删除日志。当总日志量到达2010M时,2010-1500 = 510M, 即 要删除510M的数据,所以kafka会把最旧的segment给删除掉,由于第二旧segment也是500M > 10M,所以不会被删除,结果就是真实删除日志大小就500M,那10M不会被删除

如果【基于时间】和【基于阈值】同时存在, 只要二者有一个满足,就会触发日志清理机制

日志压缩法
该方法也是清理日志节省空间的一个方法。即 只会保留最新数据。意思就是当日志中存在3个相同key的消息,Kafka只会保留最新的那个key,剩余两个会被删除掉,以此来节省空间。一般不用,正常只会用【基于时间】或者【基于阈值大小】来进行删除

网址:【HBZ分享】Kafka中日志清理策略 https://www.yuejiaxmz.com/news/view/182764

相关内容

时间管理策略与实践方案分享.docx
高效工作的8个时间管理策略分享.docx
MySQL实现序列(Sequence)效果以及在Mybatis中如何使用这种策略
分享个人收集的资源一些关于技术生活的资源 (干货满满)
分隔法:在工作中划分心理界限的五种策略
生活中的时间管理策略.pptx
日常生活中的购物策略
自我呈现策略量表的中文版修订
心理健康在家庭中的重要性及管理策略
魔力日志

随便看看