ZeroMQ主从双向通信

时间:2016-08-16 15:26:18

标签: zeromq

我想创建一个网络架构,其中主进程与一些从进程连接并以这种方式交换消息:

schema

每个奴隶都应该能够向主人发送信息。主设备应该能够向连接的从设备的每个子集发送消息。

  • Master向Slave 1发送消息
  • Master向Slave 2和Slave 3发送消息
  • Master向所有Slaves发送消息
  • Slave 1向Master发送消息

这些消息可能有答案,但如果没有专门的方法使用ZeroMQ,这可以在更高级别处理。

这应该仅使用一个端口。

使用普通套接字,我可以在端口上进行主绑定,接受连接,为每个从设备生成一个线程来处理传入数据,并使用单个连接来联系单个从设备。

由于这种架构将使用基于消息的通信,我认为ZeroMQ是实现它的正确工具,但浏览文档我找不到办法。

我要在python中写这个,但问题应该是语言无关。

1 个答案:

答案 0 :(得分:4)

只使用一个端口我认为最好使用经销商/路由器:

  • Master将是Dealer套接字
  • Slave将是{{1}}套接字
  • 当奴隶开始发送“我在这里的消息”时。应该在已知从属列表中存储身份(收到的第一帧)的主人。

然后,主设备通过将身份和空帧添加到消息中来发送给从设备。 (您只能使用路由器套接字一次发送到一个客户端,但是要编写一个函数来接收消息和一个从属身份列表并依次发送给每个客户端。)

奴隶的身份可以由您设置,使用经销商套接字上的setsockopt调用,或者如果您不这样做,ZeroMQ将自动分配唯一的。