获取有关 infinispan 异步复制错误的反馈

Get feedback on infinispan asynchronous replication errors

我们有一个 infinispan 设置,在这个设置中我们将一些缓存同步复制到集群中的其他节点。当其他节点之一崩溃或超时时,这有时会导致 putInCache 调用出现问题。

缓存更改确实到达其他节点对我们来说很重要,但如果缓存未到达另一个节点就会发生故障并不重要。

我们不能使用 putAsync,因为缓存 put 的顺序很重要。

理想的情况是使用异步复制,但有关于哪个节点收到缓存操作的反馈,以便我们可以采取行动(例如,刷新故障节点上的缓存)。

有什么方法可以实现吗?

这在 Infinispan 中是不可能的,当密钥被锁定时没有确认,并且在没有先应用它的情况下发出另一个写入是安全的。您可以尝试使用 putIfAbsentAsync/replaceAsync 或 8.0.

中包含的新 functional API 来保留较新的值

异步复制(DIST_ASYNC、REPL_ASYNC)也不符合要求:原始节点没有收到来自其他节点的任何确认,因此无法知道何时写真的完成了。更重要的是,你通过异步复制获得的顺序是不可靠的:来自不同节点的写入没有排序,甚至当键的 "primary owner" 更改时,来自同一节点的写入也可以重新排序。