2016-10-06 3 views
3

웹 팜에서 각 ASP.NET 응용 프로그램이 동일하게 구성되어 있고 Hangfire 저장소에 대해 동일한 공유 SQL Server 데이터베이스를 사용하는 N 개의 인스턴스가있는 경우 Hangfire가 어떻게 작동하는지 정확히 이해하려고합니다.웹 팜에서 Hangfire는 어떻게 작동합니까?

설명서에는 분산 잠금이 경쟁 조건을 방지하는 데 사용되는 것으로 나와 있지만 약간 낮은 수준이므로 실제로이 의미가 무엇인지 이해해야합니다.

예 :

내가 5 개 웹 서버 인스턴스를 가지고 있고, 나는이 첫 번째 인스턴스에 '잠금'을 얻을 수 있음을 의미 하는가, 한 번에 오후 5 하루 실행 일정과 백그라운드 작업을 작성하는 경우 작업이 실행되면 종료되고 다른 모든 인스턴스는 잠긴 상태에서 작업을 무시합니다.

저는 Hangfire가 한 번에 하나의 인스턴스 만 작업을 처리 할 수 ​​있다고 가정하고 있지만 아직 확인하지 않았습니다.

실제로 각 서버 인스턴스에서 동시에 작업을 실행하려면 어떻게해야합니까?

웹 팜에서 Hangfire에 대한 실무 경험이있는 사람은 누구나 다.

답변

1

이 난 후 설립 한 기본적인 규칙은 더 많은 연구 및 테스트 :

  • Hangfire는 작업자 스레드의 수에 따라 사용 가능한 용량이 첫 번째 Hangfire 서버에서 백그라운드 작업을 실행합니다 해당 서버

  • 작업자 풀이하는이 농장에서 사용 가능한 다음 서버로 이동, 등등 것입니다 포인트, 포화 될 때까지 Hangfire 해당 서버에서 백그라운드 작업을 실행하는 것입니다

  • Hangfire 서버는 동일한 Hangfire 스토리지 인스턴스를 사용하는 경우 웹 팜에 자동으로 포함되므로 일반적으로 추가 구성이 필요하지 않습니다.

  • 특정 서버에서 특정 백그라운드 작업을 실행하거나 다른 작업 부하 분산 알고리즘을 사용하려는 경우 이름이 지정된 대기열을 사용할 수 있습니다. 대기열에는 특정 서버 인스턴스에 이름이 지정되고 잠재적으로 할당됩니다. 이 대기열에서 실행되도록 예약되었습니다.

관련 문제