我们需要管理任务的并发操作。简而言之,任何时候都只能运行此任务的一个版本。
问题是我们将在多服务器环境中运行。
要求:
环境:
到目前为止我考虑过的事情:
我认为这是一个相当普遍的问题,我很想知道社区如何解决这个问题。
我对听取有关CIFS锁定解决方案的想法或是否可以使用MSMQ特别感兴趣?
答案 0 :(得分:1)
如果您可以使用Windows Azure存储,则可以使用Windows Azure Blob以超时的方式获取该Blob上的租约(您可以使用的最大值为1分钟)。获取租约的服务器可以运行任务,并且可以在租约到期之前继续续订。
如果领导者流程死亡,其他服务器将继续尝试并获得租约。
您轮询的频率取决于其他流程立即恢复的重要程度,但可能会导致一些额外的成本(如果过于频繁并且根据您有多少服务器轮询竞争该租约,可能不会有多余的成本)。