Maa*_*mon 1 apache-kafka apache-kafka-streams ksqldb
我试图更好地了解如何设置集群来运行 Kafka-Stream 应用程序。我试图更好地了解所涉及的数据量。
在这方面,虽然我可以很快看到 KTable 需要状态存储,但我想知道从主题创建 Kstream 是否立即意味着将该主题的所有日志复制到状态存储中,显然是以我认为的仅附加方式。也就是说,特别是如果我们想公开查询流?
当数据是 Kstream 时,当数据在源主题中移动时,Kafka 是否会自动复制状态存储中的数据?如上所述,由于更新,这对于 Ktable 来说听起来很明显,但对于 Kstream 我只想确认会发生什么。
每当调用任何有状态操作或在窗口流时都会创建状态存储。
你是对的,KTable 需要一个状态存储。KTable 是变更日志流的抽象,其中每条记录代表一个更新。在内部,它是使用 RocksDB 实现的,其中所有更新的值都存储在状态存储和变更日志主题中。任何时候,状态存储都可以从变更日志主题重建。
虽然 KStream 有不同的概念,但它表示记录流上的抽象,具有仅附加格式的无界数据集。它在读取源主题时不会创建任何状态存储。
除非您想查看更新的变更日志,否则可以使用 KStream 而不是 KTable,因为它可以避免创建不需要的状态存储。与 KStream 相比,KTable 总是很昂贵。它还取决于您想要如何使用数据。
如果要公开流以供查询,则需要将流具体化到状态存储中。
| 归档时间: |
|
| 查看次数: |
943 次 |
| 最近记录: |