2015-06-23 18 views
3

我正在使用zmq开发具有以下网络拓扑的分布式应用程序:发起请求的客户端节点和回复请求的服务器节点。由于客户端是一个node.js应用程序,我无法在发送调用之后阻止等待响应,因此情况是客户端可能会向同一端点发出多个发送调用。另一方面,服务器是一个移动应用程序,它在一个线程中一次处理一个请求,如果没有任何请求则会阻止该请求。 如果这种配置听起来很奇怪,我试图建立一种由服务器发起的RPC到移动。用于向单个端点发出多个异步请求的ZeroMQ模式

我以为使用DEALER套接字客户端和REP套接字服务器端。从zmq指南中了解DEALER/REP组合:

这给了我们一个可以与多个REP服务器交谈的异步客户端。如果我们使用DEALER重写了“Hello World”客户端,我们将能够发送任意数量的“Hello”请求而无需等待回复。

它可以应用于可以与单个服务器交谈的异步客户端吗?这可能是一个不错的选择吗?如果不是我应该使用哪种模式?

回答

2

它可以应用于可以与单个服务器交谈的异步客户端吗?这可能是一个不错的选择吗?

  1. REQ/REP不建议通过互联网的流量。套接字可能会陷入不良状态。
  2. DEALER/REP是经销商客户与多个 REP服务器交谈。所以这不适用于你的用例。

如果不是我应该使用哪种模式?

就你而言,在我看来,使用传统的经销商/路由器是最好的选择。我通常所做的是通过“标签框架”来预先填写我的消息,即一个包含某种UUID的框架,它允许我在应用程序级别识别我的请求(及其回复)。