hac*_*sid 4 .net locking distributed-lock
我正在寻找适用于多台机器的锁定机制的建议。就我而言,我基本上只希望能够在2台计算机上启动服务,并阻塞一个直到另一个完成,这是确保在服务计算机出现故障时确保冗余的一种简单方法。
类似于分布式锁服务,但专门寻找人们已成功与.NET集成的项目。
我们使用SqlServer的应用程序锁定功能进行分布式锁定。如果SqlServer已经是堆栈的一部分,则这特别方便。
为了使它在.NET中更易于使用,我创建了一个NuGet软件包,该软件包使使用此功能变得容易。
使用此库,代码如下所示:
var @lock = new SqlDistributedLock("my_lock_name", connectionString);
using (@lock.Acquire())
{
// critical region
}
Run Code Online (Sandbox Code Playgroud)
因为底层的SqlServer功能非常灵活,所以也有支持TryAcquire语义,超时和异步锁定的重载。
小智 3
如果您使用 AppFabric for Windows Server,则可以使用此 DataCache 扩展。您还可以通过ServiceStack 的 redis 客户端使用 redis 锁。
两者都是 .NET 实现,但需要服务器组件。我一直在修改分布式锁的 PeerChannel 实现,它使用点对点通信并且不需要任何服务器基础设施。如果您对此感兴趣,请告诉我。
| 归档时间: |
|
| 查看次数: |
5518 次 |
| 最近记录: |