Kafka数据清理

article/2025/9/6 1:06:30

目录

  • kafka数据清理
    • 日志删除(Log Deletion)
      • 1. 基于时间的保留策略
      • 2. 基于日志大小的保留策略
      • 3. 基于日志起始偏移量保留策略
    • 日志压缩(Log Compaction)

原文地址:https://program-park.github.io/2021/09/18/kafka_11/

kafka数据清理

Kafka 的消息存储在磁盘中,为了控制磁盘占用空间,Kafka 需要不断地对过去的一些消息进行清理工作。Kafka 的每个分区都有很多的日志文件,这样也是为了方便进行日志的清理。在 Kafka 中,提供两种日志清理方式:

  • 日志删除(Log Deletion):按照指定的策略直接删除不符合条件的日志。
  • 日志压缩(Log Compaction):按照消息的 key 进行整合,有相同 key 的但有不同 value 值,只保留最后一个版本。

在Kafka的broker或topic配置中:

配置项配置值说明
log.cleaner.enabletrue(默认)开启自动清理日志功能
log.cleanup.policydelete(默认)删除日志
log.cleanup.policycompaction压缩日志
log.cleanup.policydelete,compact同时支持删除、压缩

日志删除是以段(segment日志)为单位来进行定期清理的。

日志删除(Log Deletion)

Kafka 日志管理器中会有一个专门的日志删除任务来定期检测和删除不符合保留条件的日志分段文件,这个周期可以通过 broker 端参数log.retention.check.interval.ms来配置,默认值为 300,000,即 5 分钟。当前日志分段的保留策略有 3 种:

  1. 基于时间的保留策略
  2. 基于日志大小的保留策略
  3. 基于日志起始偏移量的保留策略

在这里插入图片描述

1. 基于时间的保留策略

以下三种配置可以指定如果Kafka中的消息超过指定的阈值,就会将日志进行自动清理:

  • log.retention.hours
  • log.retention.minutes
  • log.retention.ms

其中,优先级为log.retention.ms > log.retention.minutes > log.retention.hours。默认情况,在broker中,配置如下:log.retention.hours=168,也就是,默认日志的保留时间为 168 小时,相当于保留 7 天。

删除日志分段时:

  1. 从日志文件对象中所维护日志分段的跳跃表中移除待删除的日志分段,以保证没有线程对这些日志分段进行读取操作
  2. 将日志分段文件添加上“.deleted”的后缀(也包括日志分段对应的索引文件)
  3. Kafka 的后台定时任务会定期删除这些“.deleted”为后缀的文件,这个任务的延迟执行时间可以通过file.delete.delay.ms参数来设置,默认值为 60000,即 1 分钟。

2. 基于日志大小的保留策略

日志删除任务会检查当前日志的大小是否超过设定的阈值来寻找可删除的日志分段的文件集合。可以通过 broker 端参数log.retention.bytes来配置,默认值为 -1,表示无穷大。如果超过该大小,会自动将超出部分删除。

注意:log.retention.bytes配置的是日志文件的总大小,而不是单个的日志分段的大小,一个日志文件包含多个日志分段。

3. 基于日志起始偏移量保留策略

每个 segment 日志都有它的起始偏移量,如果起始偏移量小于 logStartOffset,那么这些日志文件将会标记为删除。

日志压缩(Log Compaction)

Log Compaction 是默认的日志删除之外的清理过时数据的方式。它会将相同的 key 对应的数据只保留一个版本。
在这里插入图片描述

  • Log Compaction 执行后,offset 将不再连续,但依然可以查询 Segment
  • Log Compaction 执行前后,日志分段中的每条消息偏移量保持不变。Log Compaction 会生成一个新的 Segment 文件
  • Log Compaction 是针对 key 的,在使用的时候注意每个消息的 key 不为空
  • 基于 Log Compaction 可以保留 key 的最新更新,可以基于 Log Compaction 来恢复消费者的最新状态

http://chatgpt.dhexx.cn/article/5QYirnsL.shtml

相关文章

mysql数据库要定期清除吗_数据库mysql定时清除数据

数据库mysql定时清除数据 数据库mysql定时清除数据 https://www.jiangweishan.com/article/2384238490809808.html 作者:andy0012019.11.22来源:Web前端之家浏览:2081评论:0 关键词:jsmysql 一个项目如果规划不合理,每…

SDN是什么,与传统分布式网络有什么区别

传统的的分布式网络 分布式网络也叫网状网络,它是由分布在不同地点的计算机系统互连而成,网中无中心节点。通信子网是封闭式结构,通信控制功能分布在各节点上。 分布式网络的特点是:可靠性高;网内节点共享资源容易&am…

软件定义网络(SDN)

SDN基本概述 参考文章:SDN基本概述、解读SDN的东西、南北向接口 传统网络数据控制与转发 传统网络是分布式控制的架构,每台设备都包含独立的控制平面,数据平面。 传统网络是分布式控制的架构: 这里的分布式控制指在传统IP网络…

sdn通俗介绍

拼客学院服务号 前言 SDN(Software Defined Network)即软件定义网络,是一种网络设计理念,或者一种推倒重来的设计思想。只要网络硬件可以集中式软件管理,可编程化,控制转发层面分开,则可以认为这…

SDN — Google B4 SDN WAN 网络架构

目录 文章目录 目录Google B4 SDN WAN 网络B4 网络架构物理设备层局部网络控制层全局控制层Google B4 SDN WAN 网络 Google 的 WAN 有 2 张网络(Two Backbones): B2(Internet-facing WAN,I-Scale Network):数据中心互联 Internet(POP)的网络,用于面向 Internet 用户…

SDN基础理解

1. 何为SDN 1) 为什么需要一个全新的网络架构,比如SDN? 在传统的架构中,交换机和路由器不得不在操作6000种分布式协议的控制下实施整个网络的智能。这就意味着,即使只有一个网元增加了一种新的协议,也需要所有其他网元…

SDN概述

SDN概述1 SDN是什么 ONRC是 SDN创始人斯坦福大学教授Nick McKeown和加州大学伯克利分校教授 Scott Shenker,以 Larry Peterson教授 共同创建的研究架构。ONRC对SDN的定义是:“SDN是一种逻辑集中控制的新网络架构,其关键属性包括&#xff1a…

SDN网络架构简述

SDN的特点之一就是控制平面与数据平面分离,其主张通过集中式的控制器平台实现网络的控制。在SDN架构中,控制平面是逻辑集中的,通过某种协议将控制信息下发至底层的数据平面去执行。所以,控制平面被称为SDN的大脑,指挥整…

什么是SDN

为什么要推出SDN? SDN的起源 • SDN ( Software Defined Networking )即软件定义网络。是由斯坦福大学Clean Slate研究组提出的一种新型网络创新架构。 真核心理念通过将网络设备控制平面与数据平面分离,从而实现了网络控制平面的集中 控制&…

SDN概述,SDN是什么?

软件定义网络(Software Defined Network, SDN)在InfoWorld于2011年11月公布的将影响未来10年的十项新技术中排名第二。2012年7月,SDN代表厂商Nicira被 VMware以12.6亿美元收购,随后Google宣布成功在其全球10个IDC网络中部署SDN,这促使SDN引起…

SDN网络概述

SDN是一种存在逻辑上集中控制的新型网络结构,其主要特征是数据平面与控制平面分离。数据平面与控制平面之间通过标准的开放接口OpenFlow实现信息交互。 一、SDN的主要内容 SDN在数据平面、控制平面、应用平面的研究内容主要涉及以下方面: 1&#xff0…

SDN基本概念

文章目录 SDN基本概念SDN的概念与体系结构背景传统网络数据控制与转发传统网络结构体系传统网络缺点 SDN概述SDN网络体系架构SDN架构下的接口SDN基本原理OpenFlow的思想和功能OpenFLow网络交换模型 SDN价值网络业务快速创新简化网络网络设备白牌化业务自动化网络路径流量优化 传…

SDN技术概述

1.SDN架构定义 软件定义网络(Software Defined Networking,SDN)是一种数据平面与控制分离、软件可编程的新型网络体系架构,开放网络基金会(Open Network Foundation,ONF)作为目前SDN最重…

SDN基本概述

SDN的概念与体系结构 传统网络数据控制与转发: 传统网络是分布式控制的架构,每台设备都包含独立的控制平面,数据平面。 传统网络是分布式控制的架构: 这里的分布式控制指在传统IP网络中,用于协议计算的控制平面和报…

【网络】初识SDN架构

什么是SDN 1.定义 (1)ONRC: SDN 是一种逻辑集中控制的新网络架构,其关键属性包括:数据平面和控制平面分离;控制平面和数据平面之间有统一的开放接口OpenFlow。 > 强调数控分离和集中控制等表现形式 (2…

(一)SDN基本架构

1.SDN架构 SDN是一种数据控制分离、软件可编程的新型网络体系架构,其基本架构如 下图1所示。SDN采用了集中式的控制平面和分布式的转发平面,两个平面相互分离,控制平面利用控制——转发通信接口对转发平面上的网络设备进行集中式控制。 图1…

SDN介绍(什么是SDN)

SDN介绍 一. 什么是SDN?二.SDN解决什么问题?三.传统网络概念和结构体系传统网络数据控制与转发:传统网络架构: 四.SDN概述SDN(Software Defined Network)软件定义网络。…

SDN基本架构

SDN采用了如图1-7所示的基本架构,集中式的控制平面和分布式的转发平面相互分离,控制平面利用控制器、转发通信接口对转发平面上的网络设备进行集中式的管理。 图1-1 SDN架构​​​​ ① 基础设施层(Infrastructure Layer)&#x…

SDN(软件定义网络)详解

目录 一 传统网络体系结构1 传统网络是分布式控制的架构2 传统网络结构体系3 传统网络局限性 二 SDN概述1 SDN的三个主要特征2 SDN控制器既不是网管,也不是规划工具 三 SDN网络体系架构1 SDN网络体系架构的三层模型:2 SDN架构下的接口 三 SDN基本工作原理…

初步剖析SDN架构

第一章 概述 1.1 SDN概念 SDN(Software Defined Network)——软件定义网络。为了摆脱传统网络对于网络硬件的依赖,方便对网络进行调整、改变和升级,SDN应运而生。 SDN是一种将网络控制功能与转发功能分离、实现控制可编程的新兴网络架构。这种架构将从…