拓扑中的两个并行处理器可以在同一个全局存储上执行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)
答案 0 :(得分:1)
全球商店是线程安全的。但是,只有“全局处理器”应该写商店。所有其他线程,只应该读取商店。
请注意,全局商店返回“全局商店输入主题”。如果您从其他线程执行put,那些put只会在本地存储中完成。因此,如果您运行多个实例,则另一个实例将不会看到更改。此外,如果发生错误并且需要重新创建存储,则来自另一个线程的puts将丢失,因为它们不受“全局存储输入主题”的支持。