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

#zeromq #netmq

#zeromq #netmq

Вопрос:

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

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

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

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

Ответ №1:

  1. Да, все рабочие элементы в среде MDP должны создаваться независимо от запросов, поскольку брокер не должен знать, как их создавать
  2. Каждый работник обрабатывает определенную «услугу» (контракт). Очевидно, что в каждом контракте должен быть хотя бы один работник.
    • Если вам нужна параллельная обработка запросов, и данный работник может выполнять только один за раз, может иметь смысл использовать дополнительных работников для этой службы. Как правило, вы бы сделали это, если бы было задействовано несколько машин (горизонтальное масштабирование)
  3. Вы можете использовать брокера и работников в одном процессе. ОДНАКО, если вы хотите обновить только worker, одновременное отключение брокера может раздражать клиентов. Я бы рекомендовал разрешить брокеру быть его собственным процессом с рабочими в одном или нескольких других процессах.

Комментарии:

1. Привет, @bradley. У меня есть два приложения .net Core 2.1, в которых одно содержит брокера, а другое приложение содержит набор работников, предоставляющих различные услуги.