Kafka Streams:GlobalStore线程安全吗?

时间:2018-06-09 20:15:43

标签: apache-kafka apache-kafka-streams

拓扑中的两个并行处理器可以在同一个全局存储上执行put / get吗?例如,在如下所示的示例拓扑中,一个处理器使用(KeyValueIterator)遍历商店,而另一个处理器正在进行放置/删除?

拓扑结构:

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)

1 个答案:

答案 0 :(得分:1)

全球商店是线程安全的。但是,只有“全局处理器”应该写商店。所有其他线程,只应该读取商店。

请注意,全局商店返回“全局商店输入主题”。如果您从其他线程执行put,那些put只会在本地存储中完成。因此,如果您运行多个实例,则另一个实例将不会看到更改。此外,如果发生错误并且需要重新创建存储,则来自另一个线程的puts将丢失,因为它们不受“全局存储输入主题”的支持。