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".
支持
拓扑中的两个并行处理器能否在同一个全局存储上执行 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".
支持