Kafka Streams:GlobalStore 是线程安全的吗?

Kafka Streams: Is GlobalStore threadsafe?

拓扑中的两个并行处理器能否在同一个全局存储上执行 put/get?例如,在下面的示例拓扑中,一个处理器正在使用 (KeyValueIterator) 遍历存储,而另一个处理器正在生成 put/delete?

拓扑:

Source: source (topic: [input topic with 6 partitions])
    --> processor1
    --> processor2

Processor: processor1
    <-- source

Processor: processor2
    <-- source      

Global Stores:
  GlobalStore: globalstoresource (topic: [input topic with 1 partition])
      --> loadglobalstore (store: myglobalstore)

全局存储是线程安全的。但是,只有 "global processor" 应该写入存储。所有其他线程,应该只读取存储。

请注意,全球商店已恢复 "global store input topic"。如果您从不同的线程执行 put,则这些 put 只会在本地存储中完成。因此,如果您 运行 多个实例,则其他实例将看不到更改。此外,如果发生错误并且需要重新创建存储,则来自其他线程的 puts 将丢失,因为它们不受 "global store input topic".

支持