我从“精通Kafka Streams和ksqlDB”这本书中碰到了以下两个短语,作者使用了两个术语,它们实际上是指“压缩主题”和“非压缩主题”
与“日志压缩”有关吗?
表可以看作是数据库的更新。在此日志视图中,仅保留每个密钥的当前状态(给定密钥的最新记录或某种聚合)。表格通常是根据紧凑主题构建的。
在数据库中,流可以看作是插入。每个不同的记录都保留在日志的此视图中。流通常是根据紧凑主题构建的。
答案 0 :(得分:1)
是的,log compaction
根据kafka文档
日志压缩可确保Kafka始终将单个主题分区的数据日志中的每个消息密钥至少保留最后一个已知值
https://kafka.apache.org/documentation/#compaction
如果在主题上启用了日志压缩,则Kafka会在分区日志中存在具有相同键的较新版本时删除所有旧记录。
有关日志压缩的更多详细说明,请参考-https://medium.com/swlh/introduction-to-topic-log-compaction-in-apache-kafka-3e4d4afd2262
答案 1 :(得分:1)
是的,这些术语是同义词。
答案 2 :(得分:0)
来自this article:
压缩主题背后的想法是不存在重复的键。仅保留消息密钥的最新值。
它主要用于以下场景,例如在应用程序崩溃或系统出现故障之前还原到以前的状态,或者在应用程序重新启动后重新加载缓存。
作为上述示例,kafka具有主题__consumer_offsets
,该主题可用于从崩溃或重新启动后读取的最后一条消息继续。模式注册表也经常用于确保生产者和消费者之间的兼容通信。在__schemas
主题中维护使用的架构。