您询问有关跨JVM同步方法的问题。这就需要一个处理分布式进程的库。有很多选择,这里只是几个:
- Terracotta-支持将某些字段配置为在JVM之间“共享”,因此您可以使用标准的JVM锁定,例如synced关键字,它可以在多个JVM上使用。
- JGroups -Jgroups是用于分布式应用程序的工具包。锁定是它提供的功能之一。这是他们文档中的一个例子
无论使用哪种库,设置分布式锁定都不是一件容易的事。如果需要的话,很好,但是对于您的示例,这似乎有点过头了。其他选项:
- 在数据库中添加唯一性约束,让其强制执行唯一性。这可能会对数据库的性能产生影响,因此它实际上取决于您希望获得多少流量。
- 让负载均衡器使用用户名(或用户名的哈希)作为用于将请求分配给Web服务器的密钥。这将确保来自同一用户名的请求每次都将到达同一Web服务器-不需要分布式锁,只需使用常规锁即可。



