代码之家  ›  专栏  ›  技术社区  ›  xmar

卡夫卡流:有没有可能对州商店有“压缩,删除”的政策?

  •  3
  • xmar  · 技术社区  · 7 年前

    默认情况下,Kafka流状态存储是“压缩”的。是否可以在状态存储中使用保留策略设置“压缩,删除”?

    2 回复  |  直到 7 年前
        1
  •  4
  •   Matthias J. Sax    7 年前

    是的,可以使用保留和压缩配置主题,kafka streams将此设置用于窗口化 KTable S.

    如果确实要设置此选项,可以在创建相应的changelog主题配置后手动更新它。

    但是,为变更日志主题设置主题保留时间只会从主题中删除数据。数据是 未删除 在当地的商店里。状态存储不提供ttl,rocksdbs ttl设置无法启用(出于我们希望最终解决的技术原因)。

    如果要干净地删除数据,则应使用将从存储中删除数据的逻辑删除消息以及更改日志主题(而不是使用保留时间)。

        2
  •  -1
  •   Pavel Pavelsky    7 年前

    如果使用默认的rocksdbstore,则可以选择将compressionstyle设置为fifo:

    fifo压缩方式是最简单的压缩策略。它适合以非常低的开销保存事件日志数据(例如查询日志)。它定期删除旧数据,因此基本上是ttl压缩样式。

    然后使用TTL:

    为此引入了一个新选项compaction_options_fifo.ttl,用于删除ttl已过期的sst文件。此功能允许用户根据时间而不是总是根据大小删除文件,例如,删除一周或一个月以上的所有SST文件。

    RocksDB FIFO doc

    要实际设置fifo,必须实现rocksdb config setter并将其设置为配置属性:rocksdb.config.setter

    推荐文章