Возможно ли использование нескольких экземпляров сервиса Hangfire (общие задачи / объекты)? - PullRequest
1 голос
/ 07 мая 2020
• 1000 несколько экземпляров для разных задач в одной базе данных или что-то подобное. если это решение для повышения отказоустойчивости службы.
Цель состоит в том, чтобы иметь экземпляр, который позаботится обо всех заданиях, когда другой экземпляр выходит из строя.

Приветствуются любые предложения по этому сценарию.

1 Ответ

1 голос
/ 13 мая 2020

В нашей среде у нас есть набор реплик, который используется примерно 10 серверами Hangfire. Если несколько серверов Hangfire обслуживают одну и ту же очередь, это означает, что они будут разделять нагрузку, и какой бы сервер Hangfire первым проверил очередь, заберет задание и продолжит. Если вы удалите все серверы, кроме 1, задания будут продолжаться (до тех пор, пока будет достаточно рабочих, в противном случае они останутся в очереди, пока не появится рабочий).

Чтобы ответить на ваш вопрос, да, вы можете иметь 2 или больше серверов Hangfire, использующих тот же MongoDB. MongoDB обеспечивает поддержку многопоточности, поэтому можно безопасно иметь доступ к одной и той же базе данных с разных серверов. Если у вас есть два сервера, оба будут активны, и если один экземпляр перейдет в автономный режим, другой экземпляр (на основе очередей) продолжит обрабатывать задания в очереди.

Имейте в виду, серверы Hangfire обрабатывают задания в Specifi c Очереди. Если оба сервера входят в одну очередь, вы выполняете балансировку нагрузки между двумя серверами. Если они входят в разные очереди, то вы читали о сценарии, в котором каждый экземпляр Hangfire обрабатывает разные задания (потому что они являются частью разных очередей).

Подробнее о настройке очередей заданий читайте здесь

...