gpt4 book ai didi

java - 分布式并发控制

转载 作者:IT老高 更新时间:2023-10-28 20:27:22 31 4
gpt4 key购买 nike

我已经为此工作了几天,找到了几种解决方案,但没有一个非常简单或轻量级。问题基本上是这样的:我们有一个由 10 台机器组成的集群,每台机器都在多线程 ESB 平台上运行相同的软件。我可以相当容易地处理同一台机器上的线程之间的并发问题,但是不同机器上相同数据的并发呢?

本质上,该软件接收请求以通过 Web 服务将客户数据从一个企业提供给另一个企业。但是,客户可能存在也可能不存在于其他系统上。如果没有,我们通过 Web 服务方法创建它。所以它需要一种测试和设置,但我需要某种信号量来阻止其他机器引起竞争条件。之前我遇到过为一个本地客户创建两次远程客户的情况,这并不理想。

我在概念上尝试过的解决方案是:

  1. 使用我们的容错共享文件系统创建“锁定”文件,每台机器都将根据客户进行检查

  2. 在我们的数据库中使用一个特殊的表,并锁定整个表以便对锁定记录进行“测试和设置”。

  3. 使用 Terracotta,一种有助于扩展的开源服务器软件,但使用的是中心辐射模型。

  4. 使用 EHCache 同步复制我的内存中“锁”。

我无法想象我是唯一遇到过这种问题的人。你是怎么解决的?您是自己做的,还是有最喜欢的第 3 方产品?

最佳答案

您可能需要考虑使用 Hazelcast分布式锁。 super 精简和简单。

java.util.concurrent.locks.Lock lock = Hazelcast.getLock ("mymonitor");
lock.lock ();
try {
// do your stuff
}finally {
lock.unlock();
}

Hazelcast - 分布式队列、映射、集合、列表、锁

关于java - 分布式并发控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/92452/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com