五.Kafka消息的时间戳
来源:互联网 发布:大数据脱敏 编辑:程序博客网 时间:2024/06/04 13:28
kafka在消息中增加了一个时间戳字段和时间戳类型。目前支持的时间戳类型有两种: CreateTime 和 LogAppendTime 前者表示producer创建这条消息的时间;后者表示broker接收到这条消息的时间(严格来说,是leader broker将这条消息写入到log的时间)
为什么要加入时间戳?
引入时间戳主要解决3个问题:
**日志保存(log retention)策略:**Kafka目前会定期删除过期日志(log.retention.hours,默认是7天)。判断的依据就是比较日志段文件(log segment file)的最新修改时间(last modification time)。倘若最近一次修改发生于7天前,那么就会视该日志段文件为过期日志,执行清除操作。但如果topic的某个分区曾经发生过分区副本的重分配(replica reassigment),那么就有可能会在一个新的broker上创建日志段文件,并把该文件的最新修改时间设置为最新时间,这样设定的清除策略就无法执行了,尽管该日志段中的数据其实已经满足可以被清除的条件了。
日志切分(log rolling)策略:与日志保存是一样的道理。当前日志段文件会根据规则对当前日志进行切分——即,创建一个新的日志段文件,并设置其为当前激活(active)日志段。其中有一条规则就是基于时间的(log.roll.hours,默认是7天),即当前日志段文件的最新一次修改发生于7天前的话,就创建一个新的日志段文件,并设置为active日志段。所以,它也有同样的问题,即最近修改时间不是固定的,一旦发生分区副本重分配,该值就会发生变更,导致日志无法执行切分。(注意:log.retention.hours及其家族与log.rolling.hours及其家族不会冲突的,因为Kafka不会清除当前激活日志段文件)
流式处理(Kafka streaming):流式处理中需要用到消息的时间戳
消息格式的变化
1 增加了timestamp字段,表示时间戳
2 增加了timestamp类型字段,保存在attribute属性低位的第四个比特上,0表示CreateTime;1表示LogAppendTime(低位前三个比特保存消息压缩类型)
客户端消息格式的变化
ProducerRecord:增加了timestamp字段,允许producer指定消息的时间戳,如果不指定的话使用producer客户端的当前时间
ConsumerRecord:增加了timestamp字段,允许消费消息时获取到消息的时间戳
ProducerResponse: 增加了timestamp字段,如果是CreateTime返回-1;如果是LogAppendTime,返回写入该条消息时broker的本地时间
如何使用时间戳?
1.Kafka broker config提供了一个参数:log.message.timestamp.type来统一指定集群中的所有topic使用哪种时间戳类型。
2.创建topic时覆盖掉全局配置:
bin/kafka-topics.sh –zookeeper localhost:2181 –create –topic test –partitions 1 –replication-factor 1 –config message.timestamp.type=LogAppendTime
3.producer在创建ProducerRecord时可以指定时间戳:
record = new ProducerRecord
- 五.Kafka消息的时间戳
- Kafka消息时间戳(kafka message timestamp)
- Kafka学习7_使用log.retention.hours改变消息端的消息保存时间
- Kafka使用log.retention.hours改变消息端的消息保存时间
- 基于Kafka时间粒度消息回溯设计方案
- 分布式的消息系统Kafka
- 读取Kafka集群的消息
- kafka消息队列的安装
- Kafka的消息可靠传递
- Spring data kafka操作kafka消息的发送和订阅
- Kafka详解五、Kafka Consumer的底层API- SimpleConsumer
- Kafka详解五、Kafka Consumer的底层API- SimpleConsumer
- Kafka学习(五):Kafka的消费编程模型
- kafka消息demo的java实现
- kafka--高性能的分布式消息系统
- 使用spring集成的kafka收发消息
- 消息队列kafka的学习与使用
- 强大的分布式消息系统kafka
- 数据结构之线性表
- java实战,一个记事本
- 笔记-Python基础教程(第二版)第二章
- find命令
- Linux基础——创建和删除目录
- 五.Kafka消息的时间戳
- Cookie和Session学习
- OLAP的12条准则
- application loader 跨平台版本application uploader使用经验
- IOS中正则表达式判断输入的内容同时包含数字和字母
- grep
- lambda表达式与异常
- (1)spring boot环境搭建
- Java字符串类型String、StringBuilder、StringBuffer的区别