什么是正确的ZMQ模式?

时间:2014-08-20 13:08:56

标签: design-patterns architecture zeromq

我想实现一个系统:

  • 有一台服务器
  • 有很多客户
  • 客户端向服务器发送请求。

显然,REQ / REP模式是正确的使用模式。但是:

  • 我希望客户能够发送多个请求,而无需等待响应。
  • 我希望服务器并行处理多个请求。

据我所知,正确的模式是DEALER / ROUTER,这是正确的吗?或者有更好的方法吗?

客户端应该能够发送许多请求,并且应该异步接收相应的响应。

提前致谢

2 个答案:

答案 0 :(得分:2)

是的,客户端将是DEALER套接字,服务器将是ROUTER套接字,它应该按照您的需要运行。只要您只有一台服务器,这将正常工作。如果您添加更多服务器,DEALER套接字将以循环方式向每个服务器发送请求,这可能是也可能不是您所追求的。如果它们连接到多个服务器,它们将不允许您选择特定服务器。只要你记住这一点,还有其他策略可以解决这个问题,但现在你不用担心它。

答案 1 :(得分:1)

ZMQ是一个用于乐高风格附加工作的强大库

ZMQ-Formal Communication Patters是开始构建的基本原语。只是忘记在现实问题上重复使用REQ / REP或任何其他ZMQ原语。

想象一下由几个原型中的几个原型组成的消息传递系统:

CLIENT为其他消息设置了面向SERVER的消息接口+ .bind() -s另一个

SERVER在中央位置获取CLIENT请求(同时作为着色进程执行)

SERVER使用VENTILATOR / QUEUE / pool-of-Workers派遣 jobTask -s

SERVER告诉WORKER里面 jobTask 什么客户端与

沟通结果

WORKER {进入|发送 - 观察 - 退出|退出}一个工作池,带有“后端”状态信号

WORKER告诉SERVER {个人 jobTask {开始|完成}并且它自己的状态

WORKER添加了另一个ad-hoc PUB 传输链接的客户导向 .connect() 资源

WORKER告诉客户(有选择地) .connect() SUB 在哪里有选择地接收&异步

可用于实际架构的更多设计方面选项......