跨进程(和机器)同步(信号量)

时间:2018-08-24 19:47:55

标签: c# .net wcf synchronization semaphore

背景:

我的WCF应用程序必须调用其中没有任何并发​​检查的服务。这是由第三方创建的服务,可能无法让他们添加并发检查。

我可以确保调用第三方服务的唯一方法是通过WCF应用程序。因此,我正在考虑将并发检查放入我的代码中。

为此,我将使用一个唯一描述正在修改的数据的标识符。这个想法是,如果对服务的一个调用正在修改与标识符有关的数据,那么对该标识符的其他调用将需要等到完成为止。

问题:

我的WCF服务已达到负载平衡。我可以同时在不同的虚拟机上运行多达16个实例。

因此,大多数处理同步的.NET类都假定共享内存空间。

是否存在标准的“最佳实践”类型的方法来对负载均衡的服务实例进行同步?

我已经考虑过使用数据库表(SQL Server)来尝试管理此问题,但是从体系结构的角度来看,为此目的使用我的持久层似乎是错误的。我希望有其他解决方案。

摘要:

如何在计算机之间进行同步(锁,互斥量,信号量等)?(最好不使用数据库表进行管理。)

1 个答案:

答案 0 :(得分:1)

使用Distributed lock manager根据您创建的标识符锁定资源修改。

您可以使用一些DLM: