kafka数据清理配置——删除篇

前言

本意利用kafka实现一个类似redis发布订阅的模式,比redis多了一个数据分区的功能。kafka里面的数据我们是不需要存储的,因此我们需要配置对应的删除策略

Kafka版本号

2.8.1

数据清理策略

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

segment

简介
kafka每个主题有1个或者多个分区组成,对于kakfa生产者和消费者,最多指定推送或者消费哪个具体分区就行。不过kafka在数据存储中,分区又是一个或者多个segment组成。
生成segment的相关配置
log.segment.bytes: 每个segment的大小,达到这个大小会产生新的segment, 默认是1G
log.segment.ms: 配置每隔n ms产生一个新的segment,默认是168h,也就是7天

其他配置

log.retention.ms
segment的最后写入record的时间-当前时间 > retention.ms 的segment会被删除,默认是168h, 7天
ps:这句话很重要,多读几遍去理解它。之前博主就是误以为类似segment不会存活到我所配置的时间,其实是只要没有新segment产生+不停地往该segment写数据就不会删除该段。
如果满足删除条件的话,segment也不会立即删除,只是会打上delete标签。
log.retention.check.interval.ms
每隔多久检查一次是否有可以删除的log,默认是300s,5分钟,删除上面说的打上delete标签的segment

我的配置

因为我是docker部署的,我是将这些当作环境变量写在了docker-compose里面:

version: "3.0"
services:
  kafka:
    environment:
      # segment最后一次写入的时间 减去当前时间大于40s的话,会被打上删除标签
      KAFKA_LOG_RETENTION_MS: 40000
      # 10M分一次segment
      KAFKA_LOG_SEGMENT_BYTES: 10485760
      # 每60s将打上删除标签的segment删除
      KAFKA_LOG_RETENTION_CHECK_INTERVAL_MS: 60000
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值