kafka消息过期时间设置(全局和特定topic)

文章目录

          • 一、kafka 全局消息过期时间设置
            • 1. 配置文件夹
            • 2. 修改配置
            • 3. 重启配置生效
          • 二、针对特定topic设置过期时间
            • 2.1. 配置文件夹
            • 2.2. 执行设置命令
          • 三、kafka过期消息删除过程

一、kafka 全局消息过期时间设置
1. 配置文件夹

进入kafka配置文件夹

/app/kafka_2.12-2.2.0/config

默认的是在server.properties 文件里面
在这里插入图片描述

2. 修改配置

需要修改和配置项如下:

log.retention.hours=168 (配置该参数即可)
log.cleanup.policy=delete (默认,可不配置)

在这里插入图片描述

我这里设置的是24小时也就是一天

3. 重启配置生效

修改配置后重启kafka服务生效,kafka默认的消息过期时间为168h(7天)

该种设置消息过期时间的优点是可以对所有topic全部生效,缺点是需要重启kafka服务,造成服务短暂的不可用!

二、针对特定topic设置过期时间

实际上,可以不停服针对kafka中数据量较大的topic可以单独设置过期时间,不受全局过期时间的限制,而且不需要重启kafka

下面以数据较多的 mytopic为例, 全局默认消息过期时间为7天,现在将其调整为1天

2.1. 配置文件夹
cd /app/kafka_2.12-2.2.0/config
2.2. 执行设置命令

前提:已设置kafka环境变量

./kafka-configs.sh --zookeeper 192.168.0.101:2181 --alter --entity-name mytopic --entity-type topics --add-config retention.ms=86400000

时间设置一天 86400000ms = 1天

三、kafka过期消息删除过程

kafka消息首先由用户设定一个或多个partition,每个partition中kafka会根据消息量来逐步建立多个segment存储消息,每个segment的大小由配置项进行设定,比如这里

log.segment.bytes=1073741824 【1GB】

kafka至少会保留1个工作segment保存消息。消息量超过单个文件存储大小就会新建segment,比如消息量为2.6GB, 就会建立3个segment。kafka会定时扫描非工segment,将该文件时间和设置的topic过期时间进行对比,如果发现过期就会将该segment文件(具体包括一个log文件和两个index文件)打上.deleted 的标记,如下所示:

-rw-r--r-- 1 root root 1073740353 Nov 13 03:02 00000000000108550131.log.deleted
-rw-r--r-- 1 root root 526304 Nov 13 03:02 00000000000108550131.index.deleted
-rw-r--r-- 1 root root 697704 Nov 13 03:02 00000000000108550131.timeindex.deleted

最后kafka中会有专门的删除日志定时任务过来扫描,发现.deleted文件就会将其从磁盘上删除,释放磁盘空间,至此kafka过期消息删除完成。

可以看出,kafka删除消息是以segment为维度的,而不是以具体的一条条消息为维度。一个segment包含了一段时期的全部消息并存储在一个文件中,比如上文提到的 00000000000108550131.log

删除时是一次性把这个过期的文件包含所有消息全部删除,效率非常高。可以设想如果是先判断一条条的消息时间是否过期再一条条的执行删除,将十分影响kafka的性能和效率,频繁擦除磁盘,对硬盘性能也有较大影响!

所以如果消息量不多没有超过一个segment的存储容量,由于kafka至少要保留一个segment用于存取消息,所以也不会去删除里面过期的消息。实际上,也存在着设置了消息7天过期,但是kafka里面仍存在着10天前的数据,这就是由kafka的删除特性决定的。

我们删除过期消息的目的是为了释放磁盘空间,既然消息很少没有突破一个segment的容量,那么即使多保留几天的旧消息又何妨,又不怎么占用磁盘空间。然而这种删除策略的设计换来的却是大消息量的topic整块消息删除的高性能和高效率!
不得不说这种设计理念非常先进

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeVOpS 实战:Kubernetes 微服务监控体系

来源 | 无敌码农责编 | 寇雪芹头图 | 下载于视觉中国监控系统是运维体系乃至整个软件产品生命周期中最重要的一环,完善的监控可以帮助我们事前及时发现故障,事后快速追查定位问题。而在以微服务为代表的云原生架构体系中,系统分为多个层次&am…

面对复杂业务,if-else coder 如何升级?

作者 | 张建飞 阿里巴巴高级技术专家 导读:针对业务在不同场景下的差异,我们常常会习惯性地使用 if-else 来实现不同的业务逻辑,久而久之代码越来越难以维护。那么如何消除这些 if-else?面对复杂业务应如何思考和分析&#xff1f…

adobe怎么统计字数_SEO技能:怎么写站内文章对网站排名更好?

每个做seo的人都知道真相,而且不会累积千里。意思是要注意网站上每篇文章的写作,因为网站的流量和权重一般需要所有网页的共同支持。因此,如何撰写有利于网站优化的文章尤为重要。虚拟社群提醒大家,细节通常被认为是成功的。通过写…

网站都变成灰色,一行代码就搞定了!

文章目录一、主流网站主题分析1. 腾讯课堂2. bilibili3. CSDN二、默认样式2.1. 腾讯课堂2.2. bilibili2.3. CSDN三、 案例demo一、主流网站主题分析 实现原理:在html标签上的class添加一个全局过滤器样式即可 1. 腾讯课堂 在html标签添加一个class,给cl…

应用架构之道:分离业务逻辑和技术细节

简介: “让上帝的归上帝,凯撒的归凯撒。” 作者 | 张建飞 阿里巴巴高级技术专家 架构 什么是架构? 关于架构这个概念很难给出一个明确的定义,也没有一个标准的定义。 硬是要给一个概述,我认为架构就是对系统中的实…

Java面试高频题:Spring Boot+JVM+Nacos高并发+高可用已撸完​

2021都说工作不好找,也是对开发人员的要求变高。前段时间自己有整理了一些Java后端开发面试常问的高频考点问题做成一份PDF文档(1000道高频题),同时也整理一些图文解析及笔记,今天在这免费分享给大家,希望大…

IEEE EDGE 2020论文:Astraea — 以优雅的方式在边缘部署AI服务

简介: 近日,阿里云边缘计算团队博士后付哲的论文《Astraea: Deploy AI Services at the Edge in Elegant Ways》入选2020年IEEE边缘计算国际会议(IEEE International Conference on Edge Computing),并在大会上进行了宣…

Mendix:云原生应用是软件的未来

作者 | Mendix投稿 编辑 | 宋 慧 头图 | 付费下载于东方IC 如今,在构建新的应用时,很多公司都会想到 “云端优先”。但随着科技的发展,更好的方法是考虑 “云原生”应用。 云原生应用利用了诞生于云端的平台和流程的优势。它们具有高可扩展…

如何生成 Flink 作业的交互式火焰图?

简介: Flink 是目前最流行的大数据及流式计算框架之一,用户可以使用 Java/Scala/Python 的 DataStream 接口或者标准 SQL 语言来快速实现一个分布式高可用的流式应用,通过内部的 Java JIT、off-heap 内存管理等技术优化性能,并且有…

xxl-job分布式调度参数传递和调度⽇志配置

文章目录1. 参数传递2. 调度⽇志1. 参数传递 UI界⾯参数传递 String jobParam XxlJobHelper.getJobParam();2. 调度⽇志 执⾏⽇志打印 需要通过 “XxlJobHelper.log” 打印执⾏⽇志 执⾏结果 默认任务结果为 “成功” 状态,不需要主动设置 ⾃主设置任务结果&…

蚂蚁王旭:开源协作如何提升业界的安全?

简介: 开发者、组织、业界机构的共同努力,让开源项目和社区,乃至整个世界变得更加安全。 在前不久的上海外滩大会上,蚂蚁资深技术专家、Kata Containers创始人王旭向参会者分享了开源、开放协作与软件安全可信的话题,本…

顶级技术大咖,揭秘实时音视频开发的超级风口

2021年初因为Elon Musk“带货”而走红的音频社交App Clubhouse,又以肉眼可见的速度跌落神坛,下载量从2月的960 万/月跌至4月的92万/月。不过在5月,Clubhouse终于推出了安卓版,并表示接下来也会对所有用户开放。 另一边&#xff0c…

如何让一套代码适配所有iOS设备尺寸?

简介: 随着移动互联网设备和技术的发展,各种移动设备屏幕尺寸层出不穷,折叠屏、分屏、悬浮窗等等,面对越来越多样的屏幕,如果为每种尺寸单独进行适配,不仅费时费力,还会增加端侧代码的开发与维护…

1024,阿里云惊喜 “加油包” 让你 “猿” 力觉醒!

1024程序员节是广大程序员共同的节日,程序员就像是一个个1024以最核心、踏实、低调的功能模块,搭建起科技世界。 现如今,技术更新迭代越来越快,人类生活愈发便捷化、智能化。这背后自然离不开一批批程序员的默默耕耘与辛苦付出。…

​赠书 | 云游戏搭上 5G 快车,华为、腾讯争相布局

作者 | 林瑞杰 冯林 温向东 陈乐 等来源 | 大数据DT头图 | 下载于ICphoto伴随 5G 网络的部署和商用进程,云游戏作为 5G 技术在消费互联网领域的重要应用,受到了资本和社会的广泛关注。本文介绍了云游戏的基本概念和定义、云游戏的典型特征和分类、云游戏…

数据湖有新解!Apache Hudi 与 Apache Flink 集成

简介: 纵观大数据领域成熟、活跃、有生命力的框架,无一不是设计优雅,能与其他框架相互融合,彼此借力,各专所长。 作者:王祥虎(Apache Hudi 社区) Apache Hudi 是由 Uber 开发并开源…

显微镜下的大明内容_平凡故事展现炮火下人性光辉,李少红《解放·终局营救》创作全解...

【巨匠】至心至情,匠心独运尝试过大量的题材与类型后,在建国70周年的历史性时刻,李少红老师终于执导了自己的第一部战争电影《解放终局营救》。 有人说,这只是李少红题材创新的一个新方向;有人说,李少红是想…

MQTT在游戏运营发行中的实践

前言 在游戏生态中,主要包含游戏的研发方以及运营发行方。一款游戏的运行,分为研发和运营两个阶段。研发的主体有个人、独立工作室、游戏研发公司等; 游戏的研发主体专注于游戏内容的研发,对游戏的发行及运营往往在人力、财力上…

2021 火爆技术人朋友圈的实时音视频 RTC 你 Pick 了嘛?

5月27日20点,第 13 期「大咖来了」! CSDN 副总裁于邦旭、融云 CTO 任杰、即构科技副总裁刘莉,多方视角探讨 RTC 超级风口与机遇,还有众多精美礼品等你拿! 立即戳:https://live.csdn.net/room/csdnnews/cn…

SAE 的极致应用部署效率

简介: SAE 在应用创建、部署、重启过程中的效率优化。 作者 | 文俊 阿里巴巴云原生团队 本文整理自《Serverless 技术公开课》 作为 Serverless 平台,SAE 提供了应用全托管的服务,充分利用了云原生的技术红利,以容器作为应用载体…