gpt4 book ai didi

java - KTables如何获得它们的初始值?

转载 作者:行者123 更新时间:2023-11-29 08:31:28 24 4
gpt4 key购买 nike

我最近一直在研究 Kafka Streams API,但在完全理解 KTables 方面遇到了一些困难。我想我理解了一般概念,但我在一些细节上遇到了困难。

在我的示例应用程序中,我获取一堆价格,然后使用 Kafka Streaming API 为压缩 Kafka 主题(主题-A>)。我有第二个服务,我想对这些平均价格更新使用react。因此,在第二个服务中,我在 Topic-A 上创建了一个 KTable,并且可以成功查询其存储。

我的目标是拥有第二个服务流程并对这些平均价格实时使用react,同时还可以按需获取每种产品的最新值(value)。我相信我可以使用 KTable 和 Store 来做到这一点。

最初,我相信:

  • KTable 由本地存储(RocksDB 实例)支持
  • 当 KTable 初始化时,它会消耗整个 Topic-A 来构建其 KTable

但是,KTable 似乎(或可以?)由 compacted change-log 支持。 。

  1. 这是否意味着在初始化时,KTable 只需要消耗每个键的最新记录?

  2. 如果我运行第二个服务的多个实例,KTable 是否共享更改日志?我想如果实例数量增加/减少,实例将需要更新其本地状态来考虑来自更多/更少分区的数据。

  3. 使用 GlobalKTable 能否为我提供每个实例中可用的所有 K/V 对?

最佳答案

  1. Does this mean that upon initialization, the KTable only needs to consume the latest record for each key?

是的。如果底层主题中的数据使得每个值都代表该键的完整最新值,则可以使用 cleanup.policy=compact 来配置该主题,并且 Kafka Streams 只需要读取最新值即可恢复KTable(这是一个RocksDB存储)。就数据建模而言,这是您想要/有意义用作 KTable 输入的唯一数据/主题。

  1. If I run multiple instances of my second service do the KTables share a change log?

是的,他们读取相同的变更日志主题,但他们根据您在 Kafka Streams 配置中提供的 state.dir 参数生成自己的 RocksDB 存储。

  1. Would using a GlobalKTable give me all the K/V pairs available in each instance?

是的,但是 GlobalKTables 的用途比常规 KTables 稍有限制。我相信新的 1.0.0 版本已经为 GlobalKTables 添加了功能,但它们仍然有一些限制。

关于java - KTables如何获得它们的初始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47769012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com