2016-10-06 21 views
3

我试图准确理解如果在Web场中使用Hangfire的行为,每个ASP.NET应用程序的配置都相同,并且有N个实例使用相同的共享SQL Server数据库作为Hangfire存储。Hangfire如何在Web场中工作?

该文件只是说分布式锁用于防止竞争条件,但这有点低级,我需要明白这在实践中意味着什么。

例子:

如果我有5个Web服务器实例,我创建将运行一次,下午5点,每天的日程后台作业,这是否意味着第一个实例,来获取“锁定”作业最终会运行它,并且所有其他实例在锁定时都会忽略该作业?

我假设Hangfire一次只允许一个实例处理一个工作,但我还没有确认。

如果我真的想在同一时间在每个服务器实例上运行作业呢?

如果任何人在网络农场中使用Hangfire有任何实际经验,那么我都是耳朵。

回答

1

这些之后,我已经建立了基本规则,更多的研究和测试:

  • 迟发型将执行具有基于工作线程的数量可用容量第一迟发型服务器上的后台作业该服务器

  • 迟发型将继续在该服务器上执行的后台作业,直到工作池饱和,此时它会移动到群中的下一个可用的服务器,等等

  • 如果Hangfire服务器使用相同的Hangfire存储实例,则它们会自动包含在Web场中,因此一般而言,不需要额外的配置。

  • 如果要在特定服务器上运行特定后台作业或使用不同的工作负载分配算法,则可以使用命名队列,其中队列被命名并且可能分配给特定服务器实例,并且后台作业必须是计划在该队列上运行。