【问题标题】:Kafka - uncompacted topics Vs compacted topicsKafka - 未压缩主题与压缩主题
【发布时间】:2020-07-21 07:54:33
【问题描述】:

我从“Mastering Kafka Streams and ksqlDB”一书中看到以下两个短语,作者使用了两个术语,它们的真正含义是“压缩主题”和“未压缩主题”

他们对“日志压缩”有什么意见吗?

表可以被认为是对数据库的更新。在此日志视图中,仅保留每个键的当前状态(给定键的最新记录或某种聚合)。表格通常由压缩主题构建。

流可以被认为是数据库用语中的插入。每个不同的记录都保留在此日志视图中。流通常由未压缩的主题构建。

【问题讨论】:

    标签: apache-kafka confluent-platform


    【解决方案1】:

    是的,根据 kafka 文档,log compaction

    日志压缩确保 Kafka 将始终为单个主题分区的数据日志中的每个消息键至少保留最后一个已知值

    https://kafka.apache.org/documentation/#compaction

    如果在主题上启用了日志压缩,当分区日志中存在具有相同键的新版本时,Kafka 会删除所有旧记录。

    有关日志压缩的更详细说明,请参阅 - https://medium.com/swlh/introduction-to-topic-log-compaction-in-apache-kafka-3e4d4afd2262

    【讨论】:

    • 谢谢。一个后续问题 - 在没有明确提示主题被压缩或未压缩的情况下,“流”是否会相应地将未压缩事件流式传输到 KStream / 压缩事件到 KTable ?
    【解决方案2】:

    是的,这些术语是同义词。

    参考:Log Compaction

    【讨论】:

    • 谢谢。那么,KTables 将与压缩主题一起使用,而 Kstreams 与未压缩主题一起使用?我们是否需要明确地告诉“Streams”或流处理它以基于使用 KStreams / KTables 的抽象来压缩或未压缩流式传输它
    【解决方案3】:

    来自this article

    压缩主题背后的理念是不存在重复的键。仅维护消息键的最新值。

    主要用于应用崩溃或系统故障前恢复到之前的状态,或者应用重启后重新加载缓存等场景。

    作为上述 kafka 的示例,主题为 __consumer_offsets,可用于从崩溃或重启后读取的最后一条消息继续。模式注册表也经常用于确保生产者和消费者之间的兼容通信。使用的模式在__schemas 主题中维护。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      • 2019-09-20
      • 2020-12-02
      • 1970-01-01
      相关资源
      最近更新 更多