我们使用InfinisPAN4.0作为缓存提供程序(我知道它有点过时,因为版本9是最新版本)。话虽如此,在阅读文档时,我感到有点困惑,因为这些文档指出:
Infinispan默认情况下是懒洋洋地获取远程锁。在运行事务的节点上本地获取锁,而其他集群节点试图在两阶段准备/提交阶段锁定事务中涉及的缓存密钥。但是,如果需要,Infinispan可以显式或隐式地锁定缓存密钥。
英飞凌的默认行为是什么?据我所知,它只锁定本地节点,但确切地说它何时锁定集群?例如,如果您有如下操作:
Cache.put(K,V)当集群中的另一个节点尝试并发时,它是如何运行的?
Cache.put(K,V)行动?这种远程延迟锁定是如何工作的?
发布于 2016-12-07 09:37:57
这是关于交易的评论。使用事务,远程锁可以在cache.put(k, v) (急切)或tm.commit() (懒惰)期间获得。没有交易,两者就没有区别。
请注意,4.x中的锁定非常容易出现死锁。一个节点将获取本地锁,然后尝试获取所有其他所有者的锁,如果另一个节点试图同时写入相同的密钥,则很有可能出现死锁。
https://stackoverflow.com/questions/40974440
复制相似问题