Запуск 10000 рабочих для выполнения конкретных задач против использования нескольких рабочих - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть система, в которой у меня есть 1000 продуктов, которые создаются асинхронно, помещая их в очередь на одном конце и рабочие, прослушивающие очередь на другом конце.Продукты создаются по вызову микросервисов третьих поставщиков услуг.

Ниже приведены два подхода к реализации:

Первый подход
В этом подходе мы помещаем каждый продукт в отдельную отдельную очередь, то есть продукт А будет идтив очередь A, а продукт B перейдет в очередь B. Если я использую 10 рабочих для прослушивания каждой очереди, значит, в моей системе работает 10 000 рабочих.

Этот подход гарантирует, что все мои продукты работаютв отдельности, то есть производительность API сторонних производителей одного продукта не влияет на другой продукт (так как они выполняются в разных очередях разными работниками), но многие незанятые работники, сидящие здесь, увеличат нагрузку на сервер (так как все продукты не создаются в больших масштабах).

Второй подход
В этом подходе я попытался сократить количество рабочих, используя одну очередь и запустив n рабочих (n <= 1,5 * number_of_cores), слушающих одну и ту же очередь,Здесь мы сократили количество работников, что определенно снизит нагрузку на каждый сервер из-за простоя, но здесь, если какие-либо провайдеры API начнут медленно реагировать, это повлияет на всю систему. <br>

ПожалуйстаПредложите, какой подход я должен использовать, или любой другой подход, который может подойти этому сценарию.Спасибо

...