Kafka消息timestamp含义、单位及Confluent Cloud时钟偏差问题咨询
Kafka 消息 timestamp 字段常见问题解答
问题1:timestamp字段的时间单位是epoch毫秒还是秒?
Kafka消息的timestamp字段默认单位为Unix纪元(1970-01-01 00:00:00 UTC)开始计算的毫秒数,不存在秒级的默认配置。
问题2:timestamp代表的是消息抵达Kafka的时间、生产者发送时间还是消费时间?
这个值的具体含义由集群/Topic的配置决定,分为两类:
- 当配置为
CreateTime时:值为生产者客户端生成消息时的本地时间,也就是消息在生产者侧的创建/发送时间 - 当配置为
LogAppendTime时:值为Kafka Broker收到消息、正式写入分区日志时的时间,也就是消息抵达Kafka集群的时间
注意:该字段绝对不会存储消息被消费的时间,消费时间仅会由消费端本地记录,不会回写到消息元数据中。
问题3:如何查询本地VM与Confluent Cloud中Kafka集群的时钟差值?
可以通过以下步骤快速计算:
- 提前在Confluent Cloud中创建一个临时测试Topic,将该Topic的
message.timestamp.type参数设置为LogAppendTime,确保timestamp由Broker侧生成 - 在你的本地VM上生产一条测试消息到该Topic,同时记录生产消息瞬间本地VM的时间戳,记为
local_send_time(单位为毫秒) - 立即消费该测试消息,读取消息自带的timestamp值,记为
broker_append_time - 两者的差值
broker_append_time - local_send_time就是近似的时钟差,建议多次测试取平均值,排除网络波动带来的误差
内容的提问来源于stack exchange,提问作者Stav Alfi
相关产品推荐
相关产品推荐

