首页 > 解决方案 > 跨进程(和机器)同步(信号量)

问题描述

背景:

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

我可以确保调用第三方服务的唯一方法是通过我的 WCF 应用程序。所以我正在考虑在我的代码中进行并发检查。

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

问题:

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

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

是否有标准的“最佳实践”类型的方法来为服务的负载平衡实例进行同步?

我曾考虑使用数据库表(SQL Server)来尝试管理它,但从架构的角度来看,将我的持久层用于此目的似乎是错误的。我希望有另一种解决方案。

概括:

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

标签: c#.netwcfsynchronizationsemaphore

解决方案


Use a Distributed lock manager to lock resource modification based on the identifier you created.

Some of DLM's you can use are:


推荐阅读