Infinispan 远程延迟锁定

Infinispan remote lazy locking

我们使用 Infinispan 4.0 作为我们的缓存提供程序(我知道它有点古董,因为版本 9 是最新的)。话虽如此,我在阅读说明的文档时有点困惑:

Infinispan, by default, acquires remote locks lazily. Locks are acquired locally on a node that runs a transaction while other cluster nodes attempt to lock cache keys involved in a transaction during two-phase prepare/commit phase. However, if desired, Infinispan can eagerly lock cache keys either explicitly or implicitly.

Infinispan 的默认行为是什么?我知道它只锁定在本地节点上,但究竟什么时候锁定在集群上?例如,如果您有这样的操作:

Cache.put(K,V)

当集群中的另一个节点尝试并发时它的行为如何

Cache.put(K,V)

操作?这个远程延迟锁定是如何工作的?

该评论是关于交易的。对于事务,可以在 cache.put(k, v)(急切)或 tm.commit()(惰性)期间获取远程锁。没有事务,两者没有区别。

请注意 4.x 中的锁定很容易出现死锁。一个节点将获取本地锁,然后它会尝试获取所有其他所有者的锁,如果另一个节点试图同时写入同一个键,则死锁的可能性很高。