确保使用异步Infinispan 6.x进行本地写入

时间:2014-09-11 09:00:27

标签: java redhat distributed infinispan nosql

我们计划在主/从模式下使用Infinispan 6.x,所有写入和读取都指向一个节点;其他节点仅用作使用异步复制的备份。

在ASYNC复制模式下,Infinispan的本地写入似乎也是异步的,即在同一节点上紧跟put(x)get(x)会导致get()返回null }。 (见this discussion。)

我们有一个用例,其中客户端强制put(x),然后在后续请求中强制get(x)。我们如何确保在第二个请求到达时,该条目位于本地数据容器(本地地图)中?出于性能原因,SYNC模式是不可能的。

1 个答案:

答案 0 :(得分:0)

您使用术语本地缓存有些不正确 - 本地是不会导致任何复制到其他节点的模式之一。您希望确保该条目位于数据容器(这是Infinispan保存条目的本地地图)。

无论如何,如果执行put()的节点与此键的主所有者节点不同,则无法执行此操作。有什么方法可以实现KeyAffinityService,但这些并不完全是防弹 - 在生成密钥和使用它之间,拓扑变化的可能性很小,所以你不能依赖它

即使在SYNC节点中,您也可以调用putAsync(),它将写入委托给另一个线程并返回未来。