2015-06-23 5 views
3

Я использую zmq для разработки распределенного приложения, имеющего следующую сетевую топологию: клиентский узел, который инициирует запрос и узел сервера, который отвечает на запросы. Поскольку клиент является приложением node.js, я не могу заблокировать после вызова отправки, чтобы ждать ответа, поэтому сценарий заключается в том, что клиент может испускать несколько вызовов отправки на ту же конечную точку. С другой стороны, сервер представляет собой мобильное приложение, которое обрабатывает один запрос времени в одном потоке, блокируя, если нет запросов. Если эта конфигурация звучит странно, я пытаюсь создать своего рода RPC, инициированный сервером на мобильный.Шаблон ZeroMQ для множественных асинхронных запросов к одной конечной точке

Я думал использовать клиентскую сторону разъема DEALER и серверную часть сокета REP. Из руководства zmq о комбинации DEALER/REP:

Это дает нам асинхронный клиент, который может разговаривать с несколькими серверами REP. Если мы перепишем клиент Hello World с помощью DEALER, мы сможем отправить любое количество запросов «Hello», не дожидаясь ответов.

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

ответ

2

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

  1. REQ/REP не рекомендуется для трафика, проходящего через Интернет. Сокет может потенциально застрять в плохом состоянии.
  2. DEALER/REP для дилерского клиента, разговаривающего с несколько REP сервера. Так что это не относится к вашему случаю использования.

Если нет, какой шаблон использовать?

В вашем случае мне кажется, что использование традиционного DEALER/ROUTER - это путь. То, что я обычно делаю, - это добавить мои сообщения с помощью фрейма тега, то есть кадра, который содержит UUID, который позволяет мне идентифицировать мой запрос (и их ответ) на уровне приложения.

Смежные вопросы