针对单个端点的多个异步请求的ZeroMQ模式



我正在使用zmq开发一个具有以下网络拓扑的分布式应用程序:一个启动请求的客户端节点和一个回复请求的服务器节点。由于客户端是node.js应用程序,我无法在发送调用后阻止它来等待响应,因此场景是客户端可以向同一个端点发出多个发送调用。另一方面,服务器是一个移动应用程序,它在一个线程中一次处理一个请求,如果没有任何请求,就会进行阻塞。如果这个配置听起来很奇怪,我将尝试构建一种由服务器向移动发起的RPC。

我想使用DEALER套接字客户端和REP套接字服务器端。来自zmq关于DEALER/REP组合的指南:

这为我们提供了一个异步客户端,它可以与多个REP服务器进行通信。如果我们使用DEALER重写"Hello World"客户端,我们就可以发送任意数量的"Hello"请求,而无需等待回复。

它可以应用于可以与单个服务器对话的异步客户端吗?这会是一个好的选择吗?如果没有,我应该使用哪种模式?

它可以应用于可以与单个服务器对话的异步客户端吗?这会是一个好的选择吗?

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

如果没有,我应该使用哪种模式?

在你的情况下,在我看来,使用传统的经销商/路由器是可行的。我通常做的是用一个"标记框架"来准备消息,即一个包含某种UUID的框架,它允许我在应用程序级别识别我的请求(和他们的回复)。

最新更新