我们需要管理任务的并发操作。简而言之,任何时候只能运行此任务的一个版本。
问题是我们将在多服务器环境中运行。
要求:
- 允许方法的一次实例在任何时候运行。(操作系统互斥体)。
- 必须在多服务器环境中工作。
- 如果进程终止,则必须删除互斥锁。
- 必须是一个强大而成熟的解决方案。
环境:
- Windows 服务器(本地)
- 。网
- 天蓝色
到目前为止我考虑过的事情:
- 操作系统互斥锁:适用于本地,不确定它是否会在进程死亡时释放锁定。也不确定 Windows 是否支持强大的互斥锁。
- DB 标志:适用于本地,适用于多服务器。不会在进程死亡时解锁。
- AppFabric:虽然不需要额外的设置步骤,但可以在本地工作。多服务器工作。尽管可以将锁设置为在获取时超时,但不会在进程死亡时解锁。(迄今为止最好的)
- CIFS 文件锁:在前提下工作,在多服务器上工作,应该在进程死亡时解锁。尽管这可能是个人偏见,但未能通过稳健的测试。
我想这是一个相当普遍的问题,我很想听听社区通常如何解决它。
我特别想听听关于 CIFS 锁定解决方案的想法,或者是否可以使用 MSMQ?