asp.net – Hangfire如何为Web场工作?

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

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

例:

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

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

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

如果有人在网络农场有任何Hangfire的实践经验,我会全力以赴.

最佳答案 这些是我在经过更多研究和测试后建立的基本规则:

> Hangfire将在第一台Hangfire服务器上执行后台作业,该服务器具有基于该服务器上的工作线程数的可用容量
> Hangfire将继续在该服务器上执行后台作业,直到工作池达到饱和状态,此时它将移动到服务器场中的下一个可用服务器,依此类推
>如果Hangfire服务器使用相同的Hangfire存储实例,它们将自动包含在Web场中,因此通常不需要额外的配置.
>如果要在特定服务器上运行特定后台作业或使用不同的工作负载分配算法,则可以使用命名队列,其中为队列指定名称并可能将其分配给特定服务器实例,并且必须安排后台作业运行在那个队列也是.

点赞