Понимание паттерна MajorDomo от NetMQ ZeroMQ - PullRequest
2 голосов
/ 08 апреля 2019

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

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

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

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

1 Ответ

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