Понимание шаблона MajorDomo от NetMQ ZeroMQ

Я пытаюсь понять, как лучше всего реализовать пример MDP на С# для использования в службе Windows в среде с несколькими клиентами и одним сервером.

Я прочитал документы, но мне все еще неясно следующее:

  • Должны ли все экземпляры Worker создаваться при запуске и оставляться для запуска?
  • Должны ли все работники быть разными типами служб или просто разными экземплярами одной и той же службы?
  • Могу ли я иметь одну службу Windows, если она содержит брокера и рабочих, или лучше разделить их на отдельные службы?

В качестве примера кода я использую шаблон MajorDomo, взятый отсюда https://github.com/NetMQ/Samples


person RedSix    schedule 07.04.2019    source источник


Ответы (1)


  1. Да, все воркеры в среде MDP должны создаваться независимо от запросов, так как брокер не должен знать, как их создавать
  2. Each worker handles a given "service" (contract). Obviously each contract should have at least one worker.
    • If you need parallelized handling of requests, and a given worker can only do one at a time, having extra workers for that service could make sense. Generally you would do this if multiple machines were involved however (horizontal scaling)
  3. Вы можете иметь брокера и рабочих в одном и том же процессе. ОДНАКО, если вы хотите обновить только воркера, одновременное отключение брокера может раздражать клиентов. Я бы порекомендовал позволить брокеру быть отдельным процессом, а рабочие процессы — в одном или нескольких других процессах.
person BradleyDotNET    schedule 30.04.2019
comment
Привет @Брэдли. У меня есть два приложения .net core 2.1, одно из которых содержит брокера, а другое приложение содержит набор рабочих, занимающихся различными услугами. - person Kamran Shahid; 09.06.2019