我在《掌握Kafka Streams and ksqlDB》一书中遇到了以下两个短语,作者使用了两个术语,它们的真正含义是“压缩主题”和“未压缩主题”
他们对“日志压缩”有什么看法吗?
表可以被认为是对数据库的更新。在日志的这种视图中,只保留每个键的当前状态(给定键的最新记录或某种聚合)。表通常是从压缩的主题构建的。
用数据库的说法,流可以被视为插入。每个不同的记录都保留在此日志视图中。流通常是从未压缩的主题构建的。
从本文中:
压缩主题背后的思想是不存在重复键。只保留消息键的最新值。
它主要用于应用程序崩溃或系统故障前恢复到以前的状态,或应用程序重启后重新加载缓存时的场景。
作为上述kafka的一个示例,主题__consumer_offsets
可用于从崩溃或重新启动后读取的最后一条消息继续。模式注册表也经常用于确保生产者和消费者之间的兼容通信。使用的模式维护在__schemas
主题中。
是的,这些术语是同义词。
参考:原木压实
是的,根据kafka docs,日志压缩
日志压缩确保Kafka将始终至少保留单个主题分区的数据日志中每个消息键的最后一个已知值
https://kafka.apache.org/documentation/#compaction
如果在主题上启用了日志压缩,则当分区日志中存在具有相同密钥的更新版本时,Kafka会删除任何旧记录。
有关原木压实的更多详细说明,请参阅-https://medium.com/swlh/introduction-to-topic-log-compaction-in-apache-kafka-3e4d4afd2262
只是关于Kafka的后续问题-未压缩主题与压缩主题 正如那里所说, 用数据库的说法,流可以被视为插入。每个不同的记录都保留在此日志视图中。流通常是从未压缩的主题构建的。 作为最佳实践,关于未压缩主题的语义,是否应禁用要在日志启用程序中取消压缩的主题,以便不会发生压缩(清理),其属性如下: 日志清洁工enable=false或log。清洁工启用=true(默认),清除策略为“delete”(默认)
我收到了一个数据库更改流,这些更改最终形成了一个压缩的主题。流基本上是键/值对,并且键空间很大(~4 GB)。 这个主题由一个kafka流进程使用,该进程将数据存储在RockDB中(每个消费者/碎片单独使用)。处理器做两件不同的事情: 将数据连接到另一个流中。 检查来自主题的邮件是新密钥还是对现有密钥的更新。如果是更新,则将旧的键/值和新的键/值对发送到不同的主题(更新很少)。 null
我使用的是Debezium,它制作了Kafka Connect。Kafka Connect公开了几个需要创建的主题: OFFSET_STORAGE_TOPIC运行Kafka Connect服务时需要此环境变量。将此设置为Kafka主题的名称,其中Kafka Connect服务组存储连接器偏移。主题应该有许多分区,高度重复(例如,3倍或更多),并且应该为压缩进行配置。 STATUS_STORAGE_
我想问你们一些关于阿帕奇·Kafka和压缩主题的问题。我们想提供一些Kafka压缩主题的PII数据。我们想通过墓碑删除这个主题的数据。目前有多个问题需要验证我们的假设: 有没有其他公司像KIP-354那样通过压缩主题和墓碑生成来满足Kafka的gdpr要求(忘记的权利)https://cwiki.apache.org/confluence/display/KAFKA/KIP-354:添加最大日志压
我正试图在我的网站上添加三个视频。我在用JW-Player。它可以工作,但一个简单的10秒视频(3MB)需要一分钟以上的时间来加载。我以为这是我的主机服务的问题,但我已经尝试上传另一个类似格式的视频建立在互联网上,比我的长(22MB),它加载在几秒钟内! 我正在用Avidemux将一个。AVI(MPEG4,9280 Kbps,640x480,25 fps,273 MB,4分钟,无音频)视频剪切和转
我在一个输入主题上构建KTable,并且在两个Kafka Stream应用程序实例上加入KStream。 KTable的输入主题已经是一个日志压缩主题。因此,当我的一个应用程序实例关闭时,通过读取input log compacted主题,另一个实例状态存储似乎会用整个状态刷新。 所以不需要为我的KTable存储启用日志记录(更改日志)? 我的源输入日志压缩主题可能有数百万条记录,所以如果我在KT