反过来,ZeroMQ REQ / REP

时间:2013-11-26 15:46:31

标签: network-programming websocket zeromq

我有一个奇怪的szenario:

Webserver / Appserver(Java)向许多不同的卫星系统(在客户站点上)发送请求。由于防火墙规则,只有卫星系统才能启动连接。

我认为模型应该像REQ / REP,这里REQuester必须绑定,而REPlyer必须连接。

这是否可行且是一个稳定的架构?

有更好的解决方案吗? (我们首先考虑了WebSockets ......)

备注:我们不必在两端都使用Java。准确地说,在客户网站上我们有Delphi,但我们可能会以某种方式弥合它。

1 个答案:

答案 0 :(得分:2)

  

我认为该模型应该是REQ / REP之类的东西,但在这里   REQuester必须绑定,REPlyer必须连接。

这会有问题。当服务器启动连接时,它必须知道所有对等体及其绑定地址。对少数同行来说并不是什么大不了的事,但对于许多不断变化的同行而言,这是一团糟。

  

由于防火墙规则,只有卫星系统可以启动连接。

如果是这种情况,您的里程将因WebSockets而异;谷歌周围,有很多关于此的信息。

  

有更好的解决方案吗?

嗯,使用ZeroMq,我们想到一个支持客户端请求启动的解决方案是:

  • 服务器与ROUTER
  • 绑定
  • 客户与DEALER
  • 联系

此方法提供双向请求/回复,不阻止(异步),并消除问题中提到的客户端绑定问题。这里,服务器绑定,任何一方都可以发起对话。

我建议在指南中阅读此section,它涵盖扩展的异步请求/回复和消息包络,在使用ROUTER / DEALER套接字时非常重要。