Asp.net Hangfire如何为web场工作?
我试图确切地了解如果在web场中使用Hangfire,它将如何运行,其中每个ASP.NET应用程序的配置都是相同的,并且有N个实例使用相同的共享SQL Server数据库进行Hangfire存储 文档只是说分布式锁用于防止竞争条件,但这有点低级,我需要理解这在实践中意味着什么 例如: 如果我有5个web服务器实例,并且我创建了一个后台作业,其时间表将在每天下午5点运行一次,这是否意味着第一个获得作业“锁定”的实例将运行该作业,而所有其他实例将在该作业锁定时忽略该作业 我假设Hangfire一次只允许一个实例处理一个作业,但我还没有确认 如果我真的想同时在每个服务器实例上运行一个作业呢Asp.net Hangfire如何为web场工作?,asp.net,hangfire,Asp.net,Hangfire,我试图确切地了解如果在web场中使用Hangfire,它将如何运行,其中每个ASP.NET应用程序的配置都是相同的,并且有N个实例使用相同的共享SQL Server数据库进行Hangfire存储 文档只是说分布式锁用于防止竞争条件,但这有点低级,我需要理解这在实践中意味着什么 例如: 如果我有5个web服务器实例,并且我创建了一个后台作业,其时间表将在每天下午5点运行一次,这是否意味着第一个获得作业“锁定”的实例将运行该作业,而所有其他实例将在该作业锁定时忽略该作业 我假设Hangfire一次只
如果有人在网络农场有任何关于Hangfire的实际经验,我洗耳恭听。这些是我经过更多研究和测试后制定的基本规则:
- Hangfire将在第一台具有可用容量的Hangfire服务器上根据该服务器上的工作线程数执行后台作业
- Hangfire将继续在该服务器上执行后台作业,直到工作池饱和,此时它将移动到服务器场中的下一个可用服务器,以此类推
- 如果Hangfire服务器使用同一个Hangfire存储实例,则它们会自动包含在web场中,因此通常不需要额外的配置
- 如果要在特定服务器上运行特定的后台作业或使用不同的工作负载分配算法,可以使用命名队列,在命名队列中,队列具有名称并可能分配给特定的服务器实例,并且后台作业也必须安排在该队列上运行