文档章节

Kafka配置消息保存时间的方法

Feng_Yu
 Feng_Yu
发布于 2016/03/11 10:59
字数 616
阅读 6274
收藏 6

配置参考

然后不废话,直接贴最终的关键配置:

# 想实现消息队列中保存2小时的消息,那么配置应该像这样:
log.roll.hours=1
log.retention.hours=2
log.segment.delete.delay.ms=0

Kafka日志存储机制分析

首先先贴一下对我帮助很大的一篇文档: https://www.zybuluo.com/jewes/note/64450 。这篇文章详细阐述了kafka的日志存储机制,建议深入阅读。

然后我简述一下。我们将对照kafka的broker配置简单说明一下: http://kafka.apache.org/documentation.html#brokerconfigs

Kafka的持久化策略更像redis —— 数据都在内存中,定期flush到硬盘上持久化存储,以保证重启的时候数据不丢。flush策略由log.flush.*这些properties控制。

每个topic可以存储于多个partition,每个partition在kafka的log目录下表现为topicname-id这样的文件夹,如mytopic-0。kafka队列中的内容会按照日志的形式持久化到硬盘上。每个日志文件称为“段”(segment)。

Kafka清理队列中过期message的方式实际上就是删除过期的segment,这种表现形式十分类似于日志滚动。因此,控制kafka队列中消息的保存时间的方式实际上就是日志文件定期分段,然后定期清理掉过期的段文件

与控制分段策略相关的几个properties:

log.roll.{hours,ms} —— 日志滚动的周期时间(小时,毫秒,log.roll.ms优先级更高),到达指定周期时强制生成一个新的segment。
log.segment.bytes —— 每个segment的最大容量上限(默认1GB)。到达指定容量时会强制生成一个新的segment。

与过期segment处理策略相关的几个properties:

cleanup.policy={compact,delete} —— 过期segment处理算法,默认delete。
log.retention.{hours,minutes,ms} —— 日志保留时间(小时,分钟,毫秒。优先级依次升高),超出保留时间的日志执行cleanup.policy定义的操作
log.segment.delete.delay.ms —— 删除日志文件前的保留一段时间。默认60000。
log.retention.check.interval.ms —— log checker的检测是否需要删除文件的周期。默认300000。

现在解释一下开头的配置段的含义——每小时滚动一个日志文件,日志删除(cleanup.policy默认为delete)时间为2小时,

© 著作权归作者所有

共有 人打赏支持
Feng_Yu
粉丝 159
博文 38
码字总数 45571
作品 0
西安
运维
私信 提问
加载中

评论(2)

Feng_Yu
Feng_Yu

引用来自“lichehuo”的评论

最新版本2.12-0.11.0如果配置log.segment.delete.delay.ms=0这个,会报错

多谢告知,我还没升级这个版本,到时候试一下
lichehuo
lichehuo
最新版本2.12-0.11.0如果配置log.segment.delete.delay.ms=0这个,会报错
kafka知识体系50-生产者编程实践

本文主要实际编程讲解kafka生产者相关内容,版本。 安装 集群安装过程请参考http://www.cnblogs.com/molyeo/p/7151949.html。 安装过程如下: 下载zookeeper安装包(zookeeper-3.4.6),解压到...

molyeo
2018/07/12
0
0
kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行“随机读写”的原因是什么? 3.kafka集群consumer和producer状态信息是如何保存的? 4.partitions设计的目的的根...

Zero零_度
2016/03/07
97
0
kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行“随机读写”的原因是什么? 3.kafka集群consumer和producer状态信息是如何保存的? 4.partitions设计的目的的根...

引鸩怼孑
2015/09/17
145
0
apache开源项目--kafka

关于kafka说明可以参考: http://kafka.apache.org/documentation.html kafka是一种高吞吐量的分布式发布订阅消息系统,她有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对...

文艺小青年
2017/03/31
0
0
Spring Boot集成Kafka

Spring Boot集成Kafka Spring Boot集成Kafka 前提介绍 Kafka Kafka安装与使用 Spring Boot集成 总结 参考资料 前提介绍 由于公司使用了微服务架构,很多业务拆成了很多小模块。 有个场景是这...

流水不腐小夏
2017/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

matlab-线性代数 根据二次型写矩阵

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   code clearclci=input(......

志成就
33分钟前
1
0
Linux常用命令(六)vi 命令

vi 命令 复制,光标所在的这一行 yy 复制,光标所在行开始向下的4行 4yy 粘贴 p 删除(剪切,用p粘贴),光标所在的这一行 dd 删除(剪切),光标所在行,向下2两行 2dd 从光标开始一直...

GritTan
53分钟前
3
0
nginx 找不到pid文件原因及解决办法

2.var/run/nginx.pid文件 首先 var/run这个目录是干嘛用的? 此文件夹包含描述系统启动以来系统信息的数据。此文件夹下的文件必须在启动过程初期清除(删除或归零)。程序可以在/var/run下有...

李佳顺
今天
4
0
【scala】2.控制结构和函数

简介 在Java或者C++中,我们把表达式和语句看做两种不同的东西。表达式有值,而语句执行动作。 在Scala中,几乎所有构造出来的语法结构都是有值的。这个特性使得程序更加的精简,也更易读。 ...

Areya
今天
5
0
Java中的并发工具类(CountDownLatch、CyclicBarrie、Exchanger)

在JDK的并发包里提供了很多有意思的并发工具类。CountDownLatch、CyclicBarrier和Semaphore 工具类提供了一种并发流程控制的手段,Exchanger 工具类则提供了在线程间交换数据的一种手段。 1....

孟飞阳
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部