我在《Mastering Kafka Streams and ksqlDB》一书中遇到了以下两个短语,作者使用了两个术语,它们的真正含义是什么“压缩主题”和“非压缩主题”
他们对“日志压缩”有什么了解吗?
表可以被认为是对数据库的更新。在此日志视图中,仅保留每个键的当前状态(给定键的最新记录或某种聚合)。表格通常由压缩主题构建。
流可以被认为是数据库用语中的插入。每个不同的记录都保留在日志的此视图中。流通常是从未压缩的主题构建的。
是的,
log compaction
根据kafka文档
日志压缩确保 Kafka 始终至少保留单个主题分区的数据日志中每个消息键的最后一个已知值
https://kafka.apache.org/documentation/#compaction
如果在主题上启用日志压缩,当分区日志中存在具有相同键的较新版本时,Kafka(异步)会删除任何旧记录。
有关日志压缩的更多详细说明,请参阅 - https://medium.com/swlh/introduction-to-topic-log-compaction-in-apache-kafka-3e4d4afd2262
来自这篇文章:
压缩主题背后的想法是不存在重复的键。仅保留消息键的最新值。
主要用于恢复到应用程序崩溃或系统故障之前的状态,或者应用程序重新启动后重新加载缓存等场景。
作为上述 kafka 的示例,其主题为
__consumer_offsets
,可用于从崩溃或重启后读取的最后一条消息继续。模式注册表也经常用于确保生产者和消费者之间的兼容通信。使用的模式维护在 __schemas
主题中。
是的,这些术语是同义词。
参考:日志压缩