2016-10-06 24 views
3

我試圖準確理解如果在Web場中使用Hangfire的行爲,每個ASP.NET應用程序的配置都相同,並且有N個實例使用相同的共享SQL Server數據庫作爲Hangfire存儲。Hangfire如何在Web場中工作?

該文件只是說分佈式鎖用於防止競爭條件,但這有點低級,我需要明白這在實踐中意味着什麼。

例子:

如果我有5個Web服務器實例,我創建將運行一次,下午5點,每天的日程後臺作業,這是否意味着第一個實例,來獲取「鎖定」作業最終會運行它,並且所有其他實例在鎖定時都會忽略該作業?

我假設Hangfire一次只允許一個實例處理一個工作,但我還沒有確認。

如果我真的想在同一時間在每個服務器實例上運行作業呢?

如果任何人在網絡農場中使用Hangfire有任何實際經驗,那麼我都是耳朵。

回答

1

這些之後,我已經建立了基本規則,更多的研究和測試:

  • 遲髮型將執行具有基於工作線程的數量可用容量第一遲髮型服務器上的後臺作業該服務器

  • 遲髮型將繼續在該服務器上執行的後臺作業,直到工作池飽和,此時它會移動到羣中的下一個可用的服務器,等等

  • 如果Hangfire服務器使用相同的Hangfire存儲實例,則它們會自動包含在Web場中,因此一般而言,不需要額外的配置。

  • 如果要在特定服務器上運行特定後臺作業或使用不同的工作負載分配算法,則可以使用命名隊列,其中隊列被命名並且可能分配給特定服務器實例,並且後臺作業必須是計劃在該隊列上運行。