Мы разрабатываем веб-API с использованием .Net Core. Для выполнения фоновых задач мы использовали Hosted Services.
Система размещена в среде AWS Beantalk с балансировщиком нагрузки. Таким образом, в зависимости от нагрузки Beanstalk создает/удаляет новые экземпляры системы.
Наша проблема заключается в том, что, поскольку фоновые службы также работают внутри API, когда балансировщик нагрузки увеличивает количество экземпляров, количество фоновых служб также увеличивается, и есть возможность выполнять одну и ту же задачу несколько раз. В идеале должен быть только один экземпляр фоновых служб.
Один из способов решить эту проблему — прекратить выполнение фоновых служб в среде с балансировкой нагрузки и создать выделенную среду с одним экземпляром без балансировки нагрузки только для фоновых служб.
Это немного уродливое решение. Так,
1) Есть ли лучшее решение для этого?
2) Есть ли способ определить основной экземпляр в среде с балансировкой нагрузки? Если это так, я могу условно зарегистрировать Hosted services.
Любая помощь очень ценится.
Спасибо