Двунаправленный REQ / REP на одном порту с ZeroMQ - PullRequest
0 голосов
/ 23 мая 2019

Я борюсь со следующей проблемой:

Я хотел бы делать двунаправленные асинхронные запросы / ответы между N клиентами и 1 сервером с ZeroMQ.

Это означает, что любой клиент может сделать запрос к серверу, и сервер должен ответить клиенту.

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

Я думаю, что должен использовать роутеры / дилеров, но я не уверен, что они нужны мне обоими способами.

Кроме того, есть ли способ получить всю эту парадигму, используя только один порт на стороне сервера и на каждой стороне клиента?

* +1012 *enter image description here

1 Ответ

0 голосов
/ 04 июля 2019

В: есть ли способ сделать это, используя только один порт на стороне сервера / клиента?

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

Использование только одного порта означает возможность предоставить для общего доступа один и только один масштабируемый шаблон формальной связи ZeroMQ Archetype AccessPoint и (за исключением очень специфического PAIR/PAIR Archetype распределенного поведения) всегда существует какое-то жестко распределенное поведение взаимосвязанных агентов: AccessPoint -s.

Это означает, что использование одного порта дает только один и только один вид такого распределенногоПоведение, а не смесь их.

Это также отвечает вашей первой части.Если архетип распределенного поведения REQ/REP использовался в направлении от клиентских узлов к серверу, а другой архетип распределенного поведения REQ/REP должен был использоваться в противоположном направлении от сервера к клиентским узлам, эти (направленные) сервисы не могут сосуществовать в одном и том же address:port.

Вам также могут понравиться посты здесь, в StackOverflow, о взаимных тупиках, которых невозможно избежать, в которые попадут распределенные REQ/REQ FSA.

Иерархия ZeroMQ объяснено менее чем за пять секунд

НЕВОЗМОЖНО DEADLOCKS

...