如何在集群环境中处理同步块

Abh*_*ena 4 java

我所说的集群环境是指在多台服务器计算机上运行相同的代码。我能想到的场景如下

多个请求同时来自不同线程,根据到期时间来更新卡详细信息。下面是一段代码

synchronized(card) { //card object
if(card.isExpired())
updateCard()
}
Run Code Online (Sandbox Code Playgroud)

我的理解是同步块在jvm级别工作,那么在多服务器环境中它是如何实现的。

请建议编辑以改写问题。我问我能从别人问我的问题中回忆起什么。

zde*_*ine 5

正如您所说,同步块仅适用于“本地 JVM”线程。当涉及集群时,由您决定如何驱动分布式事务。

这实际上取决于您的对象(例如卡)的存储位置。

  • 数据库 - 您可能需要使用一些锁定策略。很可能是乐观锁定存储实体的版本并在每次更改时检查它。或者更“安全”的悲观锁定,在进行更改时锁定整行。
  • 内存 - 您可能需要一些内存网格解决方案(例如 Hazelcast...)并利用其事务支持或自己实现它
  • 任何其他?您将指定...